From 12d561aea1143eae863d80edebf8b4cbe3cc85df Mon Sep 17 00:00:00 2001
From: liuwh <hugeinfo123>
Date: Mon, 06 Apr 2020 19:05:16 +0800
Subject: [PATCH] 1

---
 src/components/common/HeadView/index.jsx          |   27 ++-
 src/components/common/TopListTableView/index.jsx  |   17 +
 src/components/page/index/rulesList/index.jsx     |    1 
 src/pages/login/login.jsx                         |  198 ++++++++++++++--------------
 src/components/common/NotifyList/index.jsx        |   32 +++-
 src/components/common/TopListTableView/tagList.js |  125 ++++++++++-------
 6 files changed, 227 insertions(+), 173 deletions(-)

diff --git a/src/components/common/HeadView/index.jsx b/src/components/common/HeadView/index.jsx
index f133c44..759af0d 100644
--- a/src/components/common/HeadView/index.jsx
+++ b/src/components/common/HeadView/index.jsx
@@ -6,7 +6,7 @@
 
 /** 头部组件 */
 
-import React from 'react';
+import React, { useEffect } from 'react';
 import { Layout, Menu, Dropdown, Icon, Row, Col, message } from 'antd';
 const { Header } = Layout;
 import './index.scss';
@@ -30,17 +30,24 @@
 
 export default function MenuView({ }) {
 
+  var loginUser = window.localStorage.getItem('loginUser') || '{}';
+  loginUser = JSON.parse(loginUser);
+  console.log(loginUser)
   return (
     <Header style={{ background: '#fff', padding: 0, boxShadow: 'inset 0 -1px 0 0 #E5E5E5' }}>
-      <Row type="flex" align="middle" justify="end" >
-        <Col style={{ marginRight: 40 }}>
-          <Dropdown overlay={menu}>
-            <a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
-              登陆人<Icon type="down" />
-            </a>
-          </Dropdown>
-        </Col>
-      </Row>
+      {
+        (loginUser && Object.keys(loginUser).length) &&
+        <Row type="flex" align="middle" justify="end" >
+          <Col style={{ marginRight: 40 }}>
+            {loginUser.trueName}&nbsp;&nbsp;&nbsp;
+            <Dropdown overlay={menu}>
+              <a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
+                [{loginUser.dept} | {loginUser.post}]<Icon type="caret-down" />
+              </a>
+            </Dropdown>
+          </Col>
+        </Row>
+      }
     </Header>
   );
 }
diff --git a/src/components/common/NotifyList/index.jsx b/src/components/common/NotifyList/index.jsx
index dd7f6be..665d4d0 100644
--- a/src/components/common/NotifyList/index.jsx
+++ b/src/components/common/NotifyList/index.jsx
@@ -7,6 +7,7 @@
 /** 通知列表 */
 import React, { ReactNode, ReactEventHandler, Component } from 'react';
 import { Alert } from 'antd';
+import fetch from '../../../api/request';
 
 import './index.scss';
 
@@ -16,10 +17,20 @@
     this.config = {
     };
     this.state = {
+      content: ''
     };
   }
 
-  componentWillMount() { }
+  componentWillMount() {
+    fetch({
+      url: `api/document/getNewNotice`
+    }).then(res => {
+      console.log('res', res);
+      this.setState({
+        content: res.documentContent || ''
+      })
+    })
+  }
 
   componentDidMount() { }
 
@@ -28,6 +39,7 @@
   }
 
   renderDom = () => {
+    let { content } = this.state;
     return <div className="notify-list-main-dom">
       <span className="notify-list-main-dom-msg">最新通知:公司本部从XX时间开始,调整省略很长很长的内容调整省略很长很长的内容公司本部从XX时间开始,调整省略很长很长的内容调整省略很长很长的内容公司本部从XX时间开始,调整省略很长很长的内容调整省略很长很长的内容</span>
       <span className="notify-list-main-dom-fuc" onClick={this.onClick}>[查看全部]</span>
@@ -35,15 +47,19 @@
   }
 
   render() {
+    let { content } = this.state;
+
     return (
       <div className="notify-list-main">
-        <Alert
-          // message="Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text"
-          message={this.renderDom()}
-          type="warning"
-          closable={false}
-        // onClose={onClose}
-        />
+        {
+          content &&
+          <Alert
+            // message="Warning Text Warning Text Warning TextW arning Text Warning Text Warning TextWarning Text"
+            message={this.renderDom()}
+            type="warning"
+            closable={false}
+          />
+        }
       </div>
     )
   }
diff --git a/src/components/common/TopListTableView/index.jsx b/src/components/common/TopListTableView/index.jsx
index 859bf83..d359b2b 100644
--- a/src/components/common/TopListTableView/index.jsx
+++ b/src/components/common/TopListTableView/index.jsx
@@ -7,7 +7,7 @@
 /** 榜单table列表 */
 import React, { ReactNode, ReactEventHandler, Component } from 'react';
 import { Table, Row, Col } from 'antd';
-import { tagList } from './tagList';
+import { tagList, tag } from './tagList';
 import fetch from '../../../api/request';
 
 import './index.scss';
@@ -28,21 +28,25 @@
       url: `api/merits/queryMerits`
     }).then(res => {
       console.log('res', res);
-    })
-    this.setState({
-      topList: tagList
+      this.setState({
+        topList: [
+          { ...tag['latenessRanking'], dataSource: res['latenessRanking'] },
+          { ...tag['meritsRanking'], dataSource: res['meritsRanking'] },
+          { ...tag['defectRanking'], dataSource: res['defectRanking'] },
+        ]
+      })
     })
   }
 
   componentDidMount() { }
 
-  renderDom = ({ name, columns }) => {
+  renderDom = ({ name, columns, dataSource }) => {
     return <div className="top-list-table-view-main-table">
       <div className="top-list-table-view-main-table-title">{name}
         <span className="top-list-table-view-main-table-title-fuc">查看</span>
       </div>
       <Table
-        dataSource={[{ age: 1 }]}
+        dataSource={dataSource || []}
         columns={columns}
         size="small"
         bordered={false}
@@ -53,6 +57,7 @@
 
   render() {
     let { topList } = this.state;
+    console.log(topList)
     return (
       <div className="top-list-table-view-main">
         <Row type="flex" gutter={12}>
diff --git a/src/components/common/TopListTableView/tagList.js b/src/components/common/TopListTableView/tagList.js
index 646b9e4..4de7ad2 100644
--- a/src/components/common/TopListTableView/tagList.js
+++ b/src/components/common/TopListTableView/tagList.js
@@ -1,83 +1,108 @@
 /* eslint-disable */
-export const tagList = [
-  {
-    name: '考勤榜单',
-    columns: [
-      {
-        title: '名词',
-        dataIndex: 'index',
-        key: 'index'
-      },
-      {
-        title: '姓名',
-        dataIndex: 'name',
-        key: 'name'
-      },
-      {
-        title: '部门',
-        dataIndex: 'part',
-        key: 'part'
-      },
-      {
-        title: '次数',
-        dataIndex: 'count',
-        key: 'count'
-      },
-      {
-        title: '时长(分)',
-        dataIndex: 'time',
-        key: 'timer'
-      }
-    ]
-  },
-  {
+export const tag = {
+  // 绩效排行
+  meritsRanking: {
     name: '绩效榜单',
     columns: [
       {
-        title: '名词',
+        title: '名次',
         dataIndex: 'index',
-        key: 'index'
+        key: 'index',
+        render: (item, cur, idx) => {
+          return idx + 1;
+        }
       },
       {
         title: '姓名',
-        dataIndex: 'name',
-        key: 'name'
+        dataIndex: 'userName',
+        key: 'userName'
       },
       {
         title: '部门',
-        dataIndex: 'part',
-        key: 'part'
+        dataIndex: 'userDeptName',
+        key: 'userDeptName'
       },
       {
         title: '绩效得分',
-        dataIndex: 'score',
-        key: 'score'
+        dataIndex: 'meritsGrade',
+        key: 'meritsGrade',
+        render: (cur, item) => {
+          return cur + '分';
+        }
       }
     ]
   },
-  {
+
+  // 缺陷排行
+  defectRanking: {
     name: '缺陷榜单',
     columns: [
       {
-        title: '名词',
+        title: '名次',
         dataIndex: 'index',
-        key: 'index'
+        key: 'index',
+        render: (item, cur, idx) => {
+          return idx + 1;
+        }
       },
       {
         title: '姓名',
-        dataIndex: 'name',
-        key: 'name'
+        dataIndex: 'userName',
+        key: 'userName'
       },
       {
         title: '部门',
-        dataIndex: 'part',
-        key: 'part'
+        dataIndex: 'userDeptName',
+        key: 'userDeptName'
       },
       {
         title: '缺陷数',
-        dataIndex: 'quexianshu',
-        key: 'quexianshu'
+        dataIndex: 'defectNumber',
+        key: 'defectNumber',
+        render: (cur, item) => {
+          return cur + '个';
+        }
+      }
+    ]
+  },
+
+  latenessRanking: {
+    name: '考勤(迟到)榜单',
+    columns: [
+      {
+        title: '名次',
+        dataIndex: 'index',
+        key: 'index',
+        render: (item, cur, idx) => {
+          return idx + 1;
+        }
+      },
+      {
+        title: '姓名',
+        dataIndex: 'userName',
+        key: 'userName'
+      },
+      {
+        title: '部门',
+        dataIndex: 'userDeptName',
+        key: 'userDeptName'
+      },
+      {
+        title: '次数',
+        dataIndex: 'lateness',
+        key: 'lateness',
+        render: (item, cur) => {
+          return item + '次';
+        }
+      },
+      {
+        title: '时长(分)',
+        dataIndex: 'latenessTime',
+        key: 'latenessTime',
+        render: (item, cur) => {
+          return item + '分钟';
+        }
       }
     ]
   }
-];
+};
diff --git a/src/components/page/index/rulesList/index.jsx b/src/components/page/index/rulesList/index.jsx
index 0b9bfb9..f184734 100644
--- a/src/components/page/index/rulesList/index.jsx
+++ b/src/components/page/index/rulesList/index.jsx
@@ -6,6 +6,7 @@
 
 /** 工作制度 */
 import React, { ReactNode, ReactEventHandler, Component } from 'react';
+import { Button } from 'antd';
 import TableView from '../../../common/TableView';
 import SearchFormView from '../../../common/SearchFormView';
 import moment from 'moment';
diff --git a/src/pages/login/login.jsx b/src/pages/login/login.jsx
index 8d6150e..b5b4827 100644
--- a/src/pages/login/login.jsx
+++ b/src/pages/login/login.jsx
@@ -14,121 +14,121 @@
 import fetch from '../../api/request';
 
 class NormalLoginForm extends React.Component {
-    constructor(props) {
-        super(props);
-        this.config = {
-            navigationBarTitleText: '',
-        };
-        this.state = {
-            btnLoading: false
-        };
-    }
-    componentWillMount() {
-        document.title = '用户登录'
-    }
-
-    handleSubmit = e => {
-        e.preventDefault();
-        this.props.form.validateFields((err, values) => {
-            if (!err) {
-                console.log('Received values of form: ', values);
-                this.setState({
-                    btnLoading: true
-                });
-                fetch({
-                    url: `api/account/login`,
-                    method: 'POST',
-                    data: {
-                        ...values
-                    }
-                }).then(res => {
-                    this.setState({
-                        btnLoading: false
-                    })
-                    if (res) {
-                        this.handleRes(res);
-                    }
-                })
-            }
-        });
+  constructor(props) {
+    super(props);
+    this.config = {
+      navigationBarTitleText: '',
     };
+    this.state = {
+      btnLoading: false
+    };
+  }
+  componentWillMount() {
+    document.title = '用户登录'
+  }
 
-    handleRes = (res) => {
-
-        // 将token放入缓存
-        window.localStorage.setItem('token', res.token);
-
+  handleSubmit = e => {
+    e.preventDefault();
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        console.log('Received values of form: ', values);
+        this.setState({
+          btnLoading: true
+        });
         fetch({
-            url: `api/resource/getResource`,
+          url: `api/account/login`,
+          method: 'POST',
+          data: {
+            ...values
+          }
         }).then(res => {
-            console.log('res', res);
-            if (res) {
-                window.localStorage.setItem('menu', JSON.stringify(res));
-                message.success('登录成功');
-                this.props.history.push({ pathname: "/index" });
-            }
+          this.setState({
+            btnLoading: false
+          })
+          if (res) {
+            this.handleRes(res);
+          }
         })
+      }
+    });
+  };
 
+  handleRes = (res) => {
 
-    }
+    // 将token放入缓存
+    window.localStorage.setItem('token', res.token);
+    window.localStorage.setItem('loginUser', JSON.stringify(res));  //登录的用户信息
 
-    render() {
-        const { getFieldDecorator } = this.props.form;
-        const { btnLoading } = this.state;
-        return (
-            <div className="login-main">
-                <div className="login-div">
-                    <div className="login-div-top">
-                        <img className="login-div-top-img" src={logo} />
-                    </div>
-                    <div className="login-div-content">
-                        <div className="login-div-content-div">
-                            <div className="login-div-content-div-title">登录OA云平台</div>
-                            <Form onSubmit={this.handleSubmit} className="login-form">
-                                <Form.Item className="login-div-content-form-flex" >
-                                    {getFieldDecorator('account', {
-                                        rules: [{ required: true, message: '请输入账号!' }],
-                                    })(
-                                        <Input
-                                            style={{ width: '32vh', height: '5vh', margin: '12px' }}
-                                            prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />}
-                                            placeholder="请输入账号"
-                                        />,
-                                    )}
-                                </Form.Item>
-                                <Form.Item className="login-div-content-form-flex">
-                                    {getFieldDecorator('credential', {
-                                        rules: [{ required: true, message: '请输入密码!' }],
-                                        initialValue: 'admin'
-                                    })(
-                                        <Input
-                                            style={{ width: '32vh', height: '5vh', margin: '12px' }}
-                                            prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />}
-                                            type="password"
-                                            placeholder="请输入密码"
-                                        />,
-                                    )}
-                                </Form.Item>
-                                <Form.Item className="login-div-content-form-flex">
-                                    {/* {getFieldDecorator('remember', {
+    // 获取登录用户的菜单权限
+    fetch({
+      url: `api/resource/getResource`,
+    }).then(res => {
+      console.log('res', res);
+      if (res) {
+        window.localStorage.setItem('menu', JSON.stringify(res));
+        message.success('登录成功');
+        this.props.history.push({ pathname: "/index" });
+      }
+    })
+  }
+
+  render() {
+    const { getFieldDecorator } = this.props.form;
+    const { btnLoading } = this.state;
+    return (
+      <div className="login-main">
+        <div className="login-div">
+          <div className="login-div-top">
+            <img className="login-div-top-img" src={logo} />
+          </div>
+          <div className="login-div-content">
+            <div className="login-div-content-div">
+              <div className="login-div-content-div-title">登录OA云平台</div>
+              <Form onSubmit={this.handleSubmit} className="login-form">
+                <Form.Item className="login-div-content-form-flex" >
+                  {getFieldDecorator('account', {
+                    rules: [{ required: true, message: '请输入账号!' }],
+                  })(
+                    <Input
+                      style={{ width: '32vh', height: '5vh', margin: '12px' }}
+                      prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />}
+                      placeholder="请输入账号"
+                    />,
+                  )}
+                </Form.Item>
+                <Form.Item className="login-div-content-form-flex">
+                  {getFieldDecorator('credential', {
+                    rules: [{ required: true, message: '请输入密码!' }],
+                    initialValue: 'admin'
+                  })(
+                    <Input
+                      style={{ width: '32vh', height: '5vh', margin: '12px' }}
+                      prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />}
+                      type="password"
+                      placeholder="请输入密码"
+                    />,
+                  )}
+                </Form.Item>
+                <Form.Item className="login-div-content-form-flex">
+                  {/* {getFieldDecorator('remember', {
                             valuePropName: 'checked',
                             initialValue: true,
                         })(<Checkbox>记住</Checkbox>)}
                         <a className="login-form-forgot" href="">
                             忘记密码
                         </a> */}
-                                    <Button type="primary" htmlType="submit" className="login-form-button" loading={btnLoading}>登录</Button>
-                                </Form.Item>
-                            </Form>
-
-                        </div>
-                    </div>
-                    <div className="login-div-bottom">2011 10215489广州恒巨信息科技有限公司 版权所有 - 粤ICP备10215489号</div>
-                </div>
+                  <Button type="primary" htmlType="submit" className="login-form-button" loading={btnLoading}>登录</Button>
+                </Form.Item>
+              </Form>
 
             </div>
-        );
-    }
+          </div>
+          <div className="login-div-bottom">2011 10215489广州恒巨信息科技有限公司 版权所有 - 粤ICP备10215489号</div>
+        </div>
+
+      </div>
+    );
+  }
 }
 
 const WrappedNormalLoginForm = Form.create({ name: 'normal_login' })(NormalLoginForm);

--
Gitblit v1.8.0