ApprovalUserAdd.js 4.6 KB
/**
 * Created by tdzl2003 on 12/18/16.
 */
import React, {Component} from "react";
import {
    Image,
    TouchableOpacity,
    View,
    StyleSheet,
    Text,
    Alert
} from "react-native";
const addImg = require('../img/add-icon.png');
const deleteImg = require('../img/delete.png');

export default class ApprovalUserAdd extends Component {

    constructor(props){
        super(props);
        this.state = {
            tenantId:global.tenantId,
            tenantName:global.tenantShortName,
            userList : []
        };
    }

    render() {
        return (
            <View style={styles.addList}>
                { this.state.userList.map((v, i) => this._renderUser(v, i))}

                <View style={styles.addItem}>
                    <TouchableOpacity style={styles.addItemLayout} onPress={()=>{this.addUser()}}>
                        <View style={[styles.addItemImg,styles.addItemImgOp]}><Image style={{  width:12,height:12}}  source={addImg}  resizeMode="contain"/></View>
                        <View style={styles.addItemName}><Text style={[styles.addItemNameText,styles.addItemNameTextOp]}>添加</Text></View>
                    </TouchableOpacity>
                </View>

            </View>
        );
    }
    _renderUser = (v, i) =>{
        return (
            <View style={styles.addItem} key={i}>
                <View style={styles.addItemLayout}>
                    <View style={styles.addItemImg}>
                        {!v.avatar&&<Text style={styles.addItemImageText}>{v.shortName}</Text>}
                        {v.avatar&& <Image style={styles.addItemImage}  source={{uri:v.avatar}} resizeMode="contain"></Image>}
                    </View>
                    <View style={styles.addItemName}><Text style={styles.addItemNameText}>{v.name}</Text></View>
                    <TouchableOpacity style={styles.addItemDelete} onPress={(v)=>{this._delete(v,i)}}>
                        <Image style={styles.addItemDeleteIcon}  source={deleteImg} resizeMode="contain"/>
                    </TouchableOpacity>
                </View>
            </View>
        )
    };

    addUser=()=>{
        this.props.navigation.navigate("Employee",{status:"add",callback:this.callback,tenantId:this.state.tenantId,tenantName:this.state.tenantName})
    };
    _delete=(v,i)=>{
        let _this=this;
        Alert.alert(
            '删除',
            '确定删除?',
            [
                {text: '取消', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
                {text: '确定', onPress: () => {
                        let userList=this.state.userList;
                        userList.splice(i,1);
                        this.setState({
                            userList:userList
                        });
                    }},
            ]
        )

    };
    callback=(data)=>{
        console.log(data);
        let _this=this;
        let userList=this.state.userList;

        if(data.name.length>2){
            data.shortName=data.name.substring(data.name.length-2)
        }  else {
            data.shortName=data.name;
        }
        userList.push(data);
        this.setState({
            userList:userList
        });
    }

}

const styles = StyleSheet.create({
    addList:{
        flexDirection:"row",
        paddingTop:10,
        flexWrap:"wrap",
    },
    addItem:{
        width:"20%",
        height:70,
        marginBottom:10,
        justifyContent:"center",
        flexDirection:"row",
    },
    addItemLayout:{
        height:70,
        width:50,
    },
    addItemImg:{
        height:50,
        width:50,
        justifyContent:"center",
        alignItems:"center",
        borderRadius:3,
        backgroundColor: "#39f",
    },
    addItemImageText:{
        color:"#fff",
        fontSize:10,
    },
    addItemImage:{
        height:50,
        width:50,
    },
    addItemName:{
        height:20,
        width:50,
        justifyContent:"center",
        flexDirection:"row",
    },
    addItemNameText:{
        fontSize:12,
        color:"#333333",
        textAlign: "center",
        padding:3,
    },
    addItemDelete:{
        position: "absolute",
        width:10,
        height:10,
        right:-5,
        top:-5,
    },
    addItemDeleteIcon:{
        width:10,
        height:10
    },
    addItemImgOp:{
        borderWidth:1,
        borderColor:"#999",
        backgroundColor: "transparent",
    },
    addItemNameTextOp:{
        color:"#999",

    },
    btn:{
        height:50,
        backgroundColor:"#39f",
        justifyContent:"center",
        alignItems:"center",
    },
    btnText:{
        color:"#fff",
        fontSize:18
    }

});