app.js 6.46 KB
/**
 * Created by DEV005 on 2017/8/23.
 */
import React, {Component} from 'react';
import {NativeModules, StyleSheet, View} from 'react-native';
import {Navigator} from 'xn-react-native-general-head'
import {createBottomTabNavigator} from 'react-navigation';
import AppService from "./service/AppService";
import {getConfigTheme, getFooterBottom, getHomeColor, xnToast} from "./utils/utils";
//横竖屏
//键盘启用与消失
import XnLoading from "./components/xnLoading"

import MyTodo from './pages/MyTodo';
import Search from './pages/Search';
import Detail from './pages/Detail';
import Comment from './pages/Comment';
import Employee from './pages/Employee';
import SelectAdd from './pages/SelectAdd';
import AddComment from './pages/AddComment';
import SearchPosition from "./pages/SearchPosition";
import CreateRem from "./pages/CreateRem";
import ProcessManagement from "./pages/ProcessManagement";
import CommitRem from "./pages/CommitRem";
import CommonWebView from "./pages/CommonWebView";
import SelectItemList from "./pages/public/SelectItemList";
import FlowConfirm from "./pages/FlowConfirm";
import {onResponseError} from "./utils/Common";

console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please use BackHandler instead.', 'source.uri should not be an empty string', 'Invalid props.style key'];
console.disableYellowBox = true; // 关闭全部黄色警告

export const TabNav = createBottomTabNavigator(
    {
        MyTodo: {screen: MyTodo},
        //Commit:{screen:Commit},
        CommitRem: {screen: CommitRem},
        // History:{screen:History},
    },
    {
        tabBarOptions: {
            //当前选中的tab bar的文本颜色和图标颜色
            activeTintColor: global.homeColor,
            //当前未选中的tab bar的文本颜色和图标颜色
            inactiveTintColor: 'rgba(0,0,0,0.5)',
            //是否显示tab bar的图标,默认是false
            showIcon: true,
            //是否将文本转换为大小,默认是true
            upperCaseLabel: false,
            //material design中的波纹颜色(仅支持Android >= 5.0)
            pressColor: global.homeColor,
            //按下tab bar时的不透明度(仅支持iOS和Android < 5.0).
            pressOpacity: 0.8,
            style: {
                backgroundColor: '#fff',
                height: 50
            },
            //tab 页指示符的样式 (tab页下面的一条线).
            indicatorStyle: {height: 0},
        },
        //tab bar的位置, 可选值: 'top' or 'bottom'
        tabBarPosition: 'bottom',
        //是否在切换tab页时使用动画
        animationEnabled: false,
        //是否懒加载
        lazy: true,
        //返回按钮是否会导致tab切换到初始tab页? 如果是,则设置为initialRoute,否则为none。 缺省为initialRoute。
        backBehavior: 'none',
    }
);

const NavigatorNav = Navigator(
    {
        TabNav: {screen: TabNav},
        AddComment: {screen: AddComment},
        SelectAdd: {screen: SelectAdd},
        Detail: {screen: Detail},
        Comment: {screen: Comment},
        Employee: {screen: Employee},
        Search: {screen: Search},
        CreateRem: {screen: CreateRem},
        FlowConfirm: {screen: FlowConfirm},
        SearchPosition: {screen: SearchPosition},
        ProcessManagement: {screen: ProcessManagement},
        CommonWebView: {screen: CommonWebView},
        SelectItemList: {screen: SelectItemList}
    },
    {
        defaultBack: '',
        title: '审批中心',      //必填项,标明小程序名称
        code: 'missionCenter',         //必填项,标明小程序code
        config: ''               //开发者选项, 此参数标明当前处于什么环境 (什么都不传为生产环境 开发传入DEV 测试传入TEST)
    }
)


class App extends Component {
    constructor(props) {
        super(props);
        this.state = {
            loading: true
        };
        if (Object.getOwnPropertyNames(props).length > 0) {
            global.initParam = {};
            for (key in props) {
                global.initParam[key] = props[key];
            }
        }
    }

    // 查询用户信息
    getPassportId = () => {
        //获取
        NativeModules.security.getPassportId().then((result) => {
                AppService.getPassport({id: result}).then((data) => {
                    if (!!data.errors && data.errors.length > 0) {
                        !!data.errors[0].message && xnToast(data.errors[0].message);
                        return
                    }
                    global.tenantId = data.passport.tenantId;
                    global.userId = data.passport.userId;
                    global.tenantName = data.passport.tenantName;
                    global.passport = data.passport;
                    global.passportId = data.passport.id;

                    this.getUser(data.passport.tenantId, data.passport.userId);

                });
            }
        ).catch((error) => {
            console.log(error)
        });

        //承租人简称
        NativeModules.security.getTenantName().then((result) => {
            global.tenantShortName = result;
        })
    };

    // 查询用户信息
    getUser = (tenantId, userId) => {
        let _this = this;
        let vm = {
            tenantId: tenantId,
            id: userId
        };
        AppService.getUser(vm).then(data => {
            if (!onResponseError(data, true)) {
                global.sourceId = data.user.sourceId;
                global.unionId = data.user.unionId;
                _this.setState({
                    loading: false
                });
            } else {
                _this.setState({
                    loading: false
                });
            }
        })

        AppService.getPosition({userId: userId}).then(data => {
            if (!onResponseError(data, true)) {
                global.position = data.result[0]
            }
        })
    };

    async componentWillMount() {
        let _this = this;
        await getConfigTheme();
        global.homeColor = await getHomeColor();
        this.getPassportId();

    }

    render() {
        return (
            <View style={styles.root}>
                {/*加载中*/}
                {this.state.loading && <XnLoading/>}
                {!this.state.loading && NavigatorNav}
            </View>
        )
    }
}

const styles = StyleSheet.create({
    root: {
        flex: 1,
        backgroundColor: "#fff",
        marginBottom: getFooterBottom()
    },
});
export default App;