|
@@ -0,0 +1,206 @@
|
|
|
+import React, { PureComponent } from 'react';
|
|
|
+import { connect } from 'react-redux';
|
|
|
+import { BrowserRouter, Route,Link } from 'react-router-dom';
|
|
|
+
|
|
|
+import { actionCreators } from './store';
|
|
|
+
|
|
|
+// import { CSSTransition } from 'react-transition-group';
|
|
|
+// const Submenu = (props) => {
|
|
|
+// return (
|
|
|
+// <div>
|
|
|
+// <input onFocus={props.handleInputFocus} />
|
|
|
+// {props.menu}</div>
|
|
|
+// )
|
|
|
+
|
|
|
+// }
|
|
|
+
|
|
|
+/**
|
|
|
+ * 可替换成无状态组件
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+class Content extends PureComponent {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ getListArea() {
|
|
|
+ const { list, menu } = this.props;
|
|
|
+ // const newList = list.toJS();
|
|
|
+ // const pageList = [];
|
|
|
+
|
|
|
+ // if (newList.length) {
|
|
|
+ // for (let i = (page - 1) * 10; i < page * 10; i++) {
|
|
|
+ // pageList.push(
|
|
|
+ // <SearchInfoItem key={newList[i]}>{newList[i]}</SearchInfoItem>
|
|
|
+ // )
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //可以直接获得输入框里的内容
|
|
|
+ menu;
|
|
|
+ if (true) {
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ {
|
|
|
+ list.map((item) => {
|
|
|
+ return <span className='ispan' type="text" key={item} >{item}</span>
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ render() {
|
|
|
+ const { inputValue, handleInputFocus,handleInputChange, menu, list } = this.props;
|
|
|
+ return (
|
|
|
+ <BrowserRouter>
|
|
|
+ <aside className="page-sidebar">
|
|
|
+ <div className="page-logo">
|
|
|
+ <a href="#modal-shortcut" className="page-logo-link press-scale-down d-flex align-items-center position-relative" data-toggle="modal">
|
|
|
+ <div className="icon-stack fa-2x">
|
|
|
+ <i className="base base-7 icon-stack-3x opacity-100 color-danger-900 "></i>
|
|
|
+ <i className="base base-4 icon-stack-2x opacity-100 color-danger-600 "></i>
|
|
|
+ <i className="fal fa-box icon-stack-1x opacity-100 color-white"></i>
|
|
|
+ </div>
|
|
|
+ <span className="page-logo-text mr-1">产品</span>
|
|
|
+ <span className="position-absolute text-white opacity-50 small pos-top pos-right mr-2 mt-n2"></span>
|
|
|
+ <i className="ni ni-my-apps d-inline-block ml-1 fs-lg color-primary-300"></i>
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <nav id="js-primary-nav" className="primary-nav" role="navigation">
|
|
|
+
|
|
|
+ <ul id="js-nav-menu" className="nav-menu">
|
|
|
+ <li className="active open">
|
|
|
+ <a href="#" title="软件锁" data-filter-tags="软件锁" className="waves-effect waves-themed">
|
|
|
+ <i className="fal fa-magic "></i>
|
|
|
+ <span className="nav-link-text">软件锁</span>
|
|
|
+ </a>
|
|
|
+ <ul>
|
|
|
+ <li className="active">
|
|
|
+ <a href="/product" title="Analytics Dashboard" data-filter-tags="application intel analytics dashboard">
|
|
|
+ <span class="nav-link-text">公共锁库</span>
|
|
|
+ </a>
|
|
|
+ <Link to='/product'>公共锁库</Link>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <a href="/product/lockStatistics" title="Analytics Dashboard" data-filter-tags="application intel analytics dashboard">
|
|
|
+ <span class="nav-link-text">使用统计</span>
|
|
|
+ </a>
|
|
|
+ <Link to='/product/lockStatistics'>使用统计</Link>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ </li>
|
|
|
+
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ </nav>
|
|
|
+
|
|
|
+ </aside>
|
|
|
+ <div id="content">
|
|
|
+
|
|
|
+ {/* <Route path='/product' exact component={Lockstore} ></Route>
|
|
|
+ <Route path='/product/lockStatistics' exact render={()=><div>使用统计</div>} ></Route> */}
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </BrowserRouter>
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ //组件即将要被挂在的时候执行的方法--
|
|
|
+ componentDidMount(){
|
|
|
+ //逻辑代码可以写在mapDispathToProps里 this.props.方法
|
|
|
+
|
|
|
+ // axios.get('/api/submenuList.json').then((res) => {
|
|
|
+ // const data = res.data;
|
|
|
+ // dispatch(changeList(data.data));
|
|
|
+ // }).catch(() => {
|
|
|
+ // console.log('error');
|
|
|
+ // })
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * store里的数据映射到这个组件里的state
|
|
|
+ * @param {*} state
|
|
|
+ */
|
|
|
+const mapStateToProps = (state) => {
|
|
|
+
|
|
|
+ return {
|
|
|
+ //menu: state.submenu.menu
|
|
|
+ menu: state.getIn(['submenu', 'menu']),
|
|
|
+ list: state.getIn(['submenu', 'list']),
|
|
|
+ inputValue: state.getIn(['submenu', 'inputValue']),
|
|
|
+ }
|
|
|
+ // return {
|
|
|
+ // focused: state.getIn(['header', 'focused']),
|
|
|
+ // list: state.getIn(['header', 'list']),
|
|
|
+ // page: state.getIn(['header', 'page']),
|
|
|
+ // totalPage: state.getIn(['header', 'totalPage']),
|
|
|
+ // mouseIn: state.getIn(['header', 'mouseIn'])
|
|
|
+ // }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 要改变store里的内容需要调用dispatch方法
|
|
|
+ * @param {*} dispatch
|
|
|
+ */
|
|
|
+const mapDispathToProps = (dispatch) => {
|
|
|
+ return {
|
|
|
+ handleInputFocus(list) {
|
|
|
+
|
|
|
+ // const action = {
|
|
|
+ // type: 'aearch_focus'
|
|
|
+ // };
|
|
|
+ //发送给store--提取出action--避免发送重复的ajax请求
|
|
|
+ (list.size === 0) && dispatch(actionCreators.getList());
|
|
|
+ // if(list.size>0){
|
|
|
+ // dispatch(actionCreators.getList());
|
|
|
+ // }
|
|
|
+ dispatch(actionCreators.searchFocus());
|
|
|
+ },
|
|
|
+ handleInputChange(ivalueElem){
|
|
|
+
|
|
|
+ dispatch(actionCreators.changeInputValue(ivalueElem.value));
|
|
|
+ },
|
|
|
+ }
|
|
|
+ // return {
|
|
|
+ // handleInputFocus(list) {
|
|
|
+ // (list.size === 0) && dispatch(actionCreators.getList());
|
|
|
+ // dispatch(actionCreators.searchFocus());
|
|
|
+ // },
|
|
|
+ // handleInputBlur() {
|
|
|
+ // dispatch(actionCreators.searchBlur());
|
|
|
+ // },
|
|
|
+ // handleMouseEnter() {
|
|
|
+ // dispatch(actionCreators.mouseEnter());
|
|
|
+ // },
|
|
|
+ // handleMouseLeave() {
|
|
|
+ // dispatch(actionCreators.mouseLeave());
|
|
|
+ // },
|
|
|
+ // handleChangePage(page, totalPage, spin) {
|
|
|
+ // let originAngle = spin.style.transform.replace(/[^0-9]/ig, '');
|
|
|
+ // if (originAngle) {
|
|
|
+ // originAngle = parseInt(originAngle, 10);
|
|
|
+ // }else {
|
|
|
+ // originAngle = 0;
|
|
|
+ // }
|
|
|
+ // spin.style.transform = 'rotate(' + (originAngle + 360) + 'deg)';
|
|
|
+
|
|
|
+ // if (page < totalPage) {
|
|
|
+ // dispatch(actionCreators.changePage(page + 1));
|
|
|
+ // }else {
|
|
|
+ // dispatch(actionCreators.changePage(1));
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+}
|
|
|
+
|
|
|
+export default connect(mapStateToProps, mapDispathToProps)(Content);
|