| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- import React, { Component } from 'react';
- // import { connect } from 'react-redux'
- import axios from 'axios';
- import PropTypes from 'prop-types';
- import { withRouter } from 'react-router-dom';
- import { Form, Switch, Button, message, Icon, Tooltip, Radio } from 'antd';
- import MockCol from './MockCol/MockCol.js';
- import mockEditor from 'client/components/AceEditor/mockEditor';
- import constants from '../../client/constants/variable.js';
- const FormItem = Form.Item;
- class AdvMock extends Component {
- static propTypes = {
- form: PropTypes.object,
- match: PropTypes.object
- };
- constructor(props) {
- super(props);
- this.state = {
- enable: false,
- mock_script: '',
- tab: 'case'
- };
- }
- handleSubmit = e => {
- e.preventDefault();
- let projectId = this.props.match.params.id;
- let interfaceId = this.props.match.params.actionId;
- let params = {
- project_id: projectId,
- interface_id: interfaceId,
- mock_script: this.state.mock_script,
- enable: this.state.enable
- };
- axios.post('/api/plugin/advmock/save', params).then(res => {
- if (res.data.errcode === 0) {
- message.success('保存成功');
- } else {
- message.error(res.data.errmsg);
- }
- });
- };
- componentWillMount() {
- this.getAdvMockData();
- }
- async getAdvMockData() {
- let interfaceId = this.props.match.params.actionId;
- let result = await axios.get('/api/plugin/advmock/get?interface_id=' + interfaceId);
- if (result.data.errcode === 0) {
- let mockData = result.data.data;
- this.setState({
- enable: mockData.enable,
- mock_script: mockData.mock_script
- });
- }
- let that = this;
- mockEditor({
- container: 'mock-script',
- data: that.state.mock_script,
- onChange: function(d) {
- that.setState({
- mock_script: d.text
- });
- }
- });
- }
- onChange = v => {
- this.setState({
- enable: v
- });
- };
- handleTapChange = e => {
- this.setState({
- tab: e.target.value
- });
- };
- render() {
- const formItemLayout = {
- labelCol: {
- sm: { span: 4 }
- },
- wrapperCol: {
- sm: { span: 16 }
- }
- };
- const tailFormItemLayout = {
- wrapperCol: {
- sm: {
- span: 16,
- offset: 11
- }
- }
- };
- const { tab } = this.state;
- const isShowCase = tab === 'case';
- return (
- <div style={{ padding: '20px 10px' }}>
- <div style={{ textAlign: 'center', marginBottom: 20 }}>
- <Radio.Group value={tab} size="large" onChange={this.handleTapChange}>
- <Radio.Button value="case">期望</Radio.Button>
- <Radio.Button value="script">脚本</Radio.Button>
- </Radio.Group>
- </div>
- <div style={{ display: isShowCase ? 'none' : '' }}>
- <Form onSubmit={this.handleSubmit}>
- <FormItem
- label={
- <span>
- 是否开启 <a
- target="_blank"
- rel="noopener noreferrer"
- href={constants.docHref.adv_mock_script}
- >
- <Tooltip title="点击查看文档">
- <Icon type="question-circle-o" />
- </Tooltip>
- </a>
- </span>
- }
- {...formItemLayout}
- >
- <Switch
- checked={this.state.enable}
- onChange={this.onChange}
- checkedChildren="开"
- unCheckedChildren="关"
- />
- </FormItem>
- <FormItem label="Mock脚本" {...formItemLayout}>
- <div id="mock-script" style={{ minHeight: '500px' }} />
- </FormItem>
- <FormItem {...tailFormItemLayout}>
- <Button type="primary" htmlType="submit">
- 保存
- </Button>
- </FormItem>
- </Form>
- </div>
- <div style={{ display: isShowCase ? '' : 'none' }}>
- <MockCol />
- </div>
- </div>
- );
- }
- }
- module.exports = Form.create()(withRouter(AdvMock));
|