import React, {Component} from 'react'; import { View, Text, FlatList, RefreshControl, Alert, SafeAreaView, Image, StyleSheet, Dimensions, PixelRatio, } from 'react-native'; import {List, SearchBar, SwipeAction} from '@ant-design/react-native'; import {RetrieveData} from '../../data/storage'; import {RequestNetwork} from '../../data/encryption'; import public_css from '../../source/css/public_css'; import {Footer} from '../../components/listPage/pagination'; import {CleanAll} from '../../components/abnormalMessage/abnormal_message'; import {ToastShow} from '../../components/toast/toast'; let pageNo = 1; //当前页码 let totalPage = 5; //总的页数 let pageSize = 10; //每页数量 export default class invoice_select_customer extends Component { constructor(props) { super(props); this.state = { listData: [], customerName: '', showFoot: 0, // 控制foot, 0:无数据 1:加载中 2 :上拉加载 isLoading: false, }; } render() { return ( this.searchClear()} onChange={(value) => this.searchData(value)} showCancelButton={false} style={{borderRadius: 15}} /> this.renderItem(item)} refreshControl={ { this.initData(); }} /> } // ListFooterComponent={() => Footer(this.state.showFoot)} // onEndReached={this._onEndReached.bind(this)} // onEndReachedThreshold={0.1} /> ); } //页面渲染完成后加载 async componentDidMount(): void { pageNo = 1; this.setState({ listData: [], customerName: '', showFoot: 1, }); await this.getCustomerData(); } //搜索 searchData = async (text) => { pageNo = 1; this.setState({ listData: [], customerName: text, showFoot: 0, }); await this.getCustomerData(); }; //初始化数据 initData = async () => { pageNo = 1; this.setState({ listData: [], customerName: '', showFoot: 1, isLoading: true, }); await this.getCustomerData(); }; //清空搜索栏 searchClear = async () => { await this.initData(); }; //获得客户信息 getCustomerData = async () => { let token = await RetrieveData('token'); let company = JSON.parse(await RetrieveData('company')); if (token) { const url = '/sys/customer/customerSearch'; let res = await RequestNetwork( url, token, { customerName: this.state.customerName, entTaxId: company.entTaxId, reqChannel: 3, }, false, 2, ); if (res) { console.log(res); if (res.code === 0) { totalPage = res.data.pages; this.setList(res.data); } else { this.setState({ showFoot: 0, }); await this.abnormalMessage(res); } } } }; //设置客户信息列表 setList = (data) => { let listDatas = data.map((_, i) => ({ key: data[i].customerId, customerName: data[i].customerName, entTaxId: data[i].customerEntTaxId, contactPhone: data[i].contactPhone, address: data[i].address, bankName: data[i].bankName, bankAccount: data[i].bankAccountNumber, customerMobile: data[i].customerMobile, email: data[i].email, })); let list = this.state.listData.concat(listDatas); if (list.length > 0) { this.setState({ showFoot: 2, isLoading: false, listData: list, }); } else { this.setState({ showFoot: 0, isLoading: false, listData: list, }); } }; //加载列表数据 renderItem = (data) => ( { this.props.route.params.selectCustomer(data.item); this.props.navigation.goBack(); }}> {data.item.customerName} {data.item.customerType === 1 ? ( 个人 ) : ( 企业 )} 企业税号:{data.item.entTaxId} {data.item.customerMobile === '' ? ( 联系电话:暂未填写 ) : ( 联系电话: {data.item.customerMobile} )} {data.item.email === '' ? ( 邮箱:暂未填写 ) : ( 邮箱: {data.item.email} )} ); //列表上拉加载 _onEndReached = async () => { if (this.state.showFoot === 2) { if (pageNo >= totalPage) { this.setState({showFoot: 0}); return; } else { pageNo++; this.setState({showFoot: 1}); await this.getCustomerData(); } } }; // 处理网络请求数据 abnormalMessage = async (jason) => { if (jason.code === 401) { await Alert.alert( '登录失效', '登录状态已失效,请重新登录!', [ { text: '确定', onPress: () => { CleanAll(); this.props.navigation.popToTop(); }, }, ], {cancelable: false}, ); } if (jason.code === 403) { Alert.alert( '权限', '暂无权限操作此模块!', [ { text: '确定', onPress: () => { this.props.navigation.goBack(); }, }, ], {cancelable: false}, ); } if (jason.code !== 401 && jason.code !== 403) { ToastShow(1, jason.msg); } }; } const styles = StyleSheet.create({ buttonView: { alignItems: 'center', backgroundColor: '#ffffff', }, //通用按钮样式 button: { marginTop: 5, width: Dimensions.get('window').width * 0.8, height: 34, borderRadius: 10, backgroundColor: '#1874CD', justifyContent: 'center', alignItems: 'center', }, //通用按钮样式 buttonText: { // fontSize: 22, textAlign: 'center', color: 'white', }, inputView: { // flex: 1, padding: 5, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', display: 'flex', }, view: { flexDirection: 'row', height: 34, width: Dimensions.get('window').width * 0.8, }, //通用textInput样式 text: { lineHeight: 34, fontSize: 14, }, //通用textInput样式 lineTopBottom: { borderBottomWidth: 3 / PixelRatio.get(), borderColor: 'rgb(208,208,208)', justifyContent: 'center', alignItems: 'center', }, textInputStyle: { flex: 5, marginRight: 10, marginLeft: 20, fontSize: 14, marginTop: 4, }, footer: { flexDirection: 'row', height: 24, justifyContent: 'center', alignItems: 'center', marginBottom: 10, }, });