import React from 'react' import { Form, Input, Row, Col, Switch, Button, Modal, message, Select, Icon } from 'antd' import AceEditor from 'react-ace' import { create, test, groupList } from '../service' import 'ace-builds/src-noconflict/mode-java' import 'ace-builds/src-noconflict/theme-monokai' import { connect } from 'dva' import router from 'umi/router' const formItemLayout = { layout: 'vertical' } @connect(({ user }) => ({ currentUser: user.currentUser })) @Form.create() class Add extends React.PureComponent { state = { type: 0, content: '', enabled: false, timeTaskEnabled: false, showTest: false, // 是否展示测试内容 testContent: '', // 测试数据 testResult: '', // 测试结果 dos: [], groupList: [], group: '', features: '' } componentDidMount () { groupList({ pageNum: 999 }).then(res => this.setState({ groupList: res.data.list, group: res.data.list[0].name, features: res.data.list[0].features })) } create = () => { this.props.form.validateFields((err, values) => { if (this.state.type === 4) { values.content = JSON.stringify({ group: this.state.group, dos: this.state.dos }) } if (!err) { create({ ...values, createUser: this.props.currentUser.name, // 创建人 updateUser: this.props.currentUser.name // 最后修改人 }).then(res => { console.log(res) if (res.code === 0) { this.setState({ ...values }) Modal.success({ title: '提交成功', content: '决策代码编译正常,点击“测试按钮”可以继续测试决策逻辑' }) // 跳转到列表页 router.push('/fengkong/strategies/strategies') } }) } }) } test =() => { if (!this.state.name) { message.warn('请先提交决策内容!') return false } if (this.state.timeTaskEnabled) { message.warn('定时启用不能测试,请先关闭!') return false } test({ name: this.state.name, type: this.state.type, input: JSON.parse(this.state.testContent) }).then(res => { if (res.code === 0) { this.setState({ testResult: JSON.stringify(res) }) } }) } addDos = () => { const dos = this.state.dos.slice() dos.push({ r: { ep: '', f: '', v: '' }, ep: '', v: '' }) this.setState({ dos: dos }) } changeDos = (index, key, value) => { const dos = this.state.dos.slice() const keyList = key.split('.') if (keyList.length > 1) { dos[index][keyList[0]][keyList[1]] = value } else { dos[index][keyList[0]] = value } this.setState({ dos: dos }) } removeDos = (index) => { const dos = this.state.dos.slice() dos.slice(index, 1) this.setState({ dos: dos }) } render () { const { getFieldDecorator } = this.props.form return (