king
2025-04-21 f3d4db769ba9b51b799d981511a710fd443d0e08
src/templates/zshare/pasteform/index.jsx
@@ -7,7 +7,7 @@
class MainSearch extends Component {
  static propTpyes = {
    dict: PropTypes.object     // 字典项
    inputSubmit: PropTypes.func // 回车事件
  }
  componentDidMount () {
@@ -16,7 +16,7 @@
      if (_form && _form.select) {
        _form.select()
      }
    } catch {
    } catch (e) {
      console.warn('Form focusing error!')
    }
  }
@@ -26,17 +26,45 @@
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          let _config = values.config
          let _config = values.config.replace(/(\n|\s)+/g, '')
          if (!_config) {
            notification.warning({
              top: 92,
              message: '请输入配置信息',
              duration: 5
            })
            reject()
            return
          }
          try {
            _config = JSON.parse(window.decodeURIComponent(window.atob(_config)))
          } catch (e) {
            notification.warning({
              top: 92,
              message: '解析错误',
              duration: 10
            })
            _config = ''
            // 通过sql语句添加字段集
            if (/[a-zA-Z0-9_]+\s+(nvarchar\(\d+\)|Decimal\(18,\d+\)|Int|datetime|date)/ig.test(values.config)) {
              _config = {
                key: 'datasourcefield',
                type: 'array',
                data: []
              }
              let list = values.config.match(/[a-zA-Z0-9_]+\s+(nvarchar\(\d+\)|Decimal\(18,\d+\)|Int|datetime|date)/ig)
              list.forEach(item => {
                _config.data.unshift({
                  datatype: item.split(/\s+/)[1],
                  field: item.split(/\s+/)[0],
                  label: item.split(/\s+/)[0],
                })
              })
            } else {
              notification.warning({
                top: 92,
                message: '解析错误',
                duration: 5
              })
              _config = ''
            }
          }
          if (_config) {
@@ -47,6 +75,14 @@
        }
      })
    })
  }
  enterPress = (e) => {
    e.stopPropagation()
    setTimeout(() => {
      this.props.inputSubmit && this.props.inputSubmit()
    }, 200)
  }
  render() {
@@ -65,16 +101,16 @@
      <Form {...formItemLayout} className="config-paste-form">
        <Row gutter={24}>
          <Col span={24}>
            <Form.Item label="配置信息" className="textarea">
            <Form.Item label="" className="textarea">
              {getFieldDecorator('config', {
                initialValue: '',
                rules: [
                  {
                    required: true,
                    message: this.props.dict['form.required.input'] + '配置信息!'
                    message: '请输入配置信息!'
                  }
                ]
              })(<TextArea autosize={{ minRows: 4, maxRows: 8 }} />)}
              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }} onPressEnter={this.enterPress}/>)}
            </Form.Item>
          </Col>
        </Row>