king
2022-01-21 46f79b491173d284a4900d19e7aecf7509481438
src/menu/datasource/verifycard/index.jsx
@@ -1,8 +1,8 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { fromJS } from 'immutable'
import { Form, Tabs, Popconfirm, Icon, notification, Modal, Typography, Spin, message } from 'antd'
import { StopOutlined, CheckCircleOutlined } from '@ant-design/icons'
import { Form, Tabs, Popconfirm, notification, Modal, Typography, Spin, message } from 'antd'
import { StopOutlined, CheckCircleOutlined, EditOutlined, SwapOutlined, DeleteOutlined, CopyOutlined } from '@ant-design/icons'
import moment from 'moment'
import Api from '@/api'
@@ -24,7 +24,6 @@
class VerifyCard extends Component {
  static propTpyes = {
    dict: PropTypes.object,          // 字典项
    menu: PropTypes.object,          // 菜单配置信息
    config: PropTypes.object,        // 组件配置信息
  }
@@ -137,14 +136,14 @@
        dataIndex: 'operation',
        render: (text, record) =>
          (<div style={{textAlign: 'center'}}>
            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record)} style={{color: '#1890ff'}}><Icon type="edit" /></span>
            <span className="operation-btn" title={this.props.dict['model.status.change']} onClick={() => this.handleStatus(record)} style={{color: '#8E44AD'}}><Icon type="swap" /></span>
            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record)} style={{color: '#1890ff'}}><EditOutlined /></span>
            <span className="operation-btn" title={this.props.dict['model.status.change']} onClick={() => this.handleStatus(record)} style={{color: '#8E44AD'}}><SwapOutlined /></span>
            <Popconfirm
              overlayClassName="popover-confirm"
              title={this.props.dict['model.query.delete']}
              onConfirm={() => this.deleteScript(record)
            }>
              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
              <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
            </Popconfirm>
          </div>)
      }
@@ -152,7 +151,7 @@
  }
  UNSAFE_componentWillMount() {
    const { config, mainSearch, menu } = this.props
    const { config, mainSearch } = this.props
    let search = config.search || []
@@ -160,47 +159,8 @@
      search = [...search, ...mainSearch]
    }
    let Marks = []
    let getcomponentmarks = (box, conf) => {
      if (!conf.parentId && box.Template === 'CustomPage') {
        box.components.forEach(item => {
          if (item.type === 'group') {
            item.components.forEach(cell => {
              if (cell.uuid !== conf.uuid && cell.setting && cell.setting.varMark) {
                Marks.push(cell.setting.varMark.toLowerCase())
              }
            })
          } else if (item.uuid !== conf.uuid && item.setting && item.setting.varMark) {
            Marks.push(item.setting.varMark.toLowerCase())
          }
        })
      } else if (conf.parentId === box.parentId && conf.tabId === box.uuid) {
        box.components.forEach(item => {
          if (item.type === 'group') {
            item.components.forEach(cell => {
              if (cell.uuid !== conf.uuid && cell.setting && cell.setting.varMark) {
                Marks.push(cell.setting.varMark.toLowerCase())
              }
            })
          } else if (item.uuid !== conf.uuid && item.setting && item.setting.varMark) {
            Marks.push(item.setting.varMark.toLowerCase())
          }
        })
      } else {
        box.components.forEach(item => {
          if (item.type !== 'tabs') return
          item.subtabs.forEach(tab => {
            getcomponentmarks(tab, conf)
          })
        })
      }
    }
    getcomponentmarks(menu, config)
    let _setting = fromJS(config.setting).toJS()
    let scripts = fromJS(config.scripts).toJS()
    let scripts = config.scripts ? fromJS(config.scripts).toJS() : []
    if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
      window.GLOB.funcs.forEach(m => {
@@ -222,11 +182,10 @@
    this.setState({
      scripts,
      columns: fromJS(config.columns).toJS(),
      columns: config.columns ? fromJS(config.columns).toJS() : [],
      setting: _setting,
      searches: search,
      defaultSearch: _search,
      varMarks: Marks
      defaultSearch: _search
    })
    this.getsysScript()
@@ -376,7 +335,7 @@
  changeTab = (val) => {
    const { config, mainSearch } = this.props
    const { activeKey, varMarks } = this.state
    const { activeKey } = this.state
    this.setState({loading: true})
    if (activeKey === 'setting') {
@@ -385,18 +344,6 @@
        if (res.useMSearch === 'true') { // 使用主搜索条件
          search = [...search, ...mainSearch]
        }
        if (res.varMark && varMarks.includes(res.varMark.toLowerCase())) {
          notification.warning({
            top: 92,
            message: '变量标识不可重复!',
            duration: 5
          })
          this.setState({
            loading: false
          })
          return
        }
        let _search = this.formatSearch(search)
@@ -529,7 +476,7 @@
  submitDataSource = () => {
    const { config, mainSearch } = this.props
    const { activeKey, setting, columns, scripts, varMarks } = this.state
    const { activeKey, setting, columns, scripts } = this.state
    return new Promise((resolve, reject) => {
      if (activeKey === 'setting') {
@@ -538,16 +485,6 @@
          if (res.useMSearch === 'true') { // 使用主搜索条件
            search = [...search, ...mainSearch]
          }
          if (res.varMark && varMarks.includes(res.varMark.toLowerCase())) {
            notification.warning({
              top: 92,
              message: '变量标识不可重复!',
              duration: 5
            })
            reject()
            return
          }
          let _search = this.formatSearch(search)
@@ -708,7 +645,7 @@
  }
  render() {
    const { menu, config } = this.props
    const { config } = this.props
    const { columns, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql } = this.state
    return (
@@ -717,7 +654,6 @@
        <Tabs activeKey={activeKey} className="data-source-card-box" onChange={this.changeTab}>
          <TabPane tab="数据源" key="setting">
            <SettingForm
              menu={menu}
              dict={this.props.dict}
              config={config}
              columns={columns}
@@ -733,7 +669,7 @@
              type="fields"
              updatefield={this.updatefields}
            />
            <Icon type="copy" title="以逗号拼接形式复制字段" onClick={this.copyColumns} style={{position: 'absolute', cursor: 'pointer', zIndex: 1, top: '-35px', right: '0px', color: '#1890ff'}} />
            <CopyOutlined title="以逗号拼接形式复制字段" onClick={this.copyColumns} style={{position: 'absolute', cursor: 'pointer', zIndex: 1, top: '-35px', right: '0px', color: '#1890ff'}} />
            <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} type="datasourcefield" data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/>
          </TabPane>
          <TabPane tab={