import React, {Component} from 'react';
import {
View,
Text,
TouchableOpacity,
StyleSheet,
Dimensions,
FlatList,
PixelRatio,
DeviceEventEmitter,
Image,
} from 'react-native';
import {List, SwipeAction} from '@ant-design/react-native';
import public_css from '../../source/css/public_css';
import {RoundingData} from '../../source/inspect/inspect';
import invoice_css from './invoice_css';
import { ToastShow } from "../../components/toast/toast";
export default class invoice_product_list extends Component {
constructor(props) {
super(props);
this.props.navigation.dangerouslyGetParent().setOptions({
tabBarVisible: false,
});
this.state = {
listData: [],
product_number_total: 0,
amount_total: 0.0,
tax_rate_total: 0.0,
};
}
render() {
return (
{/**/}
{/* 产品名称*/}
{/* 产品数量*/}
{/* 规格型号*/}
{/* 单价*/}
{/* 税率(%)*/}
{/**/}
this.renderItem(item)}
/>
共{this.state.product_number_total}个产品
开票金额:
{RoundingData(parseFloat(this.state.amount_total)).replace(
/(\d)(?=(\d{3})+(?:\.\d+)?$)/g,
'$1,',
)}
元
税额:{RoundingData(parseFloat(this.state.tax_rate_total))}
this.submitData()}>
下一步
);
}
componentDidMount(): void {
//收到监听
this.listener = DeviceEventEmitter.addListener('产品监听', data => {
//收到监听后想做的事情
this.setList(data);
});
}
componentWillUnmount() {
//移除监听
if (this.listener) {
this.listener.remove();
}
}
selectProduct = () => {
this.setState({
productVisible: !this.state.productVisible,
});
};
//提交数据到下一步
submitData = () => {
if (this.state.listData.length > 0) {
this.props.navigation.navigate(
'invoice_customer_information',
this.state,
);
} else {
ToastShow(1, '编辑成功!');
}
};
//加载list列表
setList = data => {
let numberTotal =
parseInt(this.state.product_number_total) + parseInt(data.XMSL);
let taxRateTotal = this.state.tax_rate_total + parseFloat(data.SE);
let amountTotal =
this.state.amount_total + parseFloat(data.XMJE) + parseFloat(data.SE);
let list = this.state.listData.concat(data);
this.setState({
listData: list,
amount_total: amountTotal,
tax_rate_total: taxRateTotal,
product_number_total: numberTotal,
});
};
//加载items
renderItem = data => (
{/**/}
{/* {data.item.XMMC} */}
{/* {data.item.XMSL} */}
{/* {data.item.GGXH}*/}
{/* {data.item.XMDJ}*/}
{/* {data.item.SL * 100}*/}
{/**/}
{/**/}
{/* */}
{/* 金额合计:*/}
{/* {data.item.XMSL} */}
{/* */}
{/* */}
{/* 税额合计:*/}
{/* {data.item.XMSL} */}
{/* */}
{/**/}
{data.item.XMMC}
规格:{data.item.GGXH}
税率:{data.item.SL * 100}
税额:{data.item.SE}
单价:{data.item.XMDJ}
数量:{data.item.XMSL}
小计:
{RoundingData(data.item.XMSL * parseFloat(data.item.XMDJ))
.toString()
.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, '$1,')}
);
//左滑删除
right = data => [
{
text: '删除',
onPress: () => {
this.deleteData(data.item);
},
style: {backgroundColor: 'red', color: 'white'},
},
];
//删除产品信息
deleteData = data => {
let listData = this.state.listData;
let numberTotal =
parseInt(this.state.product_number_total) - parseInt(data.XMSL);
let taxRateTotal =
parseFloat(this.state.tax_rate_total) - parseFloat(data.SE);
let amountTotal =
parseFloat(this.state.amount_total) - data.XMJE - parseFloat(data.SE);
const prevIndex = listData.findIndex(item => item.key === data.SPBM);
listData.splice(prevIndex, 1);
this.setState({
listData: listData,
amount_total: amountTotal,
tax_rate_total: taxRateTotal,
product_number_total: numberTotal,
});
};
}
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: {
textAlign: 'center',
color: 'white',
},
inputView: {
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)',
},
textInputStyle: {
marginRight: 10,
marginLeft: 20,
fontSize: 14,
marginTop: 4,
},
});