import React, {Component} from 'react'; import {StyleSheet, View, Text, DeviceEventEmitter, ScrollView,TouchableOpacity, Dimensions} from 'react-native'; import {Button} from '@ant-design/react-native'; import ReadUHF from "../../utils/ReadUHF"; import Barcode from "react-native-barcode-builder"; import SyncStorage from 'sync-storage'; let screenW = Dimensions.get('window').width; class DesktopHome extends Component { constructor(props) { super(props); this.state = { data: [], userData: [], error: 0, isStart: true, timerID: [], }; } static navigationOptions = ({navigation}) => { return { headerRight: ( navigation.navigate("setPower")}> 设置 ) }; }; componentDidMount() { ReadUHF.changeFlag(0) DeviceEventEmitter.addListener('MsgFromAndroid', this._addCode); DeviceEventEmitter.addListener('onKeyDown', this.onKeyDown); DeviceEventEmitter.addListener('pushPower', this.setPower); } componentWillUnmount() { ReadUHF.stopRead() } _addCode = (item) => { const str = JSON.parse(item) // 防止重复扫描 let {data, userData, error} = this.state; const product_index = userData.indexOf(str['userData']) if (product_index < 0) { userData.push(str['userData']) data.unshift(str) if (str['error']) { error += 1 } this.setState({data, userData, error}) } } _start = () => { let {isStart} = this.state; ReadUHF.doRead() this.setState({isStart: !isStart}) } _clear = () => { this.setState({userData: [], data: [], error: 0}) } onKeyDown = () => { let {isStart} = this.state; this.setState({isStart: !isStart}) } setPower = (power) => { SyncStorage.set('power', parseInt(power)); } dianYaRender = (item, index) => { const assetID = item.assetID.slice(7, 21) const releaseDates = item.releaseDate.split('-') const releaseDate = releaseDates[0] + "年" + releaseDates[1] + "月" return ( 计量{item.kind} 型号:{item.model} 电压等级:{item.voltageLevel} 绕组数量:{item.secondWindingCount} 二次电压 准确等级 功率因数 生产日期 {item.secondVoltage} {item.accuracy} {item.powerFactor} {releaseDate} 安装场所:{item.place} 额定负荷:{item.ratedLoad} 电压因数:{item.voltageFactor} {item.manufacturer} {item.districtText} NO.{assetID} {item.assetID} ) } dianLiuRender = (item, index) => { const assetID = item.assetID.slice(7, 21) const releaseDates = item.releaseDate.split('-') const releaseDate = releaseDates[0] + "年" + releaseDates[1] + "月" return ( 计量{item.kind} 型号:{item.model} 电压等级:{item.voltageLevel} 绕组数量:{item.secondWindingCount} 一次电流 二次电流 功率因数 生产日期 {item.firstCurrent} {item.senondCurrent} {item.powerFactor} {releaseDate} 安装场所:{item.place} 额定负荷:{item.ratedLoad} 准确等级:{item.accuracy} {item.manufacturer} {item.districtText} NO.{assetID} {item.assetID} ) } errorRender = (item, index) => { return ( {item.error_msg} ) } render() { let {isStart} = this.state; const start_text = isStart ? '开始识别' : '停止识别' return ( { this.state.data.map((item, index) => { if (item.error) { return this.errorRender(item, index) } else if (item.kind.indexOf('电压') > -1) { return this.dianYaRender(item, index) } else if (item.kind.indexOf('电流') > -1) { return this.dianLiuRender(item, index) } }) } 合计:{this.state.data.length} 失败:{this.state.error} ); } } const styles = StyleSheet.create({ container: { flex: 1 }, button: { borderRadius: 5, marginHorizontal: 10, marginBottom: 2, marginTop: 5, borderWidth: 0, backgroundColor: "#2b90ea" }, textColor: { color: '#333', textAlign: 'center', }, textColor3: { color: '#333', textAlign: 'center', width: (screenW - 9) / 3, }, textColor4: { color: '#333', textAlign: 'center', width: (screenW - 8) / 4, }, textColor2: { color: '#333', textAlign: 'center', width: (screenW - 10) / 2, }, mainView: { margin: 5, borderWidth: 0.5, borderColor: '#7b7b7b', }, betweenView: { flexDirection: 'row', justifyContent: 'space-between', borderTopWidth: 0.5, borderTopColor: '#7b7b7b', }, centerWidth: { borderLeftWidth: 0.5, borderRightWidth: 0.5, borderLeftColor: '#7b7b7b', borderRightColor: '#7b7b7b', alignItems: 'center', flexDirection: 'row', }, centerView: { alignItems: 'center', flexDirection: 'row', }, rightWidth: { borderRightWidth: 0.5, borderRightColor: '#7b7b7b', alignItems: 'center', flexDirection: 'row', }, }) export default DesktopHome;