import React, { PureComponent } from 'react' import { BackHandler, Animated, Easing } from 'react-native' import { StackNavigator, TabNavigator, TabBarBottom, addNavigationHelpers, NavigationActions, } from 'react-navigation' import { initializeListeners, createReduxBoundAddListener, createReactNavigationReduxMiddleware, } from 'react-navigation-redux-helpers' import { connect } from 'react-redux' import Testaa from './testaaa' import { isIphoneX } from './containers/common/theme/config' import { SETHEADER } from './containers/Global' //首页Tab里的内容 import Home from './containers/home/Home' import CommodityHome from './containers/commodity/CommodityHome' import MineHome from './containers/mine/MineHome' import OrderHome from './containers/order/OrderHome' import ShoppingCartHome from './containers/shoppingcart/ShoppingCartHome' //最近浏览更多 import RecentViewMore from './containers/home/RecentView' // 商家公告 import Announcement from './containers/home/AnnouncementTab' import AnnounceDetail from './containers/home/announcement/AnnounceDetail' //待审核 import Pending from './containers/home/pending/Pending' // 待发货 import Unshipped from './containers/home/unshipped/Unshipped' // 待收货 import Dispatched from './containers/home/dispatched/Dispatched' // 补货 import Replenishment from './containers/home/replenishment/Replenishment' // 商品展示 import CommodityShowbase from './containers/commodity/CommodityShowbase' // 商品详情 /** * info:订单 * **/ // 订单编辑 import OrderEdit from './containers/order/OrderEdit' // 订单支付 import OrderPay from './containers/order/orderamanage/OrderPay' // 订单详情 import OrderDetail from './containers/order/OrderDetail' // 订单日志 import OrderLog from './containers/order/OrderLog' // 退货申请 import ReturnApplication from './containers/order/ordertoptab/returnsign/ReturnApplication' // 退货编辑 import ReturnEdit from './containers/order/ordertoptab/returnsign/ReturnEdit' // 促销选商品 import OrderGifts from './containers/order/orderamanage/OrderGifts' // 退货详情 import ReturnDetail from './containers/order/ordertoptab/returnsign/ReturnDetail' // 选择发票 import SelectInvoice from './containers/common/SelectInvoice' // 选择地址 import SelectAdress from './containers/common/SelectAdress' import CommodityTab from './containers/commodity/commoditydetail/Tab' import DeliveryDetail from './containers/order/ordertoptab/deliverysign/DeliveryDetail' import Loading from './containers/Loading' import Login from './containers/Login' import LogForget from './containers/LogForget' /** * info:我的 * **/ // 账户 import Account from './containers/mine/header/Account' // 费用 import Cost from './containers/mine/header/Cost' import CostDetail from './containers/mine/header/CostDetail' // 信用 import Credit from './containers/mine/header/Credit' // 应付对账 import PayReconciliation from './containers/mine/viewlist/PayReconciliation' // 费用对账 import CostReconciliation from './containers/mine/viewlist/CostReconciliation' import ReconciliationDetail from './containers/mine/viewlist/ReconciliationDetail' // 基本信息 import BasicInfo from './containers/mine/viewlist/BasicInfo' // 客户收货地址 import CustomerAddress from './containers/mine/viewlist/CustomerAddress' // 客户联系人 import CustomerContact from './containers/mine/viewlist/CustomerContact' // 我的供应商 import Supplier from './containers/mine/viewlist/Supplier' // 付款单登记 import PaymentRegister from './containers/mine/viewlist/paymentregister/PaymentRegister' // 付款单新增 import PaymentAdd from './containers/mine/viewlist/paymentregister/PaymentAdd' // 付款单关联订单界面 import PaymentAssociate from './containers/mine/viewlist/paymentregister/PaymentAssociate' // 支付单 import RechargeHome from './containers/mine/viewlist/recharge/RechargeHome' // 支付单新增 import RechargeAdd from './containers/mine/viewlist/recharge/RechargeAdd' import Setting from './containers/mine/Setting' const HomeNavigator = TabNavigator( { Home: { getScreen: () => Home, path: 'tab/Home', }, CommodityHome: { getScreen: () => CommodityHome, path: 'tab/CommodityHome', }, OrderHome: { getScreen: () => OrderHome, path: 'tab/OrderHome', }, ShoppingCartHomeTab: { getScreen: () => ShoppingCartHome, path: 'tab/ShoppingCartHomeTab', }, MineHome: { getScreen: () => MineHome, path: 'tab/MineHome', }, }, { initialRouteName: 'Home', lazy: true, tabBarComponent: TabBarBottom, tabBarPosition: 'bottom', swipeEnabled: false, animationEnabled: false, tabStyle: { backgroundColor: 'red' }, tabBarOptions: { activeTintColor: '#E70013', // 文字和图片选中颜色 inactiveTintColor: '#333', // 文字和图片未选中颜色 showIcon: true, // android 默认不显示 icon, 需要设置为 true 才会显示 }, // lazy: false } ) const MainNavigator = StackNavigator( { Home: { getScreen: () => HomeNavigator, path: 'tab/Home', navigationOptions: { header: null, }, }, CommodityHome: { getScreen: () => HomeNavigator, path: 'tab/CommodityHome', navigationOptions: { header: null, }, }, OrderHome: { getScreen: () => HomeNavigator, path: 'tab/OrderHome', navigationOptions: { header: null, }, }, ShoppingCartHomeTab: { getScreen: () => HomeNavigator, path: 'tab/ShoppingCartHome', navigationOptions: { header: null, }, }, MineHome: { getScreen: () => HomeNavigator, path: 'tab/MineHome', navigationOptions: { header: null, }, }, // HomeNavigator: { // screen: () => , // navigationOptions: { // header: null // } // }, //最近浏览更多 RecentViewMore: { screen: RecentViewMore, navigationOptions: { // header: null }, }, // RecentViewMore: () => RecentViewMore, // 商家公告 Announcement: { screen: Announcement, navigationOptions: { header: null, }, }, // 公告详情 AnnounceDetail: { screen: AnnounceDetail, navigationOptions: { header: null, }, }, //待审核 Pending: { screen: Pending, navigationOptions: { header: null, }, }, // 补货 Replenishment: { screen: Replenishment, navigationOptions: { header: null, }, }, // 待收货 Dispatched: { screen: Dispatched, navigationOptions: { header: null, }, }, // 待发货 Unshipped: { screen: Unshipped, navigationOptions: { header: null, }, }, // 商品展示 CommodityShowbase: { screen: CommodityShowbase, navigationOptions: { header: null, }, }, // 商品详情 CommodityTab: { screen: CommodityTab, navigationOptions: { header: null, }, }, // Detail: { // screen: Detail, // navigationOptions: { // header: null // } // }, ShoppingCartHome: { screen: ShoppingCartHome, navigationOptions: { header: null, }, }, // 订单发货详情 DeliveryDetail: { screen: DeliveryDetail, navigationOptions: { header: null, }, }, // 订单发货详情 OrderEdit: { screen: OrderEdit, navigationOptions: { header: null, }, }, // 订单支付 OrderPay: { screen: OrderPay, navigationOptions: { header: null, }, }, // 订单详情 OrderDetail: { screen: OrderDetail, navigationOptions: { header: null, }, }, // 订单日志 OrderLog: { screen: OrderLog, navigationOptions: { header: null, }, }, // 退货申请 ReturnApplication: { screen: ReturnApplication, navigationOptions: { header: null, }, }, // 促销选商品 OrderGifts: { screen: OrderGifts, navigationOptions: { header: null, }, }, // 选择发票 SelectInvoice: { screen: SelectInvoice, navigationOptions: { header: null, }, }, // 选择地址 SelectAdress: { screen: SelectAdress, navigationOptions: { header: null, }, }, // 退货详情 ReturnDetail: { screen: ReturnDetail, navigationOptions: { header: null, }, }, // 退货编辑 ReturnEdit: { screen: ReturnEdit, navigationOptions: { header: null, }, }, // 我的 // 账户-我的 Account: { screen: Account, navigationOptions: { header: null, }, }, // 费用-我的 Cost: { screen: Cost, navigationOptions: { header: null, }, }, // 费用详情-我的 CostDetail: { screen: CostDetail, navigationOptions: { header: null, }, }, // 信用-我的 Credit: { screen: Credit, navigationOptions: { header: null, }, }, // 应付对账-我的 PayReconciliation: { screen: PayReconciliation, navigationOptions: { header: null, }, }, // 费用对账-我的 CostReconciliation: { screen: CostReconciliation, navigationOptions: { header: null, }, }, // 对账详情-我的 ReconciliationDetail: { screen: ReconciliationDetail, navigationOptions: { header: null, }, }, // 基本信息-我的 BasicInfo: { screen: BasicInfo, navigationOptions: { header: null, }, }, // 客户收货地址-我的 CustomerAddress: { screen: CustomerAddress, navigationOptions: { header: null, }, }, // 客户联系人-我的 CustomerContact: { screen: CustomerContact, navigationOptions: { header: null, }, }, // 付款单登记-我的 PaymentRegister: { screen: PaymentRegister, navigationOptions: { header: null, }, }, // 付款单登记-关联订单界面 PaymentAssociate: { screen: PaymentAssociate, navigationOptions: { header: null, }, }, // 付款单新增-我的 PaymentAdd: { screen: PaymentAdd, navigationOptions: { header: null, }, }, // 支付单-我的 RechargeHome: { screen: RechargeHome, navigationOptions: { header: null, }, }, // 支付单新增-我的 RechargeAdd: { screen: RechargeAdd, navigationOptions: { header: null, }, }, // 供应商-我的 Supplier: { screen: Supplier, navigationOptions: { header: null, }, }, }, { initialRouteName: 'Home', // initialRouteName: "HomeNavigator", headerMode: 'float', } ) const AppNavigator = StackNavigator( { Main: { screen: MainNavigator, }, Login: { screen: Login, navigationOptions: { header: null, }, }, Testaa: { screen: Testaa, navigationOptions: { header: null, }, }, LogForget: { screen: LogForget, navigationOptions: { header: null, }, }, Setting: { screen: Setting, navigationOptions: { header: null, }, }, }, { initialRouteName: 'Login', // initialRouteName: "Testaa", lazy: true, headerMode: 'none', mode: 'modal', navigationOptions: { gesturesEnabled: false, }, transitionConfig: () => ({ transitionSpec: { duration: 300, easing: Easing.out(Easing.poly(4)), timing: Animated.timing, }, screenInterpolator: sceneProps => { const { layout, position, scene } = sceneProps const { index } = scene const height = layout.initHeight const translateY = position.interpolate({ inputRange: [index - 1, index, index + 1], outputRange: [height, 0, 0], }) const opacity = position.interpolate({ inputRange: [index - 1, index - 0.99, index], outputRange: [0, 1, 1], }) return { opacity, transform: [{ translateY }] } }, }), } ) const defaultGetStateForAction = MainNavigator.router.getStateForAction MainNavigator.router.getStateForAction = (action, state) => { // goBack返回指定页面 if (state && action.type === 'Navigation/BACK' && action.key) { const backRoute = state.routes.find(route => route.routeName === action.key) if (backRoute) { const backRouteIndex = state.routes.indexOf(backRoute) const purposeState = { ...state, routes: state.routes.slice(0, backRouteIndex + 1), index: backRouteIndex, } return purposeState } } return defaultGetStateForAction(action, state) } function getCurrentScreen(navigationState) { if (!navigationState) { return null } const route = navigationState.routes[navigationState.index] if (route.routes) { return getCurrentScreen(route) } return route.routeName } export const routerMiddleware = createReactNavigationReduxMiddleware( 'root', state => state.router ) const addListener = createReduxBoundAddListener('root') @connect(({ app, router }) => ({ app, router })) class Router extends PureComponent { componentWillMount() { BackHandler.addEventListener('hardwareBackPress', this.backHandle) let hederStyle = { height: 60, paddingTop: 10, paddingBottom: 0, } if (isIphoneX()) { hederStyle.height = 77 hederStyle.paddingTop = 17 hederStyle.paddingBottom = 34 } SETHEADER(hederStyle) } componentDidMount() { initializeListeners('root', this.props.router) } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.backHandle) } backHandle = () => { const currentScreen = getCurrentScreen(this.props.router) if (currentScreen === 'Login') { return true } if (currentScreen !== 'Home') { this.props.dispatch(NavigationActions.back()) return true } return false } render() { const { dispatch, app, router } = this.props if (app.loading) return const navigation = addNavigationHelpers({ dispatch, state: router, addListener, }) return } } export function routerReducer(state, action = {}) { return AppNavigator.router.getStateForAction(action, state) } export default Router