203 lines
5.6 KiB
Vue
203 lines
5.6 KiB
Vue
<template>
|
||
<view class="account-details">
|
||
<view class="details-top">
|
||
<view class="details-total">
|
||
总额:{{ accountInfo.balance | moneyFilter }}
|
||
</view>
|
||
<view class="details-change">
|
||
<view class="income">
|
||
流入:{{ accountInfo.inflow | moneyFilter }}
|
||
</view>
|
||
<view class="divide-line"></view>
|
||
<view class="out">
|
||
流出:{{ accountInfo.flowOut | moneyFilter }}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="details-list">
|
||
<view class="details-item" v-for="(record, index) in recordList" :key="index">
|
||
<uni-card padding="0" spacing="0" class="detail-card">
|
||
<template v-slot:title>
|
||
<view class="record-title">
|
||
<view class="title-left">
|
||
<span class="title-day">{{ new Date(record.payTime).getDate() }}</span>
|
||
<span class="title-week">日 / 周{{ $parseTime(new Date(record.payTime), '{a}') }}</span>
|
||
</view>
|
||
<view class="title-right">
|
||
<span v-if="$arraySum(record.recordList.filter(item => { return item.typeObject.typeDifference === '0' }), 'money')">
|
||
<svg-icon class="money-change" icon-class="加号"/>
|
||
<span>
|
||
{{ $arraySum(record.recordList.filter(item => { return item.typeObject.typeDifference === '0' }), 'money') | moneyFilter }}
|
||
</span>
|
||
</span>
|
||
<span v-if="$arraySum(record.recordList.filter(item => { return item.typeObject.typeDifference === '1' }), 'money')">
|
||
<svg-icon class="money-change" icon-class="减少"/>
|
||
<span>
|
||
{{ $arraySum(record.recordList.filter(item => { return item.typeObject.typeDifference === '1' }), 'money') | moneyFilter }}
|
||
</span>
|
||
</span>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<uni-list>
|
||
<uni-list-item
|
||
v-for="note in record.recordList"
|
||
:key="note.id"
|
||
class="record-list"
|
||
showArrow>
|
||
<template v-slot:header>
|
||
<view class="note-item">
|
||
<svg-icon :icon-class="note.typeObject.typeIcon || ''"/>
|
||
<view class="note-record">
|
||
<view v-if="note.typeObject.typeDifference === '2'">
|
||
<span>{{ note.accountObject.accountName }}</span>
|
||
<svg-icon icon-class="右箭头"/>
|
||
<span>{{ note.otherAccountObject.accountName }}</span>
|
||
</view>
|
||
<view v-else>{{ note.typeObject.typeName }}</view>
|
||
<view class="note-remark">
|
||
{{ note.remark }}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<view class="chat-custom-right">
|
||
<text class="chat-custom-text">刚刚</text>
|
||
<!-- 需要使用 uni-icons 请自行引入 -->
|
||
<uni-icons type="star-filled" color="#999" size="18"></uni-icons>
|
||
</view>
|
||
</uni-list-item>
|
||
</uni-list>
|
||
</uni-card>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { getAccount } from "@/api/px/life/bookkeeping/account";
|
||
import { listRecord } from "@/api/px/life/bookkeeping/record";
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
// 当前账户信息
|
||
accountInfo: {},
|
||
// 当前账户记录列表
|
||
recordList: []
|
||
}
|
||
},
|
||
onLoad(router) {
|
||
this.getAccount(router);
|
||
this.getRecordList(router);
|
||
},
|
||
onNavigationBarButtonTap(val) {
|
||
this.$tab.navigateTo('/pages_life/bookkeeping/account/maintenance?accountId='+ this.accountInfo.id)
|
||
},
|
||
methods: {
|
||
/**
|
||
* 获取账户信息
|
||
*/
|
||
getAccount(router) {
|
||
getAccount(this.$route.query.accountId).then(res => {
|
||
this.accountInfo = res.data;
|
||
uni.setNavigationBarTitle({
|
||
title: this.accountInfo.accountName
|
||
});
|
||
})
|
||
},
|
||
/**
|
||
* 获取记录列表
|
||
*/
|
||
getRecordList(router) {
|
||
listRecord({ account: router.accountId }).then(res => {
|
||
res.rows.forEach(item => {
|
||
if (this.recordList.find(i => i.payTime === this.$parseTime(new Date(item.payTime), '{y}-{m}-{d}'))) {
|
||
this.recordList.find(i => i.payTime === this.$parseTime(new Date(item.payTime), '{y}-{m}-{d}')).recordList.push(item)
|
||
} else {
|
||
this.recordList.push({
|
||
payTime: this.$parseTime(new Date(item.payTime), '{y}-{m}-{d}'),
|
||
recordList: [item]
|
||
})
|
||
}
|
||
});
|
||
this.$sortDesByKey(this.recordList, 'payTime');
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.account-details {
|
||
padding: 1rem;
|
||
.details-top {
|
||
padding: 1rem;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: flex-end;
|
||
height: 10rem;
|
||
background-image: url("https://pnkx.cloud:8866/ftp/2022/04/02/71537678-0fd7-4521-a96f-5354b3f126b1.jpg");
|
||
background-size: 100% 100%;
|
||
color: $uni-text-color-inverse;
|
||
font-weight: bold;
|
||
border-radius: 0.5rem;
|
||
.details-total {
|
||
margin-bottom: 1rem;
|
||
font-size: 16px;
|
||
}
|
||
.details-change {
|
||
display: flex;
|
||
align-items: center;
|
||
height: 1rem;
|
||
.divide-line {
|
||
margin: 0 1rem;
|
||
width: 2px;
|
||
height: 100%;
|
||
background-color: $uni-bg-color;
|
||
}
|
||
}
|
||
}
|
||
.details-list {
|
||
.details-item {
|
||
.detail-card {
|
||
margin: 1rem 0 !important;
|
||
.record-title {
|
||
padding: 1rem 0.5rem;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
font-size: 16px;
|
||
.title-left {
|
||
.title-day {
|
||
font-weight: bold;
|
||
}
|
||
.title-week {
|
||
color: $uni-text-color-dark-grey;
|
||
font-size: 14px;
|
||
}
|
||
}
|
||
.title-right {
|
||
.money-change {
|
||
margin: 0 0.3rem;
|
||
}
|
||
}
|
||
}
|
||
.record-list {
|
||
.note-item {
|
||
display: flex;
|
||
align-items: center;
|
||
color: $uni-text-color;
|
||
.note-record {
|
||
margin-left: 1rem;
|
||
.note-remark {
|
||
font-size: 14px;
|
||
color: $uni-text-color-grey;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style> |