import React, { PureComponent } from 'react'; import moment from 'moment'; import { connect } from 'dva'; import style from 'styled-components'; import { Input, Button, message, DatePicker, Checkbox, Modal, Form, Drawer } from 'antd'; import { RegString500, RegString50 } from '../../../constants/regexps'; // import Drawer from "react-motion-drawer"; import PTable from '../../../components/Pro/PTable'; import EditPunishment from './EditPunishment'; import { addComSecurityPenalty, deleteComSecurityPenaltyById, getTreeperBydepart } from '../../../services/api'; import PSelect from '../../../components/Pro/PSelect'; import $perModal from '../../../utils/modal/perModal'; const FormItem = Form.Item; const dateFormat = 'YYYY-MM-DD'; const { confirm } = Modal; const { RangePicker } = DatePicker; const { TextArea } = Input; const config = { rules: [ { type: 'object', required: false, message: '请选择日期!' } ] }; //首次验证trim() function validateTrim(v) { return v === undefined ? v : v.trim(); } @connect(state => ({ profile: state.profile })) @Form.create() export default class Punishment extends PureComponent { constructor(props, context) { super(props, context); this.state = { visible: false, open: false, //窗口 openEdit: false, //修改 penaltyId: 0, forceUpdate: false, showPerId: 0, perIdString: [], // treeData: [ // //树 // { title: '', key: '' } // ], pageParm: { keyWords: '', startDate: '', endDate: '', pageSize: '10', pageNumber: '1' }, keyWords: '', startDate: '', endDate: '' }; } componentDidMount() { // getTreeperBydepart({}).then( // response => { // console.log(response, 'getTreeperBydepart-response'); // response.data = this.checkMember(response.data); // this.setState({ treeData: response.data }); // }, // err => { // console.log(err, 'getTreeperBydepart-err'); // } // ); } // 遍历部门人员数据 checkMember(data) { data = data.map(item => { if (item.children && item.children.length) { let needDisable = true; const temp = subItem => { subItem.filter(tempItem => { if (tempItem.children && tempItem.children.length) { temp(tempItem.children); return tempItem; } else { if (tempItem.treeType === '2') { needDisable = false; } return tempItem; } }); }; temp(item.children); needDisable ? (item.disableCheckbox = true) : null; this.checkMember(item.children); return item; } else { if (item.treeType !== '2') { item.disableCheckbox = true; item.disabled = true; item.isLeaf = true; } return item; } }); return data; } //修改 editDrawer = penaltyId => { this.setState({ penaltyId }); this.setState({ openEdit: true }); }; //增加 addDrawer = () => { this.setState({ open: true }); }; hideModal = () => { this.setState({ visible: true }); const values = this.props.form.getFieldsValue(); if ( values.penaltyContent || values.penaltyDate || values.penaltyReason || values.penaltyType || values.penaltyUnit || values.remark !== '' || this.state.perIdString.length !== 0 ) { console.log(values); this.setState({ visible: true }); } else { this.handleModalOk(); } }; handleModalOk = e => { console.log(e); this.setState({ visible: false, open: false, perIdString: [] }); }; handleModalCancel = e => { console.log(e); this.setState({ visible: false }); }; //输入框的书写 inputSerchPunishmentChange = e => { console.log(e.target.value.trim()); this.setState({ keyWords: e.target.value.trim() }); // //正则用//包起来 // const regex = /^[\u4e00-\u9fa5]{1,20}$/; // if (e.target.value.trim()) { // //react使用正则表达式变量的test方法进行校验,直接使用value.match(regex)显示match未定义 // if (regex.test(e.target.value.trim())) { // this.setState({ keyWords: e.target.value.trim() }); // return; // } else { // // callback('请输汉字最大20位!'); // } // } else { // //这里的callback函数会报错 // } }; //报表类型 change pSelectChange = (value, type) => { this.setState({ [type]: value }); }; //刷新方法 tableUpdate = () => { this.setState({ forceUpdate: true }, () => { this.setState({ forceUpdate: false }); }); }; //点击搜索 search = () => { const pageParm = { ...this.state.pageParm }; const { keyWords, startDate, endDate } = this.state; pageParm.keyWords = keyWords; pageParm.startDate = startDate; pageParm.endDate = endDate; this.setState({ pageParm }); }; //时间选择 onChangeTime = (date, dateString) => { this.setState({ startDate: dateString[0], endDate: dateString[1] }); }; showDeleteConfirm = penaltyId => { console.log(penaltyId); const that = this; confirm({ title: '是否删除所选信息,删除后无法找回。是否确认删除?', okText: '确认', cancelText: '取消', onOk() { console.log('ok'); that.orderDelete(penaltyId); }, onCancel() { console.log('Cancel'); } }); }; //删除 orderDelete = penaltyId => { deleteComSecurityPenaltyById({ penaltyId }).then( response => { message.success(response.msg); this.tableUpdate(); }, err => { console.log(err); } ); }; //表单提交 handlePunishmentSubmit = e => { e.preventDefault(); this.props.form.validateFields((err, values) => { console.log('表单提交......', values); values.perIdString = [ values.perIdString ]; Reflect.deleteProperty(values, 'perName'); values.perIdString.length === 0 && this.setState({ showPerId: 1 }); if (!err && values.perIdString) { const rangeValue = values['penaltyDate']; values.penaltyDate = rangeValue.format('YYYY-MM-DD'); const { isCrime } = values; if (isCrime) { values.isCrime = '1'; } else { values.isCrime = '0'; } addComSecurityPenalty(values).then( data => { console.log(data); // this.setState({ forceUpdate: true }); this.setState({ open: false }); this.setState({ perIdString: [] }); this.tableUpdate(); const { setFieldsValue } = this.props.form; setFieldsValue({ penaltyDate: '', penaltyType: '', penaltyUnit: '', isCrime: false, penaltyContent: '', penaltyReason: '', remark: '' }); }, err1 => { console.log(err1); } ); } }); }; //关键字输入框设置长度 check = (rule, value, callback) => { // debugger; //与表单数据进行关联 // const form = this.props.form; //正则用//包起来 const regex = /^[\u4e00-\u9fa5]{1,20}$/; if (value) { //react使用正则表达式变量的test方法进行校验,直接使用value.match(regex)显示match未定义 if (regex.test(value)) { callback(); } else { callback('请输汉字最大20位!'); } } else { //这里的callback函数会报错 } }; // 判断日期 disabledStartDate = (currentDate) => { return currentDate && currentDate > moment(parseInt(sessionStorage.getItem('requestDate'))).endOf('day'); } //表格渲染 renderTable = () => { const columns = [ { title: '处罚日期', dataIndex: 'penaltyDate', key: 'penaltyDate', // fixed: 'left', render: (text, record) => (

