| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { Form, Row, Col, Select, Input, Radio, Tooltip, InputNumber } from 'antd' |
| | | import { Form, Row, Col, Input, Radio, Tooltip, InputNumber } from 'antd' |
| | | import { QuestionCircleOutlined } from '@ant-design/icons' |
| | | |
| | | import MemberForm from './memberform' |
| | | const { TextArea } = Input |
| | | |
| | | class NodeForm extends Component { |
| | | static propTpyes = { |
| | | node: PropTypes.any, |
| | | data: PropTypes.any, |
| | | rolelist: PropTypes.array |
| | | orgs: PropTypes.array |
| | | } |
| | | |
| | | state = { |
| | | ctrlType: this.props.data.ctrlType || 'role' |
| | | } |
| | | state = {} |
| | | |
| | | handleConfirm = () => { |
| | | const { rolelist } = this.props |
| | | |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | if (values.roleId) { |
| | | values.roleName = '' |
| | | rolelist.forEach(item => { |
| | | if (item.RoleID === values.roleId) { |
| | | values.roleName = item.RoleName |
| | | } |
| | | }) |
| | | } |
| | | if (values.depId) { |
| | | values.depName = '' |
| | | rolelist.forEach(item => { |
| | | if (item.RoleID === values.depId) { |
| | | values.depName = item.RoleName |
| | | } |
| | | }) |
| | | } |
| | | resolve(values) |
| | | } else { |
| | | reject(err) |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { node, rolelist } = this.props |
| | | const { node, orgs } = this.props |
| | | const { getFieldDecorator } = this.props.form |
| | | const { ctrlType } = this.state |
| | | const formItemLayout = { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | |
| | | } |
| | | } |
| | | let data = this.props.data || {} |
| | | let nodetype = node.shape !== 'edge' ? 'node' : 'edge' |
| | | if (node.mknode === 'start') { |
| | | nodetype = 'start' |
| | | } else if (node.mknode === 'end') { |
| | | nodetype = 'end' |
| | | } |
| | | |
| | | return ( |
| | | <Form {...formItemLayout} className="normal-node-form"> |
| | |
| | | <Col span={12}> |
| | | <Form.Item label="状态值"> |
| | | {getFieldDecorator('status', { |
| | | initialValue: data.status || 0, |
| | | initialValue: data.status === undefined ? 0 : data.status, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> |
| | | {node.shape !== 'edge' ? <Col span={12}> |
| | | {nodetype === 'node' ? <Col span={12}> |
| | | <Form.Item label={ |
| | | <Tooltip placement="topLeft" title="标记将作为节点ID"> |
| | | <QuestionCircleOutlined className="mk-form-tip" /> |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | <Col span={12}> |
| | | <Form.Item label="类型"> |
| | | {getFieldDecorator('ctrlType', { |
| | | initialValue: data.ctrlType || 'role' |
| | | {nodetype === 'node' ? <Col span={12}> |
| | | <Form.Item label="设置审批人"> |
| | | {getFieldDecorator('approver', { |
| | | initialValue: data.approver || 'member' |
| | | })( |
| | | <Radio.Group onChange={(e) => this.setState({ctrlType: e.target.value})}> |
| | | <Radio value="role">角色</Radio> |
| | | <Radio value="department">部门</Radio> |
| | | <Radio value="none">无</Radio> |
| | | <Radio.Group> |
| | | <Radio value="member">指定成员</Radio> |
| | | <Radio value="departmentManager">部门主管</Radio> |
| | | <Radio value="directManager">直属主管</Radio> |
| | | </Radio.Group> |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | {nodetype === 'node' ? <Col span={12}> |
| | | <Form.Item label="审批方式"> |
| | | {getFieldDecorator('approvalMethod', { |
| | | initialValue: data.approvalMethod || 'countersign' |
| | | })( |
| | | <Radio.Group> |
| | | <Radio value="countersign">会签</Radio> |
| | | <Radio value="orsign">或签</Radio> |
| | | </Radio.Group> |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | <Col span={12}> |
| | | <Form.Item label="审批人"> |
| | | {getFieldDecorator('members', { |
| | | initialValue: data.members || [], |
| | | rules: [{ |
| | | required: true, |
| | | message: '请添加审批人!' |
| | | }] |
| | | })( |
| | | <MemberForm orgs={orgs} title="审批人"/> |
| | | )} |
| | | </Form.Item> |
| | | </Col> |
| | | {ctrlType === 'role' ? <Col span={12}> |
| | | <Form.Item label="角色"> |
| | | {getFieldDecorator('roleId', { |
| | | initialValue: data.roleId || '', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择角色!' |
| | | } |
| | | ] |
| | | <Col span={12}> |
| | | <Form.Item label="抄送人"> |
| | | {getFieldDecorator('copys', { |
| | | initialValue: data.copys || [] |
| | | })( |
| | | <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}> |
| | | {rolelist.map(item => (<Select.Option key={item.RoleID} value={item.RoleID}>{item.RoleName}</Select.Option>))} |
| | | </Select> |
| | | <MemberForm orgs={orgs} title="抄送人"/> |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | {ctrlType === 'department' ? <Col span={12}> |
| | | <Form.Item label="部门"> |
| | | {getFieldDecorator('depId', { |
| | | initialValue: data.depId || '', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择部门!' |
| | | } |
| | | ] |
| | | })( |
| | | <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}> |
| | | {rolelist.map(item => (<Select.Option key={item.RoleID} value={item.RoleID}>{item.RoleName}</Select.Option>))} |
| | | </Select> |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | </Col> |
| | | <Col span={24}> |
| | | <Form.Item label="备注"> |
| | | {getFieldDecorator('remark', { |