chuangte_bike_newxcx/page_shanghu/guanli/yunying.vue

1039 lines
25 KiB
Vue
Raw Normal View History

2025-04-01 21:35:30 +08:00
<template>
<view class="page">
2025-12-20 14:29:10 +08:00
<u-navbar title="运营状况" :border-bottom="false" :background="bgc" title-color='#3D3D3D' back-icon-color="#3D3D3D"
title-size='36' height='45'></u-navbar>
2026-04-02 01:48:12 +08:00
<scroll-view class="page-scroll" refresher-enabled @refresherrefresh="onRefresh" :refresher-triggered="isRefreshing" refresher-default-style="black">
<view class="leiji">
2025-04-01 21:35:30 +08:00
<view class="li">
<view class="top">
2025-05-10 17:54:20 +08:00
{{qbobj.orderUserCount == null ? '0人' : qbobj.orderUserCount + '人'}}
2025-04-01 21:35:30 +08:00
</view>
<view class="bot">
累计用户
</view>
</view>
<view class="li">
<view class="top">
2025-05-10 17:54:20 +08:00
{{qbobj.bonusActualAmount == null ? 0 : qbobj.bonusActualAmount}}
2025-04-01 21:35:30 +08:00
</view>
<view class="bot">
2025-05-10 17:54:20 +08:00
累计收益
2025-04-01 21:35:30 +08:00
</view>
</view>
<view class="li">
<view class="top">
2025-05-10 17:54:20 +08:00
{{qbobj.orderActualTotalAmount == null ? 0 : qbobj.orderActualTotalAmount}}
2025-04-01 21:35:30 +08:00
</view>
<view class="bot">
2025-04-10 08:57:21 +08:00
订单金额
2025-04-01 21:35:30 +08:00
</view>
</view>
<view class="li">
<view class="top">
2025-05-10 17:54:20 +08:00
{{qbobj.orderCount == null ? '0' : qbobj.orderCount}}
2025-04-01 21:35:30 +08:00
</view>
<view class="bot">
2025-04-10 08:57:21 +08:00
订单数量
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
</view>
<view class="time">
<view class="timewz">
时间范围
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="inptime">
<view class="date-btn date-btn-start" hover-class="is-hover" hover-stay-time="100" @click="showTimePicker('start')">
<u-icon name="calendar" color="#2C8AF0" size="28"></u-icon>{{kstime}}
</view>
--
<view class="date-btn" hover-class="is-hover" hover-stay-time="100" @click="showTimePicker('end')">
{{jstime}}
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
</view>
<u-picker mode="time" v-model="oneshow" :params="oneparams" @confirm="confirmone"></u-picker>
<u-picker mode="time" v-model="twoshow" :params="twoparams" @confirm="confirmtwo"></u-picker>
<view class="riqi">
<view class="riqi-item" :class="riqiindex == 0 ? 'actives' : ''" hover-class="is-hover" hover-stay-time="100" @click="btnriqi(0)">
今日
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="riqi-item" :class="riqiindex == 1 ? 'actives' : ''" hover-class="is-hover" hover-stay-time="100" @click="btnriqi(1)">
昨日
2025-05-10 17:54:20 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="riqi-item" :class="riqiindex == 2 ? 'actives' : ''" hover-class="is-hover" hover-stay-time="100" @click="btnriqi(2)">
本月
2025-05-10 17:54:20 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="riqi-item" :class="riqiindex == 3 ? 'actives' : ''" hover-class="is-hover" hover-stay-time="100" @click="btnriqi(3)">
上月
2025-05-10 17:54:20 +08:00
</view>
2026-04-02 01:48:12 +08:00
</view>
<view class="" style="width: 100%;height: 20rpx;"></view>
<!-- 营收类 -->
<view class="" style="height: 64vh;overflow: scroll;" v-if="index == 0">
<view class="ordertj">
<view class="one">
<view class="two">
{{yunyingobj.orderActualAmount == null ? 0 : yunyingobj.orderActualAmount}}
2025-05-10 17:54:20 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="thr">
订单总金额
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
<view class="one">
<view class="two">
{{yunyingobj.orderCount == null ? 0 : yunyingobj.orderCount}}
2025-05-10 17:54:20 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="thr">
订单总数
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
<view class="one">
<view class="two">
{{yunyingobj.finishedOrderCount == null ? 0 : yunyingobj.finishedOrderCount}}
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="thr">
已完成订单
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
<view class="one">
<view class="two">
{{yunyingobj.orderStatusMap.PROCESSING == null ? 0 : yunyingobj.orderStatusMap.PROCESSING}}
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="thr">
进行中订单
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
</view>
<view class="yinshouqk">
<view class="name income-title">
<text class="tip-icon" hover-class="is-hover" hover-stay-time="100" @click.stop="showIncomeExplain('bonus')">?</text>
我的收入<text style="color: rgb(242,75,23);margin-left: 10rpx;font-size: 32rpx;">{{yunyingobj.bonusActualAmount == null ? 0 : yunyingobj.bonusActualAmount}}</text>
</view>
<view class="name income-title" style="margin-top: 10rpx;">
<text class="tip-icon" hover-class="is-hover" hover-stay-time="100" @click.stop="showIncomeExplain('order')">?</text>
订单收入<text style="color: rgb(242,75,23);margin-left: 10rpx;font-size: 32rpx;">{{yunyingobj.orderActualReceivedAmount == null ? 0 : yunyingobj.orderActualReceivedAmount}}</text>
</view>
<view class="zupibox">
<view class="zupi">
<view class="one">
<view class="onewz">
骑行费
</view>
<view class="twowz">
{{yunyingobj.orderRiddingFee == null ? 0 : yunyingobj.orderRiddingFee}}
</view>
</view>
<view class="one">
<view class="onewz">
调度费
</view>
<view class="twowz">
{{yunyingobj.orderDispatchFee == null ? 0 : yunyingobj.orderDispatchFee}}
</view>
</view>
<view class="one">
<view class="onewz">
管理费
</view>
<view class="twowz">
{{yunyingobj.orderManageFee == null ? 0 : yunyingobj.orderManageFee}}
</view>
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="zupi" style="margin-top: 30rpx;">
<view class="one">
<view class="onewz">
车损费
</view>
<view class="twowz">
{{yunyingobj.orderDeductionFee == null ? 0 : yunyingobj.orderDeductionFee}}
</view>
</view>
<view class="one">
<view class="onewz">
自动退款
</view>
<view class="twowz">
{{yunyingobj.orderAutoRefundAmount == null ? 0 : yunyingobj.orderAutoRefundAmount}}
</view>
</view>
<view class="one">
<view class="onewz">
人工退款
</view>
<view class="twowz">
{{yunyingobj.orderAdminRefundAmount == null ? 0 : yunyingobj.orderAdminRefundAmount}}
</view>
</view>
2025-04-01 21:35:30 +08:00
</view>
</view>
</view>
</view>
2026-04-02 01:48:12 +08:00
<!-- 运维类 -->
<view class="yunwei" v-if="index == 1">
<view class="cheliang" style="padding: 30rpx 62rpx;box-sizing: border-box;">
<view class="name">
工单管理
</view>
<view class="dabox">
<view class="li">
<view class="bfb">
236
</view>
<view class="cl">
调度工单
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="bfb">
365
</view>
<view class="cl">
维修工单
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="bfb">
3256
</view>
<view class="cl">
投诉工单
</view>
2025-04-01 21:35:30 +08:00
</view>
</view>
2026-04-02 01:48:12 +08:00
</view>
<view class="clzb">
<view class="name">
车辆指标
</view>
<view class="ul">
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
总投放
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
待使用
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
使用中
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
临时锁车
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
仓库中
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
禁用中
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
投放中
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
运营中P点外
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
运营中超区
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
零收益车辆
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li">
<view class="shu">
100
</view>
<view class="zi">
调度设备
</view>
2025-04-01 21:35:30 +08:00
</view>
2026-04-02 01:48:12 +08:00
<view class="li"></view>
2025-04-01 21:35:30 +08:00
</view>
</view>
</view>
2026-04-02 01:48:12 +08:00
</scroll-view>
2025-12-20 14:29:10 +08:00
<!-- <TabBar :indexs='1' style=""></TabBar> -->
2025-04-01 21:35:30 +08:00
</view>
</template>
<script>
import TabBar from '@/page_shanghu/components/tab-bar/tab-bar.vue'
export default {
components: {
TabBar
},
data() {
return {
bgc: {
backgroundColor: "#fff",
},
index:0,
2025-04-11 18:23:16 +08:00
successAmount:'',
2025-04-01 21:35:30 +08:00
riqiindex:0,
oneparams: {
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
oneshow: false,
twoparams: {
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
twoshow: false,
kstime:'',
2025-04-10 08:57:21 +08:00
jstime:'',
yunyingobj:{},
qbobj:{},
2025-04-27 17:37:23 +08:00
infoobj:{},
2025-05-10 17:54:20 +08:00
areaId:'',
2026-04-02 01:48:12 +08:00
waitDivideAmount:'',
isRefreshing: false,
2025-04-01 21:35:30 +08:00
}
},
onLoad() {
},
onShow() {
2025-04-27 17:37:23 +08:00
if (uni.getStorageSync('adminAreaid')) {
this.areaId = uni.getStorageSync('adminAreaid')
console.log(this.areaId);
this.getinfo()
this.getCurrentDate(this.riqiindex)
}else{
this.getinfo()
this.getCurrentDate(this.riqiindex)
}
2025-04-01 21:35:30 +08:00
},
methods: {
2026-04-02 01:48:12 +08:00
// 下拉刷新
onRefresh() {
this.isRefreshing = true
this.getinfo()
this.getCurrentDate(this.riqiindex)
setTimeout(() => {
this.isRefreshing = false
}, 1000)
},
2025-04-30 18:03:27 +08:00
// 点击跳转到账户明细
btnmx(){
uni.navigateTo({
url:'/page_shanghu/mingxi?userId=' + this.infoobj.userId
})
},
2025-04-10 08:57:21 +08:00
// 请求个人信息
getinfo() {
this.$u.get(`/getInfo`).then(res => {
if (res.code == 200) {
this.infoobj = res.user
2025-05-17 12:09:43 +08:00
this.successAmount = res.stat.withdraw.successAmount == null ? 0 : Number(res.stat.withdraw.successAmount)
2025-05-10 17:54:20 +08:00
this.waitDivideAmount = res.stat.bonus.waitDivideAmount == null ? 0 : res.stat.bonus.waitDivideAmount
2025-04-11 18:23:16 +08:00
this.gettongji()
this.getqb()
2025-04-10 08:57:21 +08:00
}
})
},
// 请求全部运营统计数据
getqb() {
2025-05-10 17:54:20 +08:00
let StatKeys = 'order_user_count,bonus_actual_amount,order_actual_amount,order_count'
this.$u.get(`/dashboard/revenueStat?keys=${StatKeys}&dateRange=&userId=${this.infoobj.userId}&areaId=${this.areaId}`).then(res => {
2025-04-10 08:57:21 +08:00
if (res.code == 200) {
this.qbobj = res.data
}
})
},
// 请求筛选运营统计数据
gettongji() {
2025-05-10 17:54:20 +08:00
let StatKeys = 'order_actual_amount,order_count,order_end_status_count,order_status_count,bonus_actual_amount,order_ridding_fee,order_deduction_fee,order_dispatch_fee,order_manage_fee,order_refund_amount'
this.$u.get(`/dashboard/revenueStat?keys=${StatKeys}&dateRange=${this.kstime + ',' + this.jstime}&userId=${this.infoobj.userId}&areaId=${this.areaId}`).then(res => {
2025-04-10 08:57:21 +08:00
if (res.code == 200) {
this.yunyingobj = res.data
}
})
},
2025-04-01 21:35:30 +08:00
// 一开始就获取当前年月日
getCurrentDate(num) {
const currentDate = new Date()
const year = currentDate.getFullYear()
const month = currentDate.getMonth() + 1
const day = currentDate.getDate()
const formatDate = (year, month, day) => {
const formattedMonth = month < 10 ? `0${month}` : month
const formattedDay = day < 10 ? `0${day}` : day
return `${year}-${formattedMonth}-${formattedDay}`
}
const getFirstDayOfMonth = (year, month) => {
return new Date(year, month - 1, 1)
}
const getLastDayOfMonth = (year, month) => {
return new Date(year, month, 0)
}
switch (num) {
case 0:
this.kstime = formatDate(year, month, day)
this.jstime = formatDate(year, month, day)
break
case 1:
const yesterday = new Date(currentDate)
yesterday.setDate(currentDate.getDate() - 1)
this.kstime = formatDate(yesterday.getFullYear(), yesterday.getMonth() + 1, yesterday.getDate())
this.jstime = formatDate(yesterday.getFullYear(), yesterday.getMonth() + 1, yesterday.getDate())
break
case 2:
const firstDayOfMonth = getFirstDayOfMonth(year, month)
this.kstime = formatDate(firstDayOfMonth.getFullYear(), firstDayOfMonth.getMonth() + 1, firstDayOfMonth.getDate())
this.jstime = formatDate(year, month, day)
break
case 3:
const lastMonthFirstDay = getFirstDayOfMonth(year, month - 1)
const lastMonthLastDay = getLastDayOfMonth(year, month - 1)
this.kstime = formatDate(lastMonthFirstDay.getFullYear(), lastMonthFirstDay.getMonth() + 1, lastMonthFirstDay.getDate())
this.jstime = formatDate(lastMonthLastDay.getFullYear(), lastMonthLastDay.getMonth() + 1, lastMonthLastDay.getDate())
break
default:
this.kstime = formatDate(year, month, day)
this.jstime = formatDate(year, month, day)
break
}
},
// 选择开始时间
confirmone(e){
this.kstime = e.year + '-' + e.month + '-' + e.day
this.riqiindex = -1
2025-04-10 08:57:21 +08:00
this.gettongji()
2025-04-01 21:35:30 +08:00
},
// 选择结束时间
confirmtwo(e){
this.jstime = e.year + '-' + e.month + '-' + e.day
this.riqiindex = -1
2025-04-10 08:57:21 +08:00
this.gettongji()
2025-04-01 21:35:30 +08:00
},
// 点击跳转到提现
btntx(){
uni.navigateTo({
url:'/page_shanghu/gongzuotai/AccountDetails'
})
},
// 点击切换日期
btnriqi(num){
this.riqiindex = num
this.getCurrentDate(this.riqiindex)
2025-04-10 08:57:21 +08:00
this.gettongji()
2025-04-01 21:35:30 +08:00
},
// 点击切换tab
btntab(num){
this.index = num
2025-04-23 17:50:42 +08:00
},
showTimePicker(type) {
if(type === 'start') {
this.oneshow = true
} else {
this.twoshow = true
}
2026-03-26 17:51:06 +08:00
},
showIncomeExplain(type) {
const message = type === 'bonus' ? '结算后的分成收入' : '创建时间在此期间的订单收入'
uni.showToast({
title: message,
icon: 'none',
duration: 5000
})
2025-04-01 21:35:30 +08:00
}
}
}
</script>
<style lang="scss">
2026-04-02 01:48:12 +08:00
.page {
min-height: 100vh;
2026-04-28 14:01:46 +08:00
background: linear-gradient(180deg, #F3F4F6 0%, #FFFFFF 100%);
2026-04-02 01:48:12 +08:00
}
.page-scroll{
2026-04-28 14:01:46 +08:00
padding-bottom: 40rpx;
2026-04-02 01:48:12 +08:00
box-sizing: border-box;
}
.is-hover{
opacity: 0.85;
transform: scale(0.98);
}
2025-05-10 17:54:20 +08:00
.ordertj{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: auto;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
2025-05-10 17:54:20 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
padding: 40rpx 30rpx;
2025-05-10 17:54:20 +08:00
box-sizing: border-box;
display: flex;
justify-content: space-between;
2026-04-28 14:01:46 +08:00
position: relative;
2025-05-10 17:54:20 +08:00
.one{
text-align: center;
2026-04-28 14:01:46 +08:00
flex: 1;
position: relative;
&:not(:last-child)::after {
content: '';
position: absolute;
right: 0;
top: 20%;
height: 60%;
width: 2rpx;
background: #F3F4F6;
}
2025-05-10 17:54:20 +08:00
.two{
2026-04-28 14:01:46 +08:00
font-weight: bold;
font-size: 34rpx;
color: #3B82F6;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-05-10 17:54:20 +08:00
}
.thr{
2026-04-28 14:01:46 +08:00
margin-top: 16rpx;
color: #6B7280;
2025-05-10 17:54:20 +08:00
font-size: 24rpx;
2026-04-28 14:01:46 +08:00
font-weight: 500;
2025-05-10 17:54:20 +08:00
}
}
}
2025-04-01 21:35:30 +08:00
page {
2026-04-28 14:01:46 +08:00
background: #F3F4F6;
2025-04-01 21:35:30 +08:00
}
.actives{
2025-12-20 14:29:10 +08:00
color: #fff !important;
2026-04-28 14:01:46 +08:00
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%) !important;
border-color: transparent !important;
box-shadow: 0 8rpx 20rpx rgba(59, 130, 246, 0.25) !important;
2025-04-01 21:35:30 +08:00
}
.clzb{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: auto;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
2025-04-01 21:35:30 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
padding: 40rpx 30rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
.name{
font-weight: 600;
2026-04-28 14:01:46 +08:00
font-size: 34rpx;
color: #1F2937;
position: relative;
padding-left: 20rpx;
&::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 8rpx;
height: 28rpx;
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
border-radius: 4rpx;
}
2025-04-01 21:35:30 +08:00
}
.ul{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
2026-04-28 14:01:46 +08:00
margin-top: 10rpx;
2025-04-01 21:35:30 +08:00
.li{
width: 25%;
text-align: center;
2026-04-28 14:01:46 +08:00
margin-top: 40rpx;
position: relative;
2025-04-01 21:35:30 +08:00
.shu{
2026-04-28 14:01:46 +08:00
font-weight: bold;
font-size: 36rpx;
color: #3B82F6;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
.zi{
2026-04-28 14:01:46 +08:00
font-size: 24rpx;
font-weight: 500;
color: #6B7280;
2025-04-01 21:35:30 +08:00
margin-top: 12rpx;
}
}
}
}
.cheliang{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: auto;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
2025-04-01 21:35:30 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
padding: 40rpx 30rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
.name{
font-weight: 600;
2026-04-28 14:01:46 +08:00
font-size: 34rpx;
color: #1F2937;
position: relative;
padding-left: 20rpx;
&::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 8rpx;
height: 28rpx;
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
border-radius: 4rpx;
}
2025-04-01 21:35:30 +08:00
}
.dabox{
display: flex;
justify-content: space-between;
2026-04-28 14:01:46 +08:00
margin-top: 10rpx;
background: #F8FAFC;
border-radius: 24rpx;
padding: 30rpx 0;
border: 1rpx solid #F1F5F9;
2025-04-01 21:35:30 +08:00
.li{
text-align: center;
2026-04-28 14:01:46 +08:00
flex: 1;
position: relative;
&:not(:last-child)::after {
content: '';
position: absolute;
right: 0;
top: 20%;
height: 60%;
width: 2rpx;
background: #E5E7EB;
}
2025-04-01 21:35:30 +08:00
.bfb{
2026-04-28 14:01:46 +08:00
font-weight: bold;
font-size: 40rpx;
color: #3B82F6;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
.cl{
2026-04-28 14:01:46 +08:00
font-size: 26rpx;
font-weight: 500;
color: #6B7280;
margin-top: 12rpx;
2025-04-01 21:35:30 +08:00
}
}
}
}
.zupibox{
2026-04-28 14:01:46 +08:00
width: 100%;
height: auto;
background: #F8FAFC;
border-radius: 24rpx;
border: 1rpx solid #F1F5F9;
2025-04-01 21:35:30 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
padding: 36rpx 20rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
.zupi{
display: flex;
justify-content: space-between;
2025-05-10 17:54:20 +08:00
justify-content: center;
2025-04-01 21:35:30 +08:00
.one{
2025-05-10 17:54:20 +08:00
width: 33%;
text-align: center;
2026-04-28 14:01:46 +08:00
position: relative;
&:not(:last-child)::after {
content: '';
position: absolute;
right: 0;
top: 20%;
height: 60%;
width: 2rpx;
background: #E5E7EB;
}
2025-04-01 21:35:30 +08:00
.onewz{
2026-04-28 14:01:46 +08:00
font-size: 26rpx;
font-weight: 500;
color: #6B7280;
2025-04-01 21:35:30 +08:00
margin-top: 10rpx;
}
.twowz{
2026-04-28 14:01:46 +08:00
font-size: 30rpx;
font-weight: bold;
color: #3B82F6;
margin-top: 16rpx;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
}
}
}
.yinshouqk{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: auto;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
padding: 40rpx 30rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
2025-04-01 21:35:30 +08:00
.zongfy{
display: flex;
justify-content: space-between;
margin-top: 54rpx;
padding: 0 18rpx;
box-sizing: border-box;
.top{
text-align: center;
.topwz{
2026-04-28 14:01:46 +08:00
font-weight: bold;
2025-04-01 21:35:30 +08:00
font-size: 36rpx;
2026-04-28 14:01:46 +08:00
color: #1F2937;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
.botwz{
2026-04-28 14:01:46 +08:00
font-size: 26rpx;
font-weight: 500;
color: #6B7280;
margin-top: 10rpx;
2025-04-01 21:35:30 +08:00
}
}
image{
width: 78rpx;
height: 78rpx;
}
}
.name{
font-weight: 600;
2026-04-28 14:01:46 +08:00
font-size: 30rpx;
color: #1F2937;
2025-04-01 21:35:30 +08:00
}
2026-03-26 17:51:06 +08:00
.income-title{
display: flex;
align-items: center;
2026-04-28 14:01:46 +08:00
margin-bottom: 20rpx;
text {
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
}
2026-03-26 17:51:06 +08:00
}
.tip-icon{
2026-04-28 14:01:46 +08:00
width: 32rpx;
height: 32rpx;
line-height: 32rpx;
2026-03-26 17:51:06 +08:00
border-radius: 50%;
2026-04-28 14:01:46 +08:00
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
2026-03-26 17:51:06 +08:00
color: #FFFFFF;
text-align: center;
font-size: 22rpx;
2026-04-28 14:01:46 +08:00
font-weight: 600;
2026-03-26 17:51:06 +08:00
margin-right: 12rpx;
flex-shrink: 0;
2026-04-28 14:01:46 +08:00
transition: all 0.3s ease;
box-shadow: 0 4rpx 10rpx rgba(59, 130, 246, 0.3);
&:active {
transform: scale(0.9);
}
2026-03-26 17:51:06 +08:00
}
2025-04-01 21:35:30 +08:00
}
.riqi{
2026-04-02 01:48:12 +08:00
.riqi-item{
2026-04-28 14:01:46 +08:00
width: 160rpx;
height: 64rpx;
line-height: 64rpx;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
2025-04-01 21:35:30 +08:00
font-size: 28rpx;
2026-04-28 14:01:46 +08:00
font-weight: 500;
color: #3B82F6;
2025-04-01 21:35:30 +08:00
text-align: center;
2026-04-28 14:01:46 +08:00
border: 1rpx solid #BFDBFE;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.95);
}
2025-04-01 21:35:30 +08:00
}
2026-04-28 14:01:46 +08:00
margin: auto;
margin-top: 30rpx;
2025-04-01 21:35:30 +08:00
display: flex;
justify-content: space-between;
2026-04-28 14:01:46 +08:00
width: 710rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
}
.time{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: 110rpx;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
2025-04-01 21:35:30 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
2025-04-01 21:35:30 +08:00
display: flex;
justify-content: space-between;
box-sizing: border-box;
2026-04-28 14:01:46 +08:00
padding: 0 40rpx;
2025-04-01 21:35:30 +08:00
align-items: center;
2026-04-28 14:01:46 +08:00
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
2025-04-01 21:35:30 +08:00
.timewz{
2026-04-28 14:01:46 +08:00
font-weight: 600;
font-size: 30rpx;
color: #1F2937;
position: relative;
padding-left: 20rpx;
&::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 8rpx;
height: 28rpx;
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
border-radius: 4rpx;
}
2025-04-01 21:35:30 +08:00
}
.inptime{
display: flex;
align-items: center;
2026-04-28 14:01:46 +08:00
color: #3B82F6;
background: #EFF6FF;
border-radius: 36rpx;
width: 480rpx;
2025-12-20 14:29:10 +08:00
justify-content: space-between;
2026-04-28 14:01:46 +08:00
padding: 0 16rpx;
height: 72rpx;
2026-04-02 01:48:12 +08:00
.date-btn{
display: flex;
align-items: center;
justify-content: center;
2026-04-28 14:01:46 +08:00
padding: 0 20rpx;
height: 56rpx;
border-radius: 28rpx;
2025-04-01 21:35:30 +08:00
text-align: center;
2026-04-28 14:01:46 +08:00
line-height: 56rpx;
font-size: 26rpx;
font-weight: 500;
color: #3B82F6;
transition: all 0.3s ease;
&:active {
background: #DBEAFE;
}
2026-04-02 01:48:12 +08:00
}
.date-btn-start{
column-gap: 8rpx;
2025-04-01 21:35:30 +08:00
}
2026-04-28 14:01:46 +08:00
span, text {
color: #9CA3AF;
font-size: 24rpx;
}
2025-04-01 21:35:30 +08:00
}
}
.leiji{
2026-04-28 14:01:46 +08:00
width: 710rpx;
height: auto;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(44, 138, 240, 0.06);
border: 1rpx solid rgba(255, 255, 255, 0.8);
2025-04-01 21:35:30 +08:00
display: flex;
2026-04-28 14:01:46 +08:00
justify-content: space-around;
padding: 40rpx 0;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
2025-04-01 21:35:30 +08:00
.li{
text-align: center;
2026-04-28 14:01:46 +08:00
flex: 1;
position: relative;
&:not(:last-child)::after {
content: '';
position: absolute;
right: 0;
top: 20%;
height: 60%;
width: 2rpx;
background: #F3F4F6;
}
2025-04-01 21:35:30 +08:00
.top{
2026-04-28 14:01:46 +08:00
font-weight: bold;
font-size: 34rpx;
color: #3B82F6;
2025-04-01 21:35:30 +08:00
margin-top: 12rpx;
2026-04-28 14:01:46 +08:00
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
.bot{
2026-04-28 14:01:46 +08:00
margin-top: 16rpx;
font-weight: 500;
font-size: 26rpx;
color: #6B7280;
2025-04-01 21:35:30 +08:00
}
}
}
.yinshoubox{
display: flex;
justify-content: space-between;
2026-04-28 14:01:46 +08:00
padding: 40rpx 50rpx;
2025-04-01 21:35:30 +08:00
box-sizing: border-box;
2026-04-28 14:01:46 +08:00
margin: 30rpx auto;
width: 710rpx;
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
border-radius: 32rpx;
box-shadow: 0 12rpx 36rpx rgba(59, 130, 246, 0.25);
2025-04-01 21:35:30 +08:00
.rt{
.tx{
2026-04-28 14:01:46 +08:00
width: 160rpx;
height: 64rpx;
2025-04-01 21:35:30 +08:00
background: #FFFFFF;
2026-04-28 14:01:46 +08:00
box-shadow: 0 8rpx 20rpx rgba(0, 0, 0, 0.1);
border-radius: 32rpx;
2025-04-01 21:35:30 +08:00
text-align: center;
2026-04-28 14:01:46 +08:00
line-height: 64rpx;
2025-04-01 21:35:30 +08:00
font-weight: 600;
2026-04-28 14:01:46 +08:00
font-size: 28rpx;
color: #3B82F6;
margin-top: 30rpx;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
}
2025-04-01 21:35:30 +08:00
}
.txjl{
2026-04-28 14:01:46 +08:00
font-weight: 500;
2025-04-01 21:35:30 +08:00
font-size: 24rpx;
2026-04-28 14:01:46 +08:00
color: rgba(255,255,255,0.9);
margin-top: 30rpx;
2025-04-01 21:35:30 +08:00
text-align: right;
}
}
.lt{
.zhye{
2026-04-28 14:01:46 +08:00
font-weight: 500;
2025-04-01 21:35:30 +08:00
font-size: 28rpx;
2026-04-28 14:01:46 +08:00
color: rgba(255,255,255,0.8);
2025-04-01 21:35:30 +08:00
}
.price{
2026-04-28 14:01:46 +08:00
font-weight: bold;
font-size: 56rpx;
2025-04-01 21:35:30 +08:00
color: #FFFFFF;
2026-04-28 14:01:46 +08:00
margin-top: 12rpx;
font-family: 'DIN Alternate', -apple-system, BlinkMacSystemFont, sans-serif;
2025-04-01 21:35:30 +08:00
}
.ljtx{
2026-04-28 14:01:46 +08:00
margin-top: 30rpx;
font-weight: 500;
2025-04-01 21:35:30 +08:00
font-size: 24rpx;
2026-04-28 14:01:46 +08:00
color: rgba(255,255,255,0.8);
2025-04-01 21:35:30 +08:00
}
}
}
.active{
color: #fff !important;
text{
display: block;
2026-04-28 14:01:46 +08:00
width: 64rpx;
2025-04-01 21:35:30 +08:00
height: 8rpx;
2026-04-28 14:01:46 +08:00
background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);
border-radius: 4rpx;
2025-04-01 21:35:30 +08:00
margin: auto;
2026-04-28 14:01:46 +08:00
margin-top: 12rpx;
box-shadow: 0 4rpx 10rpx rgba(59, 130, 246, 0.4);
2025-04-01 21:35:30 +08:00
}
}
.tabs{
display: flex;
padding-top: 108rpx;
padding-left: 56rpx;
box-sizing: border-box;
2026-04-28 14:01:46 +08:00
position: relative;
z-index: 1;
2025-04-01 21:35:30 +08:00
view{
margin-right: 72rpx;
font-weight: 600;
font-size: 36rpx;
2026-04-28 14:01:46 +08:00
color: rgba(255,255,255,0.8);
transition: all 0.3s ease;
&:active {
opacity: 0.8;
}
2025-04-01 21:35:30 +08:00
}
}
.bj{
width: 750rpx;
2026-04-28 14:01:46 +08:00
height: 480rpx;
background: linear-gradient(180deg, #1E3A8A 0%, #3B82F6 100%);
border-radius: 0 0 60rpx 60rpx;
2025-04-01 21:35:30 +08:00
position: fixed;
top: 0;
left: 0;
2026-04-28 14:01:46 +08:00
z-index: 0;
box-shadow: 0 12rpx 40rpx rgba(59, 130, 246, 0.2);
2025-04-01 21:35:30 +08:00
}
</style>