king
2023-08-27 da64ab0923bf8817fc8599a6e37b953ce38f64c8
src/menu/modalconfig/index.jsx
@@ -20,8 +20,9 @@
const { Panel } = Collapse
const { confirm } = Modal
const TableComponent = asyncComponent(() => import('./tablecomponent'))
const ModalForm = asyncComponent(() => import('@/templates/zshare/modalform'))
const EditComponent = asyncComponent(() => import('@/templates/zshare/editcomponent'))
const PasteForms = asyncComponent(() => import('@/menu/components/share/pasteforms'))
const DragElement = asyncComponent(() => import('@/templates/modalconfig/dragelement'))
const FieldsComponent = asyncComponent(() => import('@/templates/sharecomponent/fieldscomponent'))
@@ -114,50 +115,48 @@
    let _linkableFields = []
    let _linksupFields = []
    let standardform = null
    let uniq = new Map()
    let index = null
    uniq.set(card.field, true)
    config.fields.forEach((item, i) => {
      if (card.uuid === item.uuid) {
        index = i
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
      if (!item.field || card.field === item.field) return
      if (['text', 'number', 'textarea', 'color'].includes(item.type)) {
        _inputfields.push({
          field: item.field,
          label: item.label
        })
      }
      if (card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
      if (item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: item.label
        })
      }
      if (item.type === 'switch') {
      if (item.type === 'switch' || item.type === 'check') {
        _linksupFields.push({
          field: item.field,
          label: item.label
        })
      }
      if (!['select', 'link', 'radio', 'checkcard'].includes(item.type)) return
      if (item.type === 'checkcard' && item.multiple === 'true') return // 选项卡多选
      if (item.field && !uniq.has(item.field)) {
        uniq.set(item.field, true)
      if (!['select', 'link', 'radio', 'checkcard', 'multiselect'].includes(item.type)) return
        _linkableFields.push({
          field: item.field,
          label: item.label + '-表单'
        })
        _linksupFields.push({
          field: item.field,
          label: item.label
        })
      }
      _linksupFields.push({
        field: item.field,
        label: item.label
      })
      if (item.type === 'multiselect' || (item.type === 'checkcard' && item.multiple === 'true')) return
      _linkableFields.push({
        field: item.field,
        label: item.label + '-表单'
      })
    })
    if (index !== null) {
      if (index === 0) {
@@ -172,10 +171,9 @@
      columns = componentConfig.subColumns || []
    }
    let _fields = _linkableFields.map(cell => cell.field)
    columns.forEach(col => {
      if (col.field && !uniq.has(col.field)) {
        uniq.set(col.field, true)
      if (col.field && !_fields.includes(col.field)) {
        _linkableFields.push({
          field: col.field,
          label: col.label + '-显示列'
@@ -237,6 +235,8 @@
        if (item.uuid !== res.uuid && res.field && item.field && item.field.toLowerCase() === res.field.toLowerCase()) {
          fieldrepet = true
        }
        delete item.focus
        if (item.uuid === res.uuid) {
          if (item.style) {
@@ -458,44 +458,8 @@
    })
  }
  plusFields = (items, type) => {
  plusFields = (items) => {
    let _config = fromJS(this.state.config).toJS()
    if (type === 'forms') {
      if (_config.fields.length > 0) {
        let that = this
        _config.fields = items.fields.map(item => {
          item.uuid = Utils.getuuid()
          return item
        })
        confirm({
          title: '确定替换表单吗?',
          content: '原表单将删除。',
          onOk() {
            that.setState({
              config: _config
            })
          },
          onCancel() {}
        })
      } else {
        _config.fields = items.fields.map(item => {
          item.uuid = Utils.getuuid()
          return item
        })
        this.setState({
          config: _config
        })
        notification.success({
          top: 92,
          message: '粘贴成功!',
          duration: 2
        })
      }
      return
    }
    _config.fields.push(...items)
@@ -505,6 +469,15 @@
      if (items.length === 1 && items[0].focus) {
        this.handleForm(items[0])
      }
    })
  }
  pasteFields = (items) => {
    let _config = fromJS(this.state.config).toJS()
    _config.fields = items
    this.setState({
      config: _config
    })
  }
@@ -543,13 +516,16 @@
  render () {
    const { btn } = this.props
    const { config, saving } = this.state
    const { config, saving, card } = this.state
    return (
      <div className="modal-form-board">
        <DndProvider backend={HTML5Backend}>
          <div className="tools">
            <Collapse accordion defaultActiveKey="1" bordered={false}>
              <Panel header="基本信息" key="0">
                <TableComponent />
              </Panel>
              <Panel header="表单" key="1">
                <div className="search-element">
                  {SearchItems.map((item, index) => {
@@ -564,7 +540,7 @@
            <Card title="表单配置" bordered={false} extra={
              <div>
                <Button type="danger" onClick={this.clearConfig}>清空</Button>
                <EditComponent options={['form', 'forms']} type="formboard" config={this.state.config} plusFields={this.plusFields}/>
                <PasteForms type="toolbar" config={config} update={this.pasteFields}/>
                <Button type="primary" id="save-modal-config" loading={saving} onClick={this.submitConfig}>保存</Button>
                <Button onClick={this.cancelConfig}>返回</Button>
              </div>
@@ -608,7 +584,8 @@
          </div>
        </DndProvider>
        <Modal
          title="编辑"
          title={card && card.$copy ? '复制' : '编辑'}
          wrapClassName="mk-scroll-modal"
          visible={this.state.visible}
          width={950}
          maskClosable={false}
@@ -618,7 +595,7 @@
          destroyOnClose
        >
          <ModalForm
            card={this.state.card}
            card={card}
            formlist={this.state.formlist}
            inputSubmit={this.handleSubmit}
            standardform={this.state.standardform}