{record.penaltyDate}

) }, { title: '处罚单位', dataIndex: 'penaltyUnit', key: 'penaltyUnit', render: (text, record) => (

{record.penaltyUnit}

) }, { title: '处罚内容', dataIndex: 'penaltyContent', key: 'penaltyContent', render: (text, record) => (

{record.penaltyContent}

) }, { title: '处罚原因', dataIndex: 'penaltyReason', key: 'penaltyReason', render: (text, record) => (

{record.penaltyReason}

) }, { title: '操作', dataIndex: 'action', key: 'action', render: (text, record) => ( //render: () => (
详情 删除

{record.action}

) } ]; return ( ); }; render() { const formItemLayout = { labelCol: { xs: { span: 24 }, sm: { span: 7 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 17 }, md: { span: 17 } } }; const { getFieldDecorator, getFieldValue, setFieldsValue } = this.props.form; return ( {/* 搜索条件面板 */}
{/* */}
{this.renderTable()}

确认删除“处罚信息”?

{/*新增处罚*/} { this.setState({ open }); }} // onClose={()=>{ // this.setState({ // open:false, // perIdString: [] // }); // }} onClose={this.hideModal} destroyOnClose >
{/*
新增处罚
*/}
{getFieldDecorator('perIdString', { rules: [ { required: true, message: '请选择被处罚人员' } ] })()} {getFieldDecorator('perName', { rules: [ { required: true, message: '请选择被处罚人员' } ] })( { $perModal({ value: getFieldValue('perIdString'), type: 'radio', onOk: (values, close) => { setFieldsValue({ perIdString: values[0].perId, perName: values[0].name }); close(); } }); }} />)} {getFieldDecorator( 'penaltyDate', { rules: [ { required: true, message: '请选择处罚日期' } ] }, config )( )} {getFieldDecorator('penaltyType', { rules: [ { required: true, message: '请选择处罚类型' } ] })( )} {getFieldDecorator('penaltyUnit', { rules: [ { transform: transformeValue => { return validateTrim(transformeValue); } }, RegString50, { required: true, message: RegString50.message } ] })(