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,
},
});