/** * 钱包明细页面 * @邠心vbe on 2021/05/08 */ import React, { Component } from 'react'; import { View, Text, StyleSheet, Image, Pressable, TouchableOpacity } from 'react-native'; import apiWallet from '../../api/apiWallet'; import TextView from '../../components/TextView'; import { PageList } from '../Router'; import app from '../../../app.json'; import VbeSkeleton from '../../components/VbeSkeleton'; const IconCharge = require('../../images/wallet/ic-type-charge.png'); const IconPayment = require('../../images/wallet/ic-type-payment.png'); export default class History extends Component { constructor(props) { super(props); this.state = { loading: true, historyList: [], loadingList: ["", "", "", "", ""] }; this.refreshing = false; } componentDidMount() { //this.getHistory(); } componentDidUpdate() { if ((this.state.loading || this.props.refresh) && !this.refreshing && this.props.shown) { this.refreshing = true; this.getHistory(); } } getLastPk() { if (this.state.historyList.length > 0) { return this.state.historyList[this.state.historyList.length-1].creditRecordPk; } return null; } getHistory() { if (app.v3.overview) { this.getHistoryV2(); return; } apiWallet.getTransactionList({latestPk: ''}).then(res => { if (res.data) { this.setState({ historyList: res.data }); } }).catch(err => { this.setState({ historyList: [] }); }).finally(() => { this.setState({ loading: false, }); this.stopRefresh(); }); } getHistoryV2() { apiWallet.getTransactionListV2({latestPk: ''}).then(res => { if (res.data && res.data.length) { this.setState({ historyList: res.data.slice(0, 10) }); } else { this.setState({ historyList: [] }); } }).catch(err => { this.setState({ historyList: [] }); }).finally(() => { this.setState({ loading: false, }); this.stopRefresh(); }); } stopRefresh() { if (this.props.refreshed) { this.props.refreshed(); } this.refreshing = false; } toSummary(index) { const station = this.state.historyList[index]; if (station.refPk) { startPage(PageList.summary, { action: 'view', chargingPk: station.refPk }); } } getTransTitle(item) { let title = item.createTime; if (item.remarks) { title += ': ' + item.remarks; } else if (item.amountSymbol == 'M') { title += ': ' + (item.siteName || "Charging"); } else { title += ': ' + $t('wallet.topUp'); } return title; } toHistoryList() { startPage(PageList.history); } render() { return ( { this.state.loading ? { this.state.loadingList.map((item, index) => )} : <> { this.state.historyList.length > 0 ? this.state.historyList.map((item, index) => ( { this.toSummary(index) }}> 0 && styles.divide]}> {this.getTransTitle(item)} {$t('wallet.labelTransactionId') + item.creditRecordPk} { item.amountSymbol == 'M' ? - {item.amount} : + {item.amount} } )) : {$t('wallet.noHistoryData')} } { (app.v3.overview && this.state.historyList.length > 0) && this.toHistoryList()}> {$t("wallet.viewMore")} } } ); } } const styles = StyleSheet.create({ hide: { display: 'none' }, rangeText: { color: '#000', fontSize: 14 }, listView: { marginTop: 0, minHeight: $vh(30), backgroundColor: colorLight }, noResult: { color: '#999', fontSize: 14, padding: 20, lineHeight: $vh(20), textAlign: 'center', }, itemView: { paddingLeft: 16, paddingRight: 16, alignItems: 'center', flexDirection: 'row' }, itemContent: { flex: 1, marginLeft: 16, ...$padding(16, 4), alignItems: 'center', flexDirection: 'row' }, divide: { borderTopWidth: 1, borderTopColor: '#eee', }, iconType: { width: 28, height: 28 }, issueName: { color: textPrimary, fontSize: 12, paddingBottom: 2 }, issueDesc: { color: '#999', fontSize: 11 }, amountDuct: { color: '#FF2E00', fontSize: 14 }, amountText: { color: textPrimary, fontSize: 14 }, moreButton: { padding: 16, alignItems: 'center', marginBottom: 8 } })