无法在本机反应中映射数组值

时间:2019-06-06 09:03:19

标签: javascript reactjs react-native

我正在道具“ ticketDetailsInfo”中获得低于值的值,之后我获取了followupDetails数组,下面是来自服务器的followupDetails的值。 ,但在进行映射followupDetails.map()映射时,其抛出错误followupDetails.map()不是函数。虽然我必须获取数组值并在ui中显示。请纠正我我要去哪里。

//数组值是

const {ticketDetailsInfo} = this.props

const {troubleTicketDetails,workFlowDetails,followupDetails} = ticketDetailsInfo;

 "followupDetails": [
            {
              "INCIDENTNUMBER": "16739",
              "INCIDENTINITIATOR": "U",
              "INCIDENTTIMESTAMP": "06/06/2019 16:25:36",
              "NOTES": "Test",
              "USERID": "597",
              "STATUSUPDATED": null,
              "USERGROUPNAME": "clmui",
              "BINARYOBJECT": "N"
            },
            {
              "INCIDENTNUMBER": "16738",
              "INCIDENTINITIATOR": "E",
              "INCIDENTTIMESTAMP": "06/06/2019 16:25:36",
              "NOTES": "Test",
              "USERID": "597",
              "STATUSUPDATED": null,
              "USERGROUPNAME": "clmui",
              "BINARYOBJECT": "N"
            }
          ],

import React, { Component } from 'react';
import { ImageBackground, ScrollView } from 'react-native';
import { Body, Button, Card, CardItem, Text, View } from 'native-base';
import styles from '../requestTab/TroubleTicketDetails.style';
import Header from '../../ui/header';
import BG from '../../../images/bg.jpg';
import { IconNormal } from '../../ui/icons';
import _ from 'lodash';
import { RegularText, SmallText } from '../../ui/text';
import StepIndicator from 'react-native-step-indicator';
import LoadingSpinner from '../../ui/spinner';

class TroubleTicketDetails extends Component {
  constructor(props) {
    super(props);
    const {MSISDN,ticketDetailsInfo} = this.props;

    this.state = {
      title: 'Trouble Ticket',
      icon: "sim",
      mobile: MSISDN,
      StepsVaue:[],
      Steplabels:[],
      currentStepPosition:[],
      SteplabelconcatValue:[],
      SteplabelsTimes:[]
    };
  }

  iconSymbol = (priority) => {
    let symbol = '';
    let color = '';
    if (priority === '10') {
      symbol = 'exclamation';
      color = 'red';
    } else if (priority === '1') {
      symbol = 'arrowdown';
      color = 'white';
    } else {
      symbol = '';
      color = '';
    }
    return { symbol: symbol, color: color };
  };

  componentDidMount() {}

  componentDidUpdate(prevProps, prevState, snapshot) {}

  componentDidCatch(error, errorInfo) {
    console.log("TroubleTicketHistory Error", error);
    console.log("TroubleTicketHistory ErrorInfo", errorInfo);
  } 

  loadScreen() {
    //RedirectScreen(this.props.navigation, 'SimSwap', this.state);
  }

  renderLabel = ({ position, stepStatus, SteplabelsTimes, currentPosition }=this.state) => {

    return (
      <Text
        style={
          position === currentPosition  ? styles.stepLabelSelected  : styles.stepLabel
        }
      >
        {SteplabelsTimes}
      </Text>
    )

  }

