From cb0a06de99bd629c2021e3d9b32fe8eae8c54879 Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Wed, 24 Jun 2020 17:36:39 +0800
Subject: [PATCH] 文本回填
---
src/components/oa/merits/meritsDetail/index.jsx | 177 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 138 insertions(+), 39 deletions(-)
diff --git a/src/components/oa/merits/meritsDetail/index.jsx b/src/components/oa/merits/meritsDetail/index.jsx
index 210cf34..893bc71 100644
--- a/src/components/oa/merits/meritsDetail/index.jsx
+++ b/src/components/oa/merits/meritsDetail/index.jsx
@@ -7,12 +7,15 @@
/** 绩效详情 */
import React, { ReactNode, ReactEventHandler, Component } from 'react';
import TableView from '../../../common/TableView';
-import { Row, Col, Button, InputNumber, message } from 'antd';
+import { Row, Col, Button, InputNumber, message, DatePicker, Input } from 'antd';
import { createHashHistory } from 'history';
import './index.scss';
const history = createHashHistory();
-import fetch from '../../../../api/request';
+import fetch from '../../../../api/request';
+import moment from 'moment';
+const { MonthPicker } = DatePicker;
+const { TextArea } = Input;
export default class MeritsDetail extends Component {
constructor(props) {
@@ -22,13 +25,41 @@
this.state = {
formData: {
__key: Date.now(),
- ...this.props.match.params
+ // userId: this.props.match.params.userId || loginUser.userId,
+ meritsMonth: this.props.match.params.meritsMonth || moment().month(moment().month() - 1).format('YYYY-MM')
},
-
+ title: null,
+ boolean: this.props.match.params.boolean || false
};
}
- componentDidMount() { }
+ componentDidMount() {
+ var loginUser = window.localStorage.getItem('loginUser') || '{}';
+ loginUser = JSON.parse(loginUser);
+ this.setState({
+ formData: {
+ ...this.state.formData,
+ userId: this.props.match.params.userId || loginUser.userId
+ }
+ }, () => {
+ this.findTitle();
+ })
+ }
+
+ findTitle = () => {
+ fetch({
+ url: `api/merits/assess/findTitle`,
+ params: {
+ userId: this.state.formData.userId
+ }
+ }).then(res => {
+ if (res) {
+ this.setState({
+ title: res
+ })
+ }
+ })
+ }
setFormData = data => {
console.log('form', data);
@@ -40,15 +71,17 @@
// 保存操作
onSave = (item) => {
console.log('item', item);
- let { id , meritsGrade} = item;
+ let { meritsAssessId, meritsGrade, meritsContent } = item;
fetch({
url: `api/merits/assess/modifyGrade`,
- params: {
- id,
- meritsGrade
+ method: 'POST',
+ data: {
+ id: meritsAssessId,
+ meritsGrade: meritsGrade,
+ meritsContent: meritsContent
}
- }).then( res=> {
- if(res) {
+ }).then(res => {
+ if (res) {
message.success('保存成功');
this.setState({
formData: {
@@ -58,14 +91,13 @@
})
}
})
-
}
renderColumns = () => {
- return [
+ var cols = [
{ title: '编号', dataIndex: 'id', width: '3%' },
{ title: '评分项目', dataIndex: 'scoreItems', width: '6%' },
- { title: '评分目标', dataIndex: 'scoreTarget', width: '10%' },
+ // { title: '评分目标', dataIndex: 'scoreTarget', width: '10%' },
{
title: '定义与标准', dataIndex: 'standard', width: '25%', render: (cur, item) => {
return <div dangerouslySetInnerHTML={{
@@ -80,65 +112,132 @@
}}></div>
}
},
- { title: '数据来源', dataIndex: 'dataSources', width: '8%' },
- { title: '取值范围', dataIndex: 'valueRange', width: '5%' },
+ // { title: '数据来源', dataIndex: 'dataSources', width: '8%' },
{
- title: '计算方式', dataIndex: 'countMethod', width: '8%', render: (cur, item) => {
+ title: '权重(%)', dataIndex: 'weight', width: '5%'
+ },
+ {
+ title: '取值范围', dataIndex: 'valueRange', width: '5%'
+ },
+ {
+ title: '计算方式', dataIndex: 'countMethod', width: '10%', render: (cur, item) => {
return <div dangerouslySetInnerHTML={{
__html: cur.replace(/\n/g, "<br/>")
}}></div>
}
},
{
- title: '权重(%)', dataIndex: 'weight', width: '6%'
+ title: '计算结果', dataIndex: 'alculation', width: '10%'
},
- {
- title: '配分(分)', dataIndex: 'allotment', width: '6%'
- },
- {
- title: '考评得分(分)', dataIndex: 'meritsGrade', width: '6%', render: (cur, item, index) => {
- return <InputNumber size="small" min={0}
- max={100} formatter={cur => `${cur}分`} parser={value => value.replace('分', '')} value={cur || 0} onChange={(value) => {
- item['meritsGrade'] = value;
+ this.props.match.params.boolean == 'true' ?
+ {
+ title: '评分意见', dataIndex: 'meritsContent', width: '13%', render: (cur, item, index) => {
+ return <TextArea autoSize={{ minRows: 3, maxRows: 10 }} value={cur} onChange={({ target: { value } }) => {
+ console.log('value', value);
+ item['meritsContent'] = value;
this.refs['table-view'].onSetDataSource({ index, data: item })
}} />
+ }
}
- },
- {
- title: '操作', dataIndex: 'operation', width: '10%', render: (cur, item) => {
- return <a onClick={() => { this.onSave(item) }}>保存</a>
+ :
+ {
+ title: '评分意见', dataIndex: 'meritsContent', width: '13%'
+ },
+ // {
+ // title: '配分(分)', dataIndex: 'allotment', width: '6%'
+ // },
+ this.props.match.params.boolean == 'true' ?
+ {
+ title: '考评得分(分)', dataIndex: 'meritsGrade', width: '6%', render: (cur, item, index) => {
+ return <InputNumber size="small" min={0}
+ max={100} formatter={cur => `${cur}分`} parser={value => value.replace('分', '')} value={cur || 0} onChange={(value) => {
+ item['meritsGrade'] = value;
+ this.refs['table-view'].onSetDataSource({ index, data: item })
+ }} />
+ }
}
- }
-
+ :
+ {
+ title: '考评得分(分)', dataIndex: 'meritsGrade', width: '6%'
+ },
];
+ if (this.props.match.params.boolean == 'true') {
+ console.log(this.props.match.params.boolean);
+ return cols.concat({
+ title: '操作', dataIndex: 'operation', width: '10%', render: (cur, item) => {
+ return <a onClick={() => { this.onSave(item) }}>评分</a>
+ }
+ })
+ } else {
+ return cols
+ }
}
onBack = () => {
history.goBack();
}
+ monthPickerChange = (m, d) => {
+ let { formData } = this.state;
+ this.setState({
+ formData: {
+ ...formData,
+ meritsMonth: d
+ }
+ }, () => {
+ this.setState({
+ formData: {
+ ...this.state.formData,
+ __key: Date.now()
+ }
+ })
+ })
+ }
+
render() {
- const { formData } = this.state;
+ const { formData, title, boolean } = this.state;
let tableParams = {
url: `api/merits/assess/findMeritsDetail`,
- formData,
+ formData: {
+ ...formData,
+ userId: this.props.match.params.userId || JSON.parse(window.localStorage.getItem('loginUser')).userId
+ },
key: formData.__key,
columns: this.renderColumns(),
extraFromData: {},
setFormData: this.setFormData,
- showPagination: false
+ showPagination: false,
+ }
+
+ function disabledDate(current) {
+ return current && current >= moment().endOf('day');
}
return (
<div className="merits-detail-main">
- <h2>2020年4月绩效评分表(初级研发工程师)</h2>
- <TableView {...tableParams} ref="table-view" />
- <Row className="margin-top">
+
+ <Row className="margin-bottom" type="flex" justify="center" gutter={20}>
<Col>
- <Button onClick={this.onBack}>返回</Button>
+ <MonthPicker value={formData.meritsMonth ? moment(formData.meritsMonth, 'YYYY-MM') : ''} format={'YYYY-MM'} onChange={this.monthPickerChange} disabledDate={disabledDate} />
</Col>
+ {
+ title &&
+ <Col>
+ <h2>{title}</h2>
+ </Col>
+ }
</Row>
+
+ <TableView {...tableParams} ref="table-view" />
+ {
+ boolean &&
+ <Row className="margin-top">
+ <Col>
+ <Button onClick={this.onBack}>返回</Button>
+ </Col>
+ </Row>
+ }
</div>
)
}
--
Gitblit v1.8.0