Files
2024-02-26 16:49:35 +08:00

185 lines
3.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
@name: index
@author: kahu4
@date: 2024-01-24 15:17
@descriptionindex
@update: 2024-01-24 15:17
-->
<script setup>
import Header from '@/components/Header/index.vue'
import { useScroll } from "@/hooks/useScroll";
import { useJump } from "@/hooks/useJump";
import { useMainStore } from "@/store/modules/useMainStore";
import { storeToRefs } from "pinia";
import { usePaging } from "@/hooks/usePaging";
import { pageUserBill } from "@/api/account/balance";
import { onLoad, onShow } from "@dcloudio/uni-app";
import { emptyOrderIcon } from "@/utils/images";
import Empty from "@/components/Empty/index.vue";
import moment from "moment";
const {scrollTop} = useScroll();
const {goRecharge} = useJump();
const mainStore = useMainStore();
const {user} = storeToRefs(mainStore)
const {otherParams, list, refreshPage} = usePaging({
request: pageUserBill,
load: false
});
onLoad(() => {
otherParams.value.category = 'now_money'
})
onShow(() => {
mainStore.getUserInfo()
refreshPage()
})
</script>
<template>
<view>
<Header
:scroll-top="scrollTop"
system-bar-area-bg="#fff"
header-area-bg="#fff"> 我的余额
</Header>
<view class="balance">
<view class="balance-detail flex flex-jc__sb flex-ai__center">
<view class="left">
<view class="title">账户余额</view>
<view class="money">{{ user.nowMoney.toFixed(2) }}</view>
</view>
<view class="right">
<view
class="button"
@click="goRecharge">充值
</view>
</view>
</view>
<view class="list-card">
<view class="title">
收支明细
</view>
<template v-if="list.length>0">
<view
class="row flex flex-ai__center flex-jc__sb"
v-for="order in list"
:key="order.id">
<view class="left flex flex-ai__center">
<image
class="icon"
v-if="false" />
<view class="info">
<view class="type-name">{{ order.title }}</view>
<view class="time">{{ moment(order.createTime).format("YYYY-MM-DD HH:mm:ss") }}</view>
</view>
</view>
<!-- error-->
<view
class="right success"
:class="{error:order.pm === 0}">
{{ order.pm === 0 ? '-' : '+' }}{{ order.number }}
</view>
</view>
</template>
<Empty
v-else
:iconSrc="emptyOrderIcon"
/>
</view>
</view>
</view>
</template>
<style
scoped
lang="scss">
.balance {
@include usePadding(32, 32);
width: 100%;
.balance-detail {
@include usePadding(32, 32);
background: #333333;
color: #fff;
width: 100%;
border-radius: 15rpx;
.title {
color: #999;
font-size: 28rpx;
margin-bottom: 20rpx;
}
.money {
font-size: 48rpx;
}
.button {
@include usePadding(38, 12);
background: #fff;
border-radius: 15rpx;
color: #333;
}
}
.list-card {
width: 100%;
@include usePadding(32, 32);
background: #fff;
border-radius: 15rpx;
margin-top: 30rpx;
.title {
font-size: 32rpx;
font-weight: 600;
}
.row {
margin: 24rpx 0;
.left {
.icon {
width: 80rpx;
height: 80rpx;
border-radius: 10rpx;
background: #b9b9b9;
margin-right: 20rpx;
}
.type-name {
font-size: 28rpx;
}
.time {
color: #999;
font-size: 24rpx;
}
}
.right {
@include usePadding(38, 7);
border-radius: 10rpx;
}
.success {
color: #28C445;
background: rgba(40, 196, 69, 0.1);
}
.error {
color: #EE6D46;
background: #FFF7F5;
}
}
}
}
</style>