import React, {Component} from 'react'; import { View, TouchableOpacity, Text, TextInput, ScrollView, SafeAreaView, RefreshControl, FlatList, DeviceEventEmitter, Alert, ActivityIndicator, } from 'react-native'; import { Drawer, List, Picker, Provider, SwipeAction, Tabs, WhiteSpace, WingBlank, } from '@ant-design/react-native'; import DateTimePicker from '@react-native-community/datetimepicker'; import public_css from '../../source/css/public_css'; import {GetDateString} from '../../utils/date'; import {RetrieveData} from '../../data/storage'; import {RequestNetwork} from '../../data/encryption'; import {ToastShow} from '../../components/toast/toast'; import {CleanAll} from '../../components/abnormalMessage/abnormal_message'; import wait_invoice_css from './wait_invoice_css'; let pageNo = 1; //当前第几页 let totalPage = 5; //总的页数 export default class wait_invoice_list extends Component { constructor(props) { super(props); this.props.navigation.dangerouslyGetParent().setOptions({ tabBarVisible: false, }); this.state = { isShowSearch: false, visible1: false, tab: 0, clickNum: 0, beginDateTime: undefined, endDateTime: undefined, customerName: '', customerPhone: '', invoiceCode: '', invoiceNumber: '', beginDate: new Date(), beginDateText: '开始时间', endDate: new Date(), endDateText: '结束时间', beginDateShow: false, endDateShow: false, invoiceCategory: 1, statusList: [ { value: 2, label: '待提交', }, { value: 3, label: '已提交', }, { value: 4, label: '开票成功', }, { value: 5, label: '开票失败', }, ], customerMobile: '', belongEntTaxId: '', entName: '', createTimeEnd: undefined, createTimeBegin: undefined, listData: [], status: 2, showFoot: 0, // 控制foot, 0:隐藏footer 1:已加载完成,没有更多数据 2 :显示加载中 isLoading: false, }; } render() { let draw = ( 时间区间 { this.isShowDateSelect(1); }}> {this.state.beginDateText} { this.isShowDateSelect(2); }}> {this.state.endDateText} {this.state.beginDateShow === true ? ( { this.beginDateChange(event, date); }} /> ) : ( )} {this.state.endDateShow === true ? ( { this.endDateChange(event, date); }} /> ) : ( )} this.statusChange(select)}> 状态: 客户名称: { this.setState({ customerName: value, }); }} /> 客户手机号: { this.setState({ customerPhone: value, }); }} /> { this.setEmptyData(); }}> 重置 this.getSearchData()}> 查询 ); return ( (this.drawer = el)} onOpenChange={(open) => this.openStatus(open)} drawerBackgroundColor="#ccc" drawerWidth={300}> this.renderItem(item)} refreshControl={ { this.initData(); }} /> } ListFooterComponent={this._renderFooter.bind(this)} onEndReached={this._onEndReached.bind(this)} onEndReachedThreshold={0.1} /> ); } componentDidMount() { this.getWaitInvoiceList(); } //判断是否点击了查询 shouldComponentUpdate( nextProps: Readonly

, nextState: Readonly, nextContext: any, ): boolean { if (nextProps.route.params !== undefined) { if (nextProps.route.params.isShow) { if (this.state.clickNum === 0) { this.setState({ isShowSearch: true, clickNum: this.state.clickNum++, }); this.drawer.openDrawer(); this.props.navigation.setParams({ isShow: false, }); } } } return true; } //查询菜单开关状态 openStatus = (open) => { if (open) { } else { // this.props.children.setClickNum(); } }; // 点击开始和结束时间显示时间选择器 isShowDateSelect = (dateStatus) => { // 开始时间和结束时间选择器显示 1:开始时间 2:结束时间 if (dateStatus === 1) { this.setState({ beginDateShow: true, }); } else { this.setState({ endDateShow: true, }); } }; // 获取开始时间 beginDateChange = (event, date) => { let dateText = GetDateString(date); this.setState({ beginDate: date, beginDateShow: false, beginDateText: dateText, }); }; //获取结束时间 endDateChange = (event, date) => { let dateText = GetDateString(date); this.setState({ endDate: date, endDateShow: false, endDateText: dateText, }); }; // 重置 setEmptyData = () => { this.drawer.closeDrawer(); this.initData(); }; // 查询 getSearchData = () => { this.drawer.closeDrawer(); this.setState({ listData: [], isLoading: false, showFoot: 0, }); pageNo = 1; this.getWaitInvoiceList(); }; //数据初始化 initData = () => { this.setState({ listData: [], isLoading: false, showFoot: 0, beginDate: new Date(), beginDateText: '开始时间', endDate: new Date(), endDateText: '结束时间', beginDateShow: false, endDateShow: false, customerName: '', customerPhone: '', status: 2, }); pageNo = 1; this.getWaitInvoiceList(); }; //获取抬头列表数据 getWaitInvoiceList = async () => { let beginTime = ''; let endTime = ''; if (this.state.beginDateText !== undefined) { if (this.state.beginDateText !== '开始时间') { beginTime = this.state.beginDateText + ' 00:00:00'; } } if (this.state.endDateText !== undefined) { if (this.state.endDateText !== '结束时间') { endTime = this.state.endDateText + ' 23:59:59'; } } console.log('岑氏'); console.log(beginTime); console.log(endTime); let account = await RetrieveData('account'); let token = await RetrieveData('token'); let company = JSON.parse(await RetrieveData('company')); if (token && account) { const url = '/sys/fapiao/todo/findPage'; let res = await RequestNetwork( url, token, { mobile: account, reqChannel: 3, pageNum: pageNo, pageSize: 10, createTimeEnd: endTime, createTimeBegin: beginTime, customerName: this.state.customerName, customerMobile: this.state.customerPhone, belongEntTaxId: company.entTaxId, status: this.state.status, }, false, 2, ); if (res) { if (res.code === 0) { if (res.data.pages > 0) { totalPage = res.data.pages; this.setList(res.data.records); } else { totalPage = res.data.pages; this.setState({ listData: [], showFoot: 1, }); } } else { await this.abnormalMessage(res); } } } }; //设置抬头列表 setList = (data) => { let listDatas = data.map((_, i) => ({ key: data[i].recordId, customerName: data[i].customerName, customerEntTaxId: data[i].customerEntTaxId, address: data[i].address, contactPhone: data[i].contactPhone, bankName: data[i].bankName, bankAccountNo: data[i].bankAccountNo, customerEmail: data[i].customerEmail, customerMobile: data[i].customerMobile, remark: data[i].remark, belongEntTaxId: data[i].belongEntTaxId, entName: data[i].entName, createTime: data[i].createTime, totalAmountTaxes: data[i].totalAmountTaxes, invoiceCategory: data[i].invoiceCategory, interactType: data[i].interactType, interactTypeDetail: data[i].interactTypeDetail, customerType: data[i].customerType, status: data[i].status, })); let list = this.state.listData.concat(listDatas); this.setState({ listData: list, showFoot: 0, }); }; //删除发票抬头信息 deleteData = async (data) => { let company = JSON.parse(await RetrieveData('company')); let account = await RetrieveData('account'); let token = await RetrieveData('token'); if (account && token) { const url = '/sys/fapiao/todo/delete'; let res = await RequestNetwork( url, token, { mobile: account, reqChannel: 3, delList: [ { recordId: data.item.key, belongEntTaxId: company.entTaxId, status: 2, }, ], }, false, 1, ); if (res) { if (res.code === 0) { ToastShow(1, '删除成功!'); await this.cleanData(); } else { ToastShow(1, res.msg); } } } }; // 提交开票 submitInvoice = async (data) => { let account = await RetrieveData('account'); let token = await RetrieveData('token'); if (token && account) { const url = '/sys/fapiao/todo/findCmdParam'; let res = await RequestNetwork( url, token, { recordId: data.item.key, }, false, 2, ); if (res) { if (res.code === 0) { res.data.cmdParamObject.REQUEST_COMMON_FPKJ.TTLX = data.item.customerType; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_MC = data.item.customerName; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_NSRSBH = data.item.customerEntTaxId; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_DZ = data.item.address; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_DH = data.item.contactPhone; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_KHHMC = data.item.bankName; res.data.cmdParamObject.REQUEST_COMMON_FPKJ.SPF_YHZH = data.item.bankAccountNo; const url = '/sys/fapiao/todo/commit'; let response = await RequestNetwork( url, token, { mobile: account, reqChannel: 3, interactType: data.item.interactType, interactTypeDetail: data.item.interactTypeDetail, cmdParam: res.data.cmdParamObject, todoRecordId: data.item.key, }, false, 1, ); if (response) { if (response.code === 0) { DeviceEventEmitter.emit('updateStatistics'); ToastShow(1, '开票成功!'); await this.cleanData(); } else { ToastShow(1, response.msg); } } } else { ToastShow(1, res.msg); } } } }; //加载列表list数据 renderItem = (data) => ( 发票抬头:{data.item.customerName} 税号:{data.item.customerEntTaxId} {data.item.invoiceCategory === 1 ? ( 增值税普通电子发票 ) : data.item.invoiceCategory === 2 ? ( 增值税电子专用发票 ) : data.item.invoiceCategory === 3 ? ( 增值税普通纸质发票 ) : data.item.invoiceCategory === 4 ? ( 增值税专用纸质发票 ) : ( )} {data.item.status === 2 ? ( 待提交 ) : data.item.status === 3 ? ( 已提交 ) : data.item.status === 4 ? ( 开票成功 ) : data.item.status === 5 ? ( 开票失败 ) : ( )} ¥{data.item.totalAmountTaxes} {data.item.createTime} {data.item.status === 2 ? ( { this.deleteData(data); }}> 删除 { this.submitInvoice(data); }}> 点击开票 ) : ( )} ); //上拉加载 _onEndReached() { if (this.state.showFoot === 0) { if (pageNo >= totalPage) { this.setState({showFoot: 1}); return; } else { pageNo++; this.setState({showFoot: 2}); //获取数据 this.getWaitInvoiceList(); } } } //列表尾部显示 _renderFooter = () => { if (this.state.showFoot === 1) { return ( 没有更多数据了 ); } else if (this.state.showFoot === 2) { return ( 正在加载更多数据... ); } else if (this.state.showFoot === 0) { return ( ); } }; //获取查询待开发票状态 statusChange = (select) => { let status = ''; if (select.length > 0) { status = select[0]; } this.setState({ status: status, }); }; // 处理网络请求数据 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); } }; }