king
2022-02-08 f393af9623c26ae177a3f69b8676afc4e23bff8d
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,        // 组件配置信息
  }
@@ -43,7 +42,7 @@
        dataIndex: 'label',
        inputType: 'input',
        editable: true,
        width: '28%'
        width: '20%'
      },
      {
        title: '字段',
@@ -52,7 +51,7 @@
        editable: true,
        unique: true,
        copy: true,
        width: '28%'
        width: '20%'
      },
      {
        title: '数据类型',
@@ -91,8 +90,15 @@
          { value: 'datetime', text: 'datetime' },
        ],
        editable: true,
        width: '25%',
      }
        width: '20%',
      },
      {
        title: '备注',
        dataIndex: 'remark',
        inputType: 'textarea',
        editable: true,
        width: '20%'
      },
    ],
    scriptsColumns: [
      {
@@ -102,12 +108,12 @@
        render: (text) => {
          let title = text.match(/^\s*\/\*.+\*\//)
          title = title && title[0] ? title[0] : ''
          text = title ? text.replace(title, '') : text
          let _text = title ? text.replace(title, '') : text
          return (
            <div>
              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
            </div>
          )
        }
@@ -137,14 +143,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>)
      }
@@ -161,7 +167,7 @@
    }
    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 => {
@@ -183,7 +189,7 @@
    this.setState({
      scripts,
      columns: fromJS(config.columns).toJS(),
      columns: config.columns ? fromJS(config.columns).toJS() : [],
      setting: _setting,
      searches: search,
      defaultSearch: _search
@@ -646,7 +652,7 @@
  }
  render() {
    const { menu, config } = this.props
    const { config } = this.props
    const { columns, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql } = this.state
    return (
@@ -655,7 +661,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}
@@ -671,7 +676,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={