caipin 5 years ago
parent
commit
10314d96be

+ 27 - 14
src/common/staffHeader/index.js

@@ -1,13 +1,15 @@
 import React, { PureComponent } from 'react';
-// import { connect } from 'react-redux';
+import { connect } from 'react-redux';
 // import { BrowserRouter, Route,Link } from 'react-router-dom';
 
-// import { actionCreators } from './store';
+import { actionCreators } from './store';
 
 class staffHeader extends PureComponent {
 
     
     render() {
+      const { sectionName,staff } = this.props;
+      let staffDetail=staff.toJS();
         return (
             
         <header className="page-header" role="banner">
@@ -31,23 +33,23 @@ class staffHeader extends PureComponent {
           </div>
           
           <h1 className="subheader-title">
-     					联系人
-               {/* {handeName} */}
+     					{sectionName}
      				</h1>
          
           <div className="ml-auto d-flex">
            
             <div>
-              <a href="#" data-toggle="dropdown"  className="header-icon d-flex align-items-center justify-content-center ml-2"><img src="/img/demo/avatars/avatar-admin.png" className="profile-image rounded-circle" /></a>
+              <a href="#" data-toggle="dropdown"  className="header-icon d-flex align-items-center justify-content-center ml-2">
+                <img src={staffDetail.avatar} className="profile-image rounded-circle" /></a>
               <div className="dropdown-menu dropdown-menu-animated dropdown-lg">
                 <div className="dropdown-header bg-trans-gradient d-flex flex-row py-4 rounded-top">
                   <div className="d-flex flex-row align-items-center mt-1 mb-1 color-white">
                     <span className="mr-2">
-                            				<img src="/img/demo/avatars/avatar-admin.png" className="rounded-circle profile-image" alt="Dr. Codex Lantern"/>
+                            				<img src={staffDetail.avatar} className="rounded-circle profile-image" alt={staffDetail.username} />
                             			</span>
                     <div className="info-card-text">
-                      <div className="fs-lg text-truncate text-truncate-lg">张三</div>
-                      <span className="text-truncate text-truncate-md opacity-80">工号:0001</span>
+                      <div className="fs-lg text-truncate text-truncate-lg">{staffDetail.username}</div>
+                      <span className="text-truncate text-truncate-md opacity-80">工号:{staffDetail.jobNumber}</span>
                     </div>
                   </div>
                 </div>
@@ -72,23 +74,34 @@ class staffHeader extends PureComponent {
         );
     }
 
+    componentDidMount() {
+      // const { handleMenuActive } = this.props;
+      // let protocol = window.location.pathname;
+      // let sectionName='client';
+      // if(protocol==='/contact/company'){
+      //   sectionName='company';
+      // }
+      // handleMenuActive(sectionName); 
+    }
+
 }
 
 const mapStateToProps = (state) => {
   return {
-    menuActive: state.getIn(['common', 'menuActive']),
+    sectionName: state.getIn(['common', 'sectionName']),
+    staff: state.getIn(['common', 'staff']),
   }
 }
 
 
 const mapDispathToProps = (dispatch) => {
   return {
-    handleMenuActive(value) {
-      dispatch(actionCreators.menuActive(value));
-    },
+    // handleSectionName(value) {
+    //   dispatch(actionCreators.menuActive(value));
+    // },
   }
 }
 
 
-export default staffHeader;
-// export default connect(mapStateToProps, mapDispathToProps)(staffHeader);
+// export default staffHeader;
+export default connect(mapStateToProps, mapDispathToProps)(staffHeader);

+ 27 - 1
src/common/store/actionCreators.js

@@ -1,6 +1,5 @@
 import * as constants from './constants';
 import { fromJS } from 'immutable';
-
 import * as config from '../config';
 import axios from '../axios_auth';
 
@@ -8,6 +7,33 @@ import md5 from 'js-md5';
 import CryptoJs from 'crypto-js';
 const CRYPTO_KEY = 'cld2_login_csrf_';
 
+
+export const setSectionName = (sectionName) => {
+    return (dispatch) => {
+        dispatch({
+            type: constants.CHANGE_SECTION_NAME,
+            data: sectionName
+        });
+    }
+}
+
+export const getStaff = () => {
+    return (dispatch) => {
+        axios.get(config.CLD2API + '/staff').then((res) => {
+            const data = res.data;
+            if (data.code === 200) {
+                dispatch({
+                    type: constants.CHANGE_STAFF,
+                    data: fromJS(data.data)
+                });
+            } else { }
+        }).catch((e) => {
+            console.log(e)
+        })
+    }
+}
+
+
 //csrfToken
 export const loginSafety = () => {
     return (dispatch) => {

+ 3 - 0
src/common/store/constants.js

@@ -1,2 +1,5 @@
 export const CHANGE_CSRF_TOKEN = 'common/change_csrf_token';
+export const CHANGE_SECTION_NAME = 'common/change_section_name';
+export const CHANGE_STAFF = 'common/change_staff';
+
 

+ 9 - 4
src/common/store/reducer.js

@@ -2,18 +2,23 @@ import * as constants from './constants';
 import { fromJS } from 'immutable';
 
 const defaultState = fromJS({
-	csrfToken:'',
-	staff:{}
+	csrfToken: '',
+	staff: {},
+	sectionName: '',
 });
 
 export default (state = defaultState, action) => {
-	
+
 	switch (action.type) {
 		case constants.CHANGE_CSRF_TOKEN:
 			return state.set('csrfToken', action.data);
+		case constants.CHANGE_SECTION_NAME:
+			return state.set('sectionName', action.data);
+		case constants.CHANGE_STAFF:
+			return state.set('staff', action.data);
 		default:
 			return state;
 	}
-	
+
 
 }

+ 4 - 2
src/contact/company/index.js

@@ -22,12 +22,12 @@ let popupsObj = null;
 class company extends PureComponent {
 
   render() {
-    const { columnsVisible, companyList, pagination, handleCompanyData, loading, columns, sortField, sort, searchValue,
+    const { columnsVisible, companyList, pagination, handleCompanyData, loading, columns, sortField, sort, 
       handleColumnsShow, handleInputChange, handleCompanySortField, handleCompanySort, handleSearch } = this.props;
 
     return (
       <Fragment>
-        <StaffHeader />
+        <StaffHeader  />
         <main id="js-page-content" role="main" className="page-content">
           <div className="row ">
             <div className="col-xl-12 ">
@@ -188,6 +188,8 @@ const mapStateToProps = (state) => {
     sort: state.getIn(['company', 'sort']),
     searchValue: state.getIn(['company', 'searchValue']),
     companyDetail: state.getIn(['popups', 'companyDetail']),
+
+    // menuActive: state.getIn(['commonContact', 'menuActive']),
   }
 }
 

+ 21 - 4
src/contact/contact.js

@@ -6,16 +6,13 @@ import { BrowserRouter, Route,Link } from 'react-router-dom';
 import {Client,Company} from './indexComponents';
 import { actionCreators } from './common/store';
 
+import * as actionCreatorsCommon  from '../common/store/actionCreators';
 
 class contact extends Component {
 
   render() {
     const { menuActive,handleMenuActive } = this.props;
-     //console.log(this.state);
-    //console.log(store.getIn('common','menuActive'));
     return (
-      // <Provider store={store}>
-         
          <BrowserRouter>
           <aside className="page-sidebar">
             <div className="page-logo">
@@ -62,6 +59,18 @@ class contact extends Component {
     );
   }
 
+  componentDidMount() {
+    const { handleMenuActive,handleStaff } = this.props;
+    let protocol = window.location.pathname;
+    let pathName='client';
+    if(protocol==='/contact/company'){
+      pathName='company';
+    }
+    handleMenuActive(pathName);
+    handleStaff();
+
+  }
+
 }
 
 const mapStateToProps = (state) => {
@@ -76,7 +85,15 @@ const mapDispathToProps = (dispatch) => {
   return {
     handleMenuActive(value) {
       dispatch(actionCreators.menuActive(value));
+      let sectionName='联系人';
+      if(value==='/contact/company'){
+        sectionName='公司';
+      }
+      dispatch(actionCreatorsCommon.setSectionName(sectionName));
     },
+    handleStaff(){
+      dispatch(actionCreatorsCommon.getStaff());
+    }
   }
   
 }

+ 2 - 6
src/login/login.js

@@ -8,7 +8,7 @@ import * as commonActionCreators from '../common/store/actionCreators';
 import { Form, Input, Button } from 'antd';
 import { UserOutlined, LockOutlined } from '@ant-design/icons';
 import 'antd/dist/antd.css';
-import { constants } from '../contact/company/store';
+// import { constants } from '../contact/company/store';
 
 const onFinish = values => {
     console.log('Received values of form: ', values);
@@ -16,13 +16,9 @@ const onFinish = values => {
 
 class login extends Component {
 
-
-
     render() {
         const { loading, handleLogin,csrfToken } = this.props;
 
-        //console.log(store.getIn('common','menuActive'));
-
         return (
             <Fragment>
                 <Form
@@ -70,7 +66,6 @@ class login extends Component {
 const mapStateToProps = (state) => {
 
     return {
-        //loading: state.get('loading'),
         loading: state.getIn(['login', 'loading']),
         csrfToken: state.getIn(['common', 'csrfToken']),
     }
@@ -82,6 +77,7 @@ const mapDispathToProps = (dispatch) => {
         handleLogin(parameter,csrfToken) {
             //dispatch(actionCreators.changeLoading());
             dispatch(actionCreators.login(parameter,csrfToken));
+            //dispatch(commonActionCreators.login(parameter,csrfToken));
         },
         handleLoginSafety(){
             dispatch(commonActionCreators.loginSafety());

+ 4 - 6
src/login/store/actionCreators.js

@@ -1,11 +1,10 @@
 import * as constants from './constants';
-import { fromJS } from 'immutable';
+// import { fromJS } from 'immutable';
 import * as config from '../../common/config.js';
 import axios from '../../common/axios_auth.js';
 import md5 from 'js-md5';
 import qs from 'qs';
-import cookie from 'react-cookies'
-
+// import cookie from 'react-cookies'
 const salt = 'cld2cp89_+!';
 
 //loading
@@ -25,8 +24,7 @@ export const login = (parameter) => {
             'username': parameter.username,
             'password': mdpw,
         };
-        
-        //let csrftoken = cookie.load('csrfToken');
+
         axios.post(config.CLD2API + '/login', qs.stringify(data), {
             headers: {
                 //'Content-Type': 'application/x-www-form-urlencoded',
@@ -36,7 +34,7 @@ export const login = (parameter) => {
             const data = res.data;
             if (data.code === 200) {
                 window.location.href = '/contact/company';
-            } else{
+            } else {
                 alert('登录不正确');
             }
         }).catch((e) => {