king
2025-04-21 f3d4db769ba9b51b799d981511a710fd443d0e08
src/templates/zshare/pasteform/index.jsx
@@ -26,31 +26,45 @@
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          let _config = values.config
          try {
            _config = JSON.parse(window.decodeURIComponent(window.atob(_config)))
          let _config = values.config.replace(/(\n|\s)+/g, '')
            if (typeof(_config) === 'object' && _config.$srcId) {
              let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
              if (srcid && _config.$srcId !== srcid) {
                notification.warning({
                  top: 92,
                  message: '当前系统无权限使用此项配置!',
                  duration: 5
                })
                _config = ''
              } else {
                delete _config.$srcId
              }
            }
          } catch (e) {
          if (!_config) {
            notification.warning({
              top: 92,
              message: '解析错误',
              message: '请输入配置信息',
              duration: 5
            })
            _config = ''
            reject()
            return
          }
          try {
            _config = JSON.parse(window.decodeURIComponent(window.atob(_config)))
          } catch (e) {
            // 通过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) {
@@ -61,6 +75,14 @@
        }
      })
    })
  }
  enterPress = (e) => {
    e.stopPropagation()
    setTimeout(() => {
      this.props.inputSubmit && this.props.inputSubmit()
    }, 200)
  }
  render() {
@@ -79,7 +101,7 @@
      <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: [
@@ -88,7 +110,7 @@
                    message: '请输入配置信息!'
                  }
                ]
              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }}/>)}
              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }} onPressEnter={this.enterPress}/>)}
            </Form.Item>
          </Col>
        </Row>