  render() {

    let { title, mobile, icon, currentStepPosition, Steplabels } = this.state;
    let { navigation,ticketDetailsInfo,referenceNumber,TICKET_TYPE_DESCRIPTION,priority, currentStatus,convertedDate } = this.props;
    const{troubleTicketDetails,workFlowDetails,followupDetails} =ticketDetailsInfo;
    console.log("followupDetails" , followupDetails)

    StepsVaue = workFlowDetails.currentNextActivity;

      Steplabels = StepsVaue.map(StepsVaue => {
           return StepsVaue._activityName;
    });

    SteplabelsTimes = StepsVaue.map(StepsVaue => {
      return StepsVaue._maxHoldTime;
});
    // SteplabelconcatValue = StepsVaue.map(StepsVaue => {
    //   return StepsVaue._activityName.concat("_",StepsVaue._maxHoldTime);
    // });

    currentStepPosition = StepsVaue.filter((item) => {
      return item._activityStatus === "I"
});

const stepIndicatorStyles = {
      stepIndicatorSize: 30,
      currentStepIndicatorSize:40,
      separatorStrokeWidth: 1,
      currentStepStrokeWidth: 5,
      stepStrokeCurrentColor: '#fe7013',
      separatorFinishedColor: 'black',
      separatorUnFinishedColor: 'black',
      stepIndicatorFinishedColor: 'green',
      stepIndicatorUnFinishedColor: '#aaaaaa',
      stepIndicatorCurrentColor: '#ffffff',
      stepIndicatorLabelFontSize: 0,
      currentStepIndicatorLabelFontSize: 0,
      stepIndicatorLabelCurrentColor: '#000000',
      stepIndicatorLabelFinishedColor: '#ffffff',
      stepIndicatorLabelUnFinishedColor: 'rgba(255,255,255,0.5)',
      labelColor: 'black',
      labelSize: 15,
      currentStepLabelColor: 'black'
    }

    if(!_.isEmpty(referenceNumber) && (StepsVaue[0])) {

    return (

      <ImageBackground source={BG} style={styles.imgBG}>
        <ScrollView>
          <View style={styles.container}>
            <View>
              <Header title={title} subtitle={mobile} icon={icon} navigation={navigation}/>
            </View>
            <View style={styles.contentContainer}>
              <View style={{ padding: 10 }}>
                <View style={{marginBottom: 10}}>
                    <Card>
                      <CardItem header style={{backgroundColor: '#23476B', width: '100%', justifyContent: 'space-between'}}>
                        <View style={{flexDirection:'column'}}>
                          <View>
                            <RegularText text={`${TICKET_TYPE_DESCRIPTION} ID : ${referenceNumber}`} textColor='#fff' style={{ fontWeight: 'bold' }}/>
                          </View>
                          <View>
                            <SmallText text={`Raised ${convertedDate}`} textColor="#fff"/>
                          </View>
                        </View>
                        <View style={{flexDirection:'row'}}>
                        <View style={{flexDirection:'row'}}>
                      <IconNormal icon={this.iconSymbol(priority).symbol} type="AntDesign" style={{ color: this.iconSymbol(priority).color , paddingTop: 5}}/>
                      </View>
                        {/* <IconNormal icon={this.iconSymbol(priority).symbol} type="AntDesign" style={{ color: this.iconSymbol(priority).color , paddingTop: 5}}/> */}
                        <View style={{backgroundColor:'orange', borderRadius:50,height: 28, paddingRight: 10, paddingLeft: 10, paddingTop: 5}}>
                          <SmallText text={`${currentStatus}`} textColor='white'/>
                        </View>
                        </View>
                      </CardItem>
                      <CardItem>
                        <Body>
                          <View style={{flexDirection:'row', justifyContent: 'space-between', width: '100%'}}>
                            {/* <View style={{flexDirection:'column'}}>
                              <View>
                                <SmallText text="Catagory" textColor="grey"/>
                              </View>
                              <View>
                                <Text style={{ fontWeight: 'bold', fontSize:14 }}>{troubleTicketDetails.cat1}</Text>
                              </View>
                            </View> */}
                            {troubleTicketDetails.cat2.length > 0 && 
                            <View style={{flexDirection:'column'}}>
                              <View>
                                <SmallText text="Sub-Category" textColor="grey"/>
                              </View>
                              <View>
                                <Text style={{ fontWeight: 'bold', fontSize:14 }}>{troubleTicketDetails.cat2}</Text>
                              </View>
                            </View>}
                            {troubleTicketDetails.cat3.length > 0 && 
                            <View style={{flexDirection:'column'}}>
                              <View>
                                <SmallText text="Sub-SubCategory" textColor="grey"/>
                              </View>
                              <View>
                                <Text style={{ fontWeight: 'bold', fontSize:14 }}>{troubleTicketDetails.cat3}</Text>
                              </View>
                            </View>}
                          </View>
                        </Body>
                      </CardItem>
                    </Card>
                  </View>
                <View>
                  <RegularText text={`WORKFLOW`} textColor='grey' style={{ fontWeight: 'bold', textAlign:'center', marginBottom:10 }}/>
                </View>
                <View style={{borderWidth:1, borderColor:'lightgrey', borderBottomColor:'white', padding:10, flexDirection:'column'}}>
                    <Card>
                      <CardItem>
                        <Body style={{justifyContent: 'center', alignItems: 'center'}}>
                            <View style={{flexDirection:'column'}}>
                              <RegularText text={` ${workFlowDetails.WRKFLW_DESC_V}`} textColor='green' style={{ fontWeight: 'bold' }}/>
                            </View>
                            <View style={{flexDirection:'column'}}>
                              <SmallText text={`Time Remaining is ${workFlowDetails.ESTIMATED_RESOLN_TM_N} Hours`} textColor='green' style={{ fontWeight: 'bold' }}/>
                            </View>
                        </Body>
                      </CardItem>
                    </Card>
                </View>
                <View style={{paddingLeft:10, height:300, marginBottom:10, borderWidth:1, borderColor:'lightgrey', borderTopColor:'white'}}>
                  <StepIndicator
                       customStyles={stepIndicatorStyles}
                       currentPosition={currentStepPosition.length}
                       stepCount={Steplabels.length}
                       labels={Steplabels}
                       renderLabel ={this.renderLabel()}
                       direction="vertical"
                  />
                </View>
                <View>

                  <RegularText text={`NOTES`} textColor='grey' style={{ fontWeight: 'bold', textAlign:'center', marginBottom:10 }}/>
                </View>


                <View style={{marginLeft:10,marginRight:10}}>

                {Array.isArray(followupDetails) && followupDetails.map(
                  ({  INCIDENTINITIATOR, INCIDENTTIMESTAMP,NOTES, USERGROUPNAME}, index) => {
                    var INCIDENTINITIATOR_Value;
                    if(INCIDENTINITIATOR =="U"){
                      INCIDENTINITIATOR_Value ="USER";
                    }
                    else{
                      INCIDENTINITIATOR_Value ="CUSTOMER";
                    }


                       <View style={{marginBottom: 10}} key={index}>
                    <Card>
                      <CardItem header style={{backgroundColor: '#fff',  justifyContent: 'space-between', borderBottomColor: '#f1f1f1', borderBottomWidth: 1}}>
                      <View style={{flexDirection:'column'}}>
                          <View style={{backgroundColor:'lightgrey',  borderRadius:50,height: 28, paddingRight: 10, paddingLeft: 10, paddingTop: 5}}>
                            <SmallText text={`${INCIDENTINITIATOR_Value}`} textColor='grey'/>
                          </View>
                          <View>
                            <Text style={{ fontSize:14 }}> {NOTES} </Text>
                          </View>
                        </View>
                      </CardItem>
                      <CardItem>
                        <Body>
                          <View style={{flexDirection:'row', justifyContent: 'space-between', width: '100%'}}>
                              <View>
                                <SmallText text={`${USERGROUPNAME}`} textColor="grey"/>
                              </View>
                              <View>
                                <SmallText text={`${INCIDENTTIMESTAMP}`} textColor="grey"/>
                              </View>
                          </View>
                        </Body>
                      </CardItem>
                    </Card>

                    </View>


                     })
                    }
                    </View>}




                  {/* <Button block bordered dark>
                    <Text>Add a Note</Text>
                  </Button> */}
              </View>
            </View>
          </View>
        </ScrollView>
      </ImageBackground>
    );

  }else{
    return(
      <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <LoadingSpinner color="#00678F"/>
    </View>
    )
  }
  }
}
 /*<IconNormal icon={this.iconSymbol(priority).symbol} type="AntDesign" style={{ color: this.iconSymbol(priority).color , paddingTop: 5}}/> */

export default TroubleTicketDetails;

谢谢

0 个答案:

没有答案