mock平台

ProjectRequest.js 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import React, { PureComponent as Component } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { connect } from 'react-redux';
  4. import { Form, Button, message } from 'antd';
  5. const FormItem = Form.Item;
  6. import './project-request.scss';
  7. import AceEditor from 'client/components/AceEditor/AceEditor';
  8. import { updateProjectScript, getProject } from '../../../../reducer/modules/project';
  9. @connect(
  10. state => {
  11. return {
  12. projectMsg: state.project.currProject
  13. };
  14. },
  15. {
  16. updateProjectScript,
  17. getProject
  18. }
  19. )
  20. @Form.create()
  21. export default class ProjectRequest extends Component {
  22. static propTypes = {
  23. projectMsg: PropTypes.object,
  24. updateProjectScript: PropTypes.func,
  25. getProject: PropTypes.func,
  26. projectId: PropTypes.number
  27. };
  28. componentWillMount() {
  29. this.setState({
  30. pre_script: this.props.projectMsg.pre_script,
  31. after_script: this.props.projectMsg.after_script
  32. });
  33. }
  34. handleSubmit = async () => {
  35. let result = await this.props.updateProjectScript({
  36. id: this.props.projectId,
  37. pre_script: this.state.pre_script,
  38. after_script: this.state.after_script
  39. });
  40. if (result.payload.data.errcode === 0) {
  41. message.success('保存成功');
  42. await this.props.getProject(this.props.projectId);
  43. } else {
  44. message.success('保存失败, ' + result.payload.data.errmsg);
  45. }
  46. };
  47. render() {
  48. const formItemLayout = {
  49. labelCol: {
  50. xs: { span: 24 },
  51. sm: { span: 6 }
  52. },
  53. wrapperCol: {
  54. xs: { span: 24 },
  55. sm: { span: 16 }
  56. }
  57. };
  58. const tailFormItemLayout = {
  59. wrapperCol: {
  60. xs: {
  61. span: 24,
  62. offset: 0
  63. },
  64. sm: {
  65. span: 16,
  66. offset: 8
  67. }
  68. }
  69. };
  70. const { pre_script, after_script } = this.state;
  71. return (
  72. <div className="project-request">
  73. <Form onSubmit={this.handleSubmit}>
  74. <FormItem {...formItemLayout} label="Pre-request Script(请求参数处理脚本)">
  75. <AceEditor
  76. data={pre_script}
  77. onChange={editor => this.setState({ pre_script: editor.text })}
  78. fullScreen={true}
  79. className="request-editor"
  80. />
  81. </FormItem>
  82. <FormItem {...formItemLayout} label="Pre-response Script(响应数据处理脚本)">
  83. <AceEditor
  84. data={after_script}
  85. onChange={editor => this.setState({ after_script: editor.text })}
  86. fullScreen={true}
  87. className="request-editor"
  88. />
  89. </FormItem>
  90. <FormItem {...tailFormItemLayout}>
  91. <Button onClick={this.handleSubmit} type="primary">
  92. 保存
  93. </Button>
  94. </FormItem>
  95. </Form>
  96. </div>
  97. );
  98. }
  99. }