import React, { Component } from 'react'; import { View, Text, StyleSheet, RefreshControl, FlatList, Pressable } from 'react-native'; import VoucherType from './VoucherType'; import apiVoucher from '../../api/apiVoucher'; import { MyRefreshProps } from '../../components/ThemesConfig'; import TextView from '../../components/TextView'; import BadgeSelectItem from '../../components/BadgeSelectItem'; import Button from '../../components/Button'; import PagerUtil from '../chargeV2/PagerUtil'; import app from '../../../app.json'; import VbeSkeleton from '../../components/VbeSkeleton'; export default class VoucherSelect extends Component { constructor(props) { super(props); this.state = { dataList: [], voucherType: "", hasMore: true, loading: true, refreshing: false, selectedVoucher: {}, loadingList: ["","","",""] }; this.params = { chargeBoxId: "", connectorId: "" } } componentDidMount() { const params = this.props.route.params; if (params.chargeBoxId) { this.params.chargeBoxId = params.chargeBoxId } if (params.connectorId) { this.params.connectorId = params.connectorId } console.log("选择优惠券", this.params); this.getDataList(); this.props.navigation.addListener('beforeRemove', (e) => { PagerUtil.setSelectedVoucher(this.state.selectedVoucher); }); } onRefresh() { this.setState({ refreshing: true }) this.getDataList(); } getDataList(lastId) { apiVoucher.getSelectionVoucher({ ...this.params, voucherType: this.state.voucherType }).then(res => { if (res.data) { if (lastId) { if (res.data.length > 0) { const list = this.state.dataList; this.setState({ dataList: list.concat(res.data), hasMore: true }); } else { this.setState({ hasMore: false }) } } else { this.setState({ dataList: res.data, hasMore: res.data.length == 0 }); } } else { this.setState({ dataList: [], hasMore: true }); } }).catch(err => { toastShort(err) this.setState({ dataList: [], hasMore: true }); }).finally(() => { this.setState({ refreshing: false, selectedVoucher: {} }); setTimeout(() => { this.setState({ loading: false }); }, 500); }); } getDataListPage() { if (this.state.dataList.length > 0 && this.state.hasMore) { const last = this.state.dataList[this.state.dataList.length-1] this.getDataList(last.voucherId); } } getColorByStatus(status) { let color = colorAccent; switch (status) { case "Used": case "Expired": color = "#434343"; break; case "Expiring": color = "#ED3F3F" break; } return color; } changeType(type) { this.setState({ voucherType: type }); this.getDataList(); } onSetectVoucher(item) { if (item.userVoucherId != this.state.selectedVoucher.userVoucherId) { this.setState({ selectedVoucher: item }) } else { this.setState({ selectedVoucher: {} }) } } listItem = ({item, index, separators}) => { const checked = (this.state.selectedVoucher.userVoucherId == item.userVoucherId); return ( this.onSetectVoucher(item)}> {item.voucherName} {item.voucherDesc} {$t("voucher.expiresOn") + item.expiresOn} { !app.isLumiWhitelabel && <> } {item.userVoucherStatus} ) } topView = (props) => { return ( this.changeType(type)} /> ); } bottomView = () => { if (!this.state.hasMore) { return ({$t('voucher.noMore')}) } else { return null } } render() { if (this.state.loading) { return ( { this.state.loadingList.map((item, index) => )} ) } return ( item.userVoucherId} onEndReached={() => this.getDataListPage()} onEndReachedThreshold={0.3} ListEmptyComponent={{$t('voucher.noData')}} ListFooterComponent={this.bottomView} refreshControl={ this.onRefresh()} /> }/>