king
2023-10-18 81d0d7721bb14a34b1eef99fd9506c3eda4bda99
src/menu/datasource/verifycard/index.jsx
@@ -678,6 +678,55 @@
            resolve()
          })
        } else {
          if (/列名\s*'[a-zA-Z0-9_-]+'\s*无效/.test(result.message)) {
            let tail = ''
            let type = ''
            searches.forEach(item => {
              if (item.forbid) return
              item.key.split(',').forEach(field => {
                if (new RegExp(`'${field}'`).test(result.message)) {
                  tail = field
                  type = '搜索条件'
                }
              })
            })
            if (!tail) {
              let keys = setting.order.replace(/\s+(asc|desc)/ig, '').replace(/\s+/g, '')
              keys.split(',').forEach(field => {
                if (new RegExp(`'${field}'`).test(result.message)) {
                  tail = field
                  type = '排序'
                }
              })
            }
            if (!tail) {
              columns.forEach(item => {
                if (new RegExp(`'${item.field}'`).test(result.message)) {
                  tail = item.field
                  if (config.subtype === 'basetable') {
                    type = '显示列'
                  } else {
                    type = '字段集'
                  }
                }
              })
              if (!tail && config.subtype === 'dualdatacard') {
                subColumns.forEach(item => {
                  if (new RegExp(`'${item.field}'`).test(result.message)) {
                    tail = item.field
                    type = '子表字段集'
                  }
                })
              }
            }
            if (tail) {
              result.message = result.message.replace(/ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。/, '')
              result.message = <>{result.message}<span style={{color: 'red'}}>注:{type}中存在字段{tail}</span></>
            }
          }
          if (type === 'submit') {
            Modal.confirm({
              title: result.message,
@@ -1078,8 +1127,8 @@
            <span>
              自定义脚本
              {scripts.length ? <span className="count-tip">{scripts.length}</span> : null}
              {config.type !== 'interface' && activeKey === 'setting' ? <CopyOutlined title="复制数据源" className="mk-copy-datasource" onClick={(e) => {e.stopPropagation();this.copyDatasource()}}/> : null}
              {config.type !== 'interface' && activeKey === 'setting' ? <SnippetsOutlined title="导入数据源" className="mk-paste-datasource" onClick={(e) => {e.stopPropagation();this.setState({pvisible: true})}}/> : null}
              {activeKey === 'setting' ? <CopyOutlined title="复制数据源" className="mk-copy-datasource" onClick={(e) => {e.stopPropagation();this.copyDatasource()}}/> : null}
              {activeKey === 'setting' ? <SnippetsOutlined title="导入数据源" className="mk-paste-datasource" onClick={(e) => {e.stopPropagation();this.setState({pvisible: true})}}/> : null}
              {activeKey === 'columns' ? <CopyOutlined title="以逗号拼接形式复制字段" className="mk-copy-fields" onClick={(e) => {e.stopPropagation();this.copyColumns()}}/> : null}
              {activeKey === 'subcolumns' ? <CopyOutlined title="以逗号拼接形式复制字段" className="mk-copy-fields" onClick={(e) => {e.stopPropagation();this.copySubColumns()}}/> : null}
              {activeKey === 'subcolumns' || activeKey === 'columns' ? <span onClick={(e) => {e.stopPropagation()}}><Search className="mk-search-fields" defaultValue={searchKey} allowClear onSearch={(val, e) => {e.stopPropagation();this.setState({searchKey: val})}} /></span> : null}