From d896af364e0be1c2e0a48402ed59d00e0804f931 Mon Sep 17 00:00:00 2001 From: liyj <1003249715@qq.com> Date: Wed, 24 Jun 2020 17:27:22 +0800 Subject: [PATCH] .. --- src/components/oa/merits/meritsDetail/index.jsx | 164 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 131 insertions(+), 33 deletions(-) diff --git a/src/components/oa/merits/meritsDetail/index.jsx b/src/components/oa/merits/meritsDetail/index.jsx index 210cf34..d12f3ca 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,21 +112,40 @@ }}></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%' }, + 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={(value) => { + item['meritsContent'] = value.targrt.value; + this.refs['table-view'].onSetDataSource({ index, data: item }) + }} /> + } + } + : { - title: '配分(分)', dataIndex: 'allotment', width: '6%' + 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} @@ -103,42 +154,89 @@ 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: '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