List.js 2.03 KB
Newer Older
偏右's avatar
偏右 committed
1
import React, { Component } from 'react';
ddcat1115's avatar
ddcat1115 committed
2
import { routerRedux, Route, Switch, Redirect } from 'dva/router';
偏右's avatar
偏右 committed
3 4 5
import { connect } from 'dva';
import { Input } from 'antd';
import PageHeaderLayout from '../../layouts/PageHeaderLayout';
ddcat1115's avatar
ddcat1115 committed
6
import { getRoutes } from '../../utils/utils';
偏右's avatar
偏右 committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

@connect()
export default class SearchList extends Component {
  handleTabChange = (key) => {
    const { dispatch, match } = this.props;
    switch (key) {
      case 'articles':
        dispatch(routerRedux.push(`${match.url}/articles`));
        break;
      case 'applications':
        dispatch(routerRedux.push(`${match.url}/applications`));
        break;
      case 'projects':
        dispatch(routerRedux.push(`${match.url}/projects`));
        break;
      default:
        break;
    }
  }

  render() {
    const tabList = [{
      key: 'articles',
      tab: '文章',
    }, {
      key: 'applications',
      tab: '应用',
    }, {
      key: 'projects',
      tab: '项目',
    }];

    const mainSearch = (
      <div style={{ textAlign: 'center' }}>
        <Input.Search
          placeholder="请输入"
          enterButton="搜索"
          size="large"
          onSearch={this.handleFormSubmit}
          style={{ width: 522 }}
        />
      </div>
    );

afc163's avatar
afc163 committed
51
    const { match, routerData, location } = this.props;
ddcat1115's avatar
ddcat1115 committed
52
    const routes = getRoutes(match.path, routerData);
偏右's avatar
偏右 committed
53 54 55 56 57 58

    return (
      <PageHeaderLayout
        title="搜索列表"
        content={mainSearch}
        tabList={tabList}
afc163's avatar
afc163 committed
59
        activeTabKey={location.pathname.replace(`${match.path}/`, '')}
偏右's avatar
偏右 committed
60 61 62 63 64 65 66
        onTabChange={this.handleTabChange}
      >
        <Switch>
          {
            routes.map(item =>
              (
                <Route
ddcat1115's avatar
ddcat1115 committed
67 68
                  key={item.key}
                  path={item.path}
偏右's avatar
偏右 committed
69
                  component={item.component}
ddcat1115's avatar
ddcat1115 committed
70
                  exact={item.exact}
偏右's avatar
偏右 committed
71 72 73 74
                />
              )
            )
          }
ddcat1115's avatar
ddcat1115 committed
75
          <Redirect exact from={`${match.path}`} to={`${match.path}${routes[0]}`} />
偏右's avatar
偏右 committed
76 77 78 79 80
        </Switch>
      </PageHeaderLayout>
    );
  }
}