king
2024-08-20 58826d6f4eab9f8c9acf9fa8696f60039c645cfe
src/menu/datasource/verifycard/index.jsx
@@ -41,9 +41,8 @@
    loading: false,
    colLoading: false,
    searchKey: '',
    initsql: '',          // sql验证时变量声明及赋值
    usefulfields: '',
    defaultsql: '',       // 默认Sql
    defaultsql: '',
    systemScripts: [],
    median: {},
    visible: false,
@@ -51,6 +50,7 @@
    pvisible: false,
    reload: false,
    script: null,
    oriConfig: null,
    scriptValue: '',
    cols: null,
    colColumns: [
@@ -200,17 +200,17 @@
    let _setting = fromJS(config.setting).toJS()
    let scripts = config.scripts ? fromJS(config.scripts).toJS() : []
    if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
      window.GLOB.funcs.forEach(m => {
        let reg = new RegExp(`\\/\\*\\$ex@${m.func_code}-begin\\*\\/[\\s\\S]+\\/\\*@ex\\$-end\\*\\/`, 'ig')
        if (_setting.dataresource) {
          _setting.dataresource = _setting.dataresource.replace(reg, `$ex@${m.func_code}@ex$`)
        }
        scripts && scripts.forEach(item => {
          item.sql = item.sql.replace(reg, `$ex@${m.func_code}@ex$`)
        })
      })
    }
    // if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
    //   window.GLOB.funcs.forEach(m => {
    //     let reg = new RegExp(`\\/\\*\\$ex@${m.func_code}-begin\\*\\/[\\s\\S]+\\/\\*@ex\\$-end\\*\\/`, 'ig')
    //     if (_setting.dataresource) {
    //       _setting.dataresource = _setting.dataresource.replace(reg, `$ex@${m.func_code}@ex$`)
    //     }
    //     scripts && scripts.forEach(item => {
    //       item.sql = item.sql.replace(reg, `$ex@${m.func_code}@ex$`)
    //     })
    //   })
    // }
    let columns = config.columns ? fromJS(config.columns).toJS() : []
    let subColumns = config.subColumns ? fromJS(config.subColumns).toJS() : []
@@ -249,7 +249,13 @@
      median: _setting,
      searches: formatSearch(search),
      searchKey: '',
      debugId: _setting.debugId || ''
      debugId: _setting.debugId || '',
      oriConfig: fromJS({
        scripts,
        columns: columns,
        subColumns: subColumns,
        setting: _setting
      }).toJS()
    })
    this.getsysScript()
@@ -547,7 +553,7 @@
  submitDataSource = () => {
    const { config, mainSearch } = this.props
    const { activeKey, setting, columns, subColumns, scripts, cols, median } = this.state
    const { activeKey, setting, columns, subColumns, scripts, cols, median, searches } = this.state
    if (config.subtype === 'dualdatacard') {
      let arr = columns.map(col => col.field.toLowerCase())
@@ -612,12 +618,13 @@
          if (res.useMSearch === 'true') { // 使用主搜索条件
            search = [...search, ...mainSearch]
          }
          let _searches = formatSearch(search)
          this.setState({
            searches: formatSearch(search),
            searches: _searches,
            setting: res
          }, () => {
            this.sqlverify(() => { resolve({setting: res, columns, subColumns, scripts, cols }) }, reject, 'submit')
            this.sqlverify(() => { resolve({setting: res, columns, subColumns, scripts, cols, searches: _searches }) }, reject, 'submit')
          })
        }, () => {
          reject()
@@ -632,7 +639,7 @@
          reject()
          return
        }
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols }) }, reject, 'submit')
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols, searches }) }, reject, 'submit')
      } else if (activeKey === 'subcolumns') {
        if (this.subdatasource && this.subdatasource.state.editingKey) {
          notification.warning({
@@ -643,11 +650,37 @@
          reject()
          return
        }
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols }) }, reject, 'submit')
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols, searches }) }, reject, 'submit')
      } else if (activeKey === 'scripts') {
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols }) }, reject, 'submit')
        this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols, searches }) }, reject, 'submit')
      }
    })
  }
  closeDataSource = (callback) => {
    const { setting, columns, subColumns, scripts, oriConfig } = this.state
    let line = scripts.map(item => item.sql).join('')
    line += columns.map(item => item.field + item.datatype).join('')
    line += subColumns.map(item => item.field + item.datatype).join('')
    line += setting.interType + (setting.dataresource || '') + (setting.order || '') + (setting.primaryKey || '')
    let _line = oriConfig.scripts.map(item => item.sql).join('')
    _line += oriConfig.columns.map(item => item.field + item.datatype).join('')
    _line += oriConfig.subColumns.map(item => item.field + item.datatype).join('')
    _line += oriConfig.setting.interType + (oriConfig.setting.dataresource || '') + (oriConfig.setting.order || '') + (oriConfig.setting.primaryKey || '')
    if (line !== _line) {
      confirm({
        content: '数据源已修改,确定取消吗?',
        onOk() {
          callback()
        },
        onCancel() {}
      })
    } else {
      callback()
    }
  }
  sqlverify = (resolve, reject, type, testScripts) => {
@@ -1251,7 +1284,6 @@
              setting={setting}
              searches={searches}
              defaultsql={defaultsql}
              initsql={this.state.initsql}
              customScripts={scripts}
              systemScripts={this.state.systemScripts}
              scriptsChange={this.scriptsChange}