king
2023-08-27 da64ab0923bf8817fc8599a6e37b953ce38f64c8
src/templates/zshare/modalform/datatable/index.jsx
@@ -6,9 +6,11 @@
import { PlusOutlined, EditOutlined, DeleteOutlined, SwapOutlined } from '@ant-design/icons'
import Utils from '@/utils/utils.js'
import FileUpload from '@/tabviews/zshare/fileupload'
import asyncComponent from '@/utils/asyncComponent'
// import FileUpload from '@/tabviews/zshare/fileupload'
import './index.scss'
const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent'))
const EditableContext = React.createContext()
let dragingIndex = -1
@@ -73,12 +75,13 @@
  getInput = (form) => {
    const { inputType, record } = this.props
    if (inputType === 'file') {
      return <FileUpload config={{
        initval: record ? (record.$url || '') : '',
        suffix: '',
        maxfile: 1,
        fileType: 'picture-card'
      }}/>
      return <SourceComponent initialValue={record ? (record.$url || '') : ''} type="" placement="right"/>
      // return <FileUpload config={{
      //   initval: record ? (record.$url || '') : '',
      //   suffix: '',
      //   maxfile: 1,
      //   fileType: 'picture-card'
      // }}/>
    } else {
      return <Input onPressEnter={() => this.getValue(form)} />
    }
@@ -143,7 +146,6 @@
class EdiDataTable extends Component {
  static propTpyes = {
    dict: PropTypes.object,         // 字典项
    transfield: PropTypes.object,   // 字段名称
    type: PropTypes.string,         // 是否为关联表单
    display: PropTypes.string,      // 数据类型,文本、图片
@@ -172,6 +174,7 @@
      !is(fromJS(this.props.fields), fromJS(nextProps.fields)) ||
      !is(fromJS(this.props.linkSubFields), fromJS(nextProps.linkSubFields)) ||
      this.props.display !== nextProps.display ||
      (nextProps.multiple && this.props.multiple !== nextProps.multiple) ||
      this.props.type !== nextProps.type
    ) {
      this.setState({editingKey: ''}, () => {
@@ -183,9 +186,9 @@
  }
  getCloumns = () => {
    const { display, fields, linkSubFields, transfield, type } = this.props
    const { display, fields, linkSubFields, transfield, type, multiple } = this.props
    let columns = []
    let keys = ['ParentID']
    let keys = ['ParentID', 'pid']
    if (display === 'picture') {
      columns.push({
@@ -199,16 +202,27 @@
          return <span style={{display: 'block', width: '70px', height: '70px'}}><img style={{width: '100%', height: '100%'}} src={text} alt="" /></span>
        }
      })
    } else {
      columns = fields.map(item => {
        keys.push(item.field)
        return {
          title: item.field,
          dataIndex: item.field,
          editable: true,
    } else if (display === 'color') {
      columns.push({
        title: 'Color',
        dataIndex: '$color',
        inputType: 'text',
        editable: true,
        render: (text) => {
          if (!text) return ''
          return <div style={{height: '20px', background: text}}></div>
        }
      })
    }
    fields.forEach(item => {
      keys.push(item.field)
      columns.push({
        title: item.field,
        dataIndex: item.field,
        editable: true,
      })
    })
    if (linkSubFields.length > 0) {
      linkSubFields.forEach(m => {
@@ -227,6 +241,14 @@
      dataIndex: '$value',
      editable: true,
    })
    if (multiple === 'dropdown' && display === 'text') {
      columns.unshift({
        title: 'pid',
        dataIndex: 'pid',
        editable: true,
      })
    }
    if (type === 'link') {
      columns.unshift({
@@ -261,7 +283,7 @@
            <span className="hide-control" title="显示/隐藏" onClick={() => {editingKey === '' && this.handleHide(record.key)}}><SwapOutlined /></span>
            {editingKey === '' ? <Popconfirm
              overlayClassName="popover-confirm"
              title={this.props.dict['model.query.delete']}
              title="确定删除吗?"
              onConfirm={() => this.handleDelete(record.key)
            }>
              <span className="danger"><DeleteOutlined /></span>
@@ -369,11 +391,13 @@
    if (display === 'picture') {
      item.$url = ''
    } else {
      fields.forEach(f => {
        item[f.field] = `${this.state.data.length + 1}`
      })
    } else if (display === 'color') {
      item.$color = ''
    }
    fields.forEach(f => {
      item[f.field] = `${this.state.data.length + 1}`
    })
    let data = [...this.state.data, item]
@@ -416,6 +440,8 @@
  }
  render() {
    const { display, fields } = this.props
    const components = {
      body: {
        row: DragableBodyRow,
@@ -441,9 +467,9 @@
    })
    let addable = false
    if (this.props.display === 'picture') {
    if (display === 'picture' || display === 'color') {
      addable = true
    } else if (this.props.fields && this.props.fields.length > 0) {
    } else if (fields && fields.length > 0) {
      addable = true
    }