123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624 |
- 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: () => <HomeNavigator />,
- // 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 <Loading />
- const navigation = addNavigationHelpers({
- dispatch,
- state: router,
- addListener,
- })
- return <AppNavigator navigation={navigation} />
- }
- }
- export function routerReducer(state, action = {}) {
- return AppNavigator.router.getStateForAction(action, state)
- }
- export default Router
|