156 lines
3.6 KiB
Vue
156 lines
3.6 KiB
Vue
<template>
|
||
<view class="account">
|
||
<view class="account-total">
|
||
<view class="total-text">
|
||
总资产:
|
||
</view>
|
||
<view class="total-number">
|
||
{{ totalAssets | moneyFilter }}
|
||
</view>
|
||
</view>
|
||
<view class="account-list">
|
||
<view class="account-part" v-for="item in accountInfoList" :key="item.dictValue">
|
||
<view class="account-title">
|
||
<view class="left-line"></view>
|
||
<view class="account-label">{{ item.dictLabel }}</view>
|
||
<view class="account-balance">资产:{{ $arraySum(item.accountList, 'balance') | moneyFilter }}</view>
|
||
</view>
|
||
<uni-card
|
||
v-for="account in item.accountList"
|
||
:key="account.id"
|
||
:title="account.accountName"
|
||
:extra="account.balance | moneyFilter"
|
||
class="account-card"
|
||
@click="$tab.navigateTo('/pages_life/bookkeeping/account/details?accountId='+account.id)"
|
||
>
|
||
<text class="uni-body">
|
||
<view class="account-remark">
|
||
{{ account.remark }}
|
||
</view>
|
||
<uni-icons type="right" size="16"></uni-icons>
|
||
</text>
|
||
</uni-card>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { listAccount } from "@/api/px/life/bookkeeping/account";
|
||
import { getDicts } from "@/api/system/dict/data";
|
||
import { moneyFilter } from "@/utils/filters";
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
// 账户合计
|
||
totalAssets: [],
|
||
// 账户信息列表
|
||
accountInfoList: []
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.getAccountList();
|
||
},
|
||
onNavigationBarButtonTap(val) {
|
||
this.$tab.navigateTo('/pages_life/bookkeeping/account/maintenance')
|
||
},
|
||
methods: {
|
||
/**
|
||
* 获取账户列表信息
|
||
*/
|
||
getAccountList() {
|
||
let accountList = [];
|
||
this.totalAssets = 0;
|
||
listAccount().then(res => {
|
||
accountList = res.rows;
|
||
getDicts('px_bookkeeping_account_type').then(response => {
|
||
const accountInfo = response.data.map(r => {
|
||
return {
|
||
...r,
|
||
accountList: [],
|
||
}
|
||
});
|
||
accountList.forEach(item => {
|
||
this.totalAssets += parseInt(item.balance);
|
||
accountInfo.find(a => {
|
||
return a.dictValue === item.accountType
|
||
}).accountList.push(item)
|
||
});
|
||
this.accountInfoList = accountInfo;
|
||
})
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.account {
|
||
padding: 1rem;
|
||
.account-total {
|
||
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-size: 16px;
|
||
font-weight: bold;
|
||
border-radius: 0.5rem;
|
||
.total-number {
|
||
margin-top: 0.5rem;
|
||
}
|
||
}
|
||
.account-list {
|
||
::v-deep .account-part {
|
||
&:first-child {
|
||
.account-title {
|
||
margin-top: 1rem;
|
||
}
|
||
}
|
||
.account-title {
|
||
display: flex;
|
||
align-items: center;
|
||
height: 2rem;
|
||
color: #008080;
|
||
.left-line {
|
||
margin-right: 0.5rem;
|
||
width: 0.2rem;
|
||
height: 1rem;
|
||
background-color: #00CED1;
|
||
border-radius: 0.5rem;
|
||
}
|
||
.account-balance {
|
||
margin-left: 1rem;
|
||
}
|
||
}
|
||
.account-card {
|
||
margin: 1rem 0 !important;
|
||
.uni-card__header {
|
||
.uni-card__header-extra-text {
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
.uni-card__content {
|
||
.uni-body span {
|
||
display: flex;
|
||
.account-remark {
|
||
width: calc(100% - 1.5rem);
|
||
}
|
||
.uni-icons {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
width: 1.5rem;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|