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}
+ <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