king
2025-02-06 d1cd5af5adb53e91efdd278328e1b6f8ad834fb5
src/menu/replaceField/index.jsx
@@ -12,7 +12,6 @@
class ReplaceField extends Component {
  static propTpyes = {
    type: PropTypes.string,
    config: PropTypes.object,
    updateConfig: PropTypes.func
  }
@@ -155,305 +154,281 @@
  // 依据原字段替换为新字段
  exec = (map) => {
    const { type } = this.props
    let config = fromJS(this.props.config).toJS()
    if (type === 'custom') {
      let _replace = (components) => {
        return components.map(item => {
          if (item.type === 'tabs') {
            item.subtabs.forEach(tab => {
              tab.components = _replace(tab.components)
            })
            return item
          } else if (item.type === 'group') {
            item.components = _replace(item.components)
            return item
          }
          if (item.columns) {
            item.columns = item.columns.map(col => {
              let cell = map[col.field.toLowerCase()]
              if (cell) {
                col.field = cell.FieldName
                if (cell.datatype) {
                  col.datatype = cell.datatype
    let _replace = (components) => {
      return components.map(item => {
        if (item.type === 'tabs') {
          item.subtabs.forEach(tab => {
            tab.components = _replace(tab.components)
          })
          return item
        } else if (item.type === 'group') {
          item.components = _replace(item.components)
          return item
        }
        if (item.columns) {
          item.columns = item.columns.map(col => {
            let cell = map[col.field.toLowerCase()]
            if (cell) {
              col.field = cell.FieldName
              if (cell.datatype) {
                col.datatype = cell.datatype
              }
            }
            return col
          })
        }
        if (item.search) {
          item.search = item.search.map(col => {
            if (col.field && map[col.field.toLowerCase()]) {
              col.field = map[col.field.toLowerCase()].FieldName
            }
            return col
          })
        }
        if (item.action) {
          item.action.forEach(m => {
            if (m.modal && m.modal.fields) {
              m.modal.fields = m.modal.fields.map(col => {
                if (col.field && map[col.field.toLowerCase()]) {
                  col.field = map[col.field.toLowerCase()].FieldName
                }
              }
              return col
            })
          }
          if (item.search) {
            item.search = item.search.map(col => {
              if (col.field && map[col.field.toLowerCase()]) {
                col.field = map[col.field.toLowerCase()].FieldName
              }
              return col
            })
          }
          if (item.action) {
            item.action.forEach(m => {
              if (m.modal && m.modal.fields) {
                m.modal.fields = m.modal.fields.map(col => {
                  if (col.field && map[col.field.toLowerCase()]) {
                    col.field = map[col.field.toLowerCase()].FieldName
                  }
                  return col
                })
              }
              if (m.verify && m.verify.columns) {
                m.verify.columns = m.verify.columns.map(col => {
                  if (col.Column && map[col.Column.toLowerCase()]) {
                    col.Column = map[col.Column.toLowerCase()].FieldName
                  }
                  return col
                })
              }
              if (m.config && m.config.components) {
                m.config.components = _replace(m.config.components)
              }
            })
          }
          if (item.subcards) {
            item.subcards.forEach(card => {
              if (card.elements) { // 卡片
                card.elements = card.elements.map(m => {
                  if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                    m.field = map[m.field.toLowerCase()].FieldName
                  }
                  if (m.modal && m.modal.fields) {
                    m.modal.fields = m.modal.fields.map(col => {
                      if (col.field && map[col.field.toLowerCase()]) {
                        col.field = map[col.field.toLowerCase()].FieldName
                      }
                      return col
                    })
                  }
                  if (m.verify && m.verify.columns) {
                    m.verify.columns = m.verify.columns.map(col => {
                      if (col.Column && map[col.Column.toLowerCase()]) {
                        col.Column = map[col.Column.toLowerCase()].FieldName
                      }
                      return col
                    })
                  }
                  if (m.config && m.config.components) {
                    m.config.components = _replace(m.config.components)
                  }
                  return m
                })
              }
              if (card.backElements) { // 卡片
                card.backElements = card.backElements.map(m => {
                  if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                    m.field = map[m.field.toLowerCase()].FieldName
                  }
                  if (m.modal && m.modal.fields) {
                    m.modal.fields = m.modal.fields.map(col => {
                      if (col.field && map[col.field.toLowerCase()]) {
                        col.field = map[col.field.toLowerCase()].FieldName
                      }
                      return col
                    })
                  }
                  if (m.verify && m.verify.columns) {
                    m.verify.columns = m.verify.columns.map(col => {
                      if (col.Column && map[col.Column.toLowerCase()]) {
                        col.Column = map[col.Column.toLowerCase()].FieldName
                      }
                      return col
                    })
                  }
                  if (m.config && m.config.components) {
                    m.config.components = _replace(m.config.components)
                  }
                  return m
                })
              }
              if (card.fields) { // 表单
                card.fields = card.fields.map(m => {
                  if (m.field && map[m.field.toLowerCase()]) {
                    m.field = map[m.field.toLowerCase()].FieldName
                  }
                  return m
                })
              }
            })
          }
          if (item.elements) {
            item.elements = item.elements.map(m => {
              if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                m.field = map[m.field.toLowerCase()].FieldName
              }
              if (m.modal && m.modal.fields) {
                m.modal.fields = m.modal.fields.map(col => {
                  if (col.field && map[col.field.toLowerCase()]) {
                    col.field = map[col.field.toLowerCase()].FieldName
                  }
                  return col
                })
              }
              if (m.verify && m.verify.columns) {
                m.verify.columns = m.verify.columns.map(col => {
                  if (col.Column && map[col.Column.toLowerCase()]) {
                    col.Column = map[col.Column.toLowerCase()].FieldName
                  }
                  return col
                })
              }
              if (m.config && m.config.components) {
                m.config.components = _replace(m.config.components)
              }
              return m
            })
          }
          if (item.plot) {
            if (item.plot.Xaxis && map[item.plot.Xaxis.toLowerCase()]) {
              item.plot.Xaxis = map[item.plot.Xaxis.toLowerCase()].FieldName
            }
            // 统计图
            if (item.plot.InfoValue && map[item.plot.InfoValue.toLowerCase()]) {
              item.plot.InfoValue = map[item.plot.InfoValue.toLowerCase()].FieldName
            }
            if (item.plot.InfoType && map[item.plot.InfoType.toLowerCase()]) {
              item.plot.InfoType = map[item.plot.InfoType.toLowerCase()].FieldName
            }
            // 占比图
            if (item.plot.valueField && map[item.plot.valueField.toLowerCase()]) {
              item.plot.valueField = map[item.plot.valueField.toLowerCase()].FieldName
            }
            if (item.plot.labelField && map[item.plot.labelField.toLowerCase()]) {
              item.plot.labelField = map[item.plot.labelField.toLowerCase()].FieldName
            }
            // 饼图
            if (item.plot.type && map[item.plot.type.toLowerCase()]) {
              item.plot.type = map[item.plot.type.toLowerCase()].FieldName
            }
            // 散点图
            if (item.plot.gender && map[item.plot.gender.toLowerCase()]) {
              item.plot.gender = map[item.plot.gender.toLowerCase()].FieldName
            }
            if (item.Yaxis) {
              if (Array.isArray(item.Yaxis)) {
                item.Yaxis = item.Yaxis.map(m => {
                  if (map[m.toLowerCase()]) {
                    return map[m.toLowerCase()].FieldName
                  }
                  return m
                })
              } else {
                if (item.Yaxis && map[item.Yaxis.toLowerCase()]) {
                  item.Yaxis = map[item.Yaxis.toLowerCase()].FieldName
                }
              }
            }
          }
          if (item.cols) {
            let _update = (cols) => {
              return cols.map(col => {
                if (col.type === 'custom' && col.elements) {
                  col.elements = col.elements.map(m => {
                    if (m.eleType === 'button') {
                      if (m.modal && m.modal.fields) {
                        m.modal.fields = m.modal.fields.map(col => {
                          if (col.field && map[col.field.toLowerCase()]) {
                            col.field = map[col.field.toLowerCase()].FieldName
                          }
                          return col
                        })
                      }
                      if (m.verify && m.verify.columns) {
                        m.verify.columns = m.verify.columns.map(col => {
                          if (col.Column && map[col.Column.toLowerCase()]) {
                            col.Column = map[col.Column.toLowerCase()].FieldName
                          }
                          return col
                        })
                      }
                      if (m.config && m.config.components) {
                        m.config.components = _replace(m.config.components)
                      }
                    } else {
                      if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                        m.field = map[m.field.toLowerCase()].FieldName
                      }
                    }
                    return m
                  })
                } else if (col.type === 'colspan') {
                  col.subcols = _update(col.subcols)
                } else if (col.field) {
                  if (map[col.field.toLowerCase()]) {
                    col.field = map[col.field.toLowerCase()].FieldName
                  }
                }
                return col
              })
            }
            if (m.verify && m.verify.columns) {
              m.verify.columns = m.verify.columns.map(col => {
                if (col.Column && map[col.Column.toLowerCase()]) {
                  col.Column = map[col.Column.toLowerCase()].FieldName
                }
                return col
              })
            }
            if (m.config && m.config.components) {
              m.config.components = _replace(m.config.components)
            }
          })
        }
            item.cols = _update(item.cols)
        if (item.subcards) {
          item.subcards.forEach(card => {
            if (card.elements) { // 卡片
              card.elements = card.elements.map(m => {
                if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                  m.field = map[m.field.toLowerCase()].FieldName
                }
                if (m.modal && m.modal.fields) {
                  m.modal.fields = m.modal.fields.map(col => {
                    if (col.field && map[col.field.toLowerCase()]) {
                      col.field = map[col.field.toLowerCase()].FieldName
                    }
                    return col
                  })
                }
                if (m.verify && m.verify.columns) {
                  m.verify.columns = m.verify.columns.map(col => {
                    if (col.Column && map[col.Column.toLowerCase()]) {
                      col.Column = map[col.Column.toLowerCase()].FieldName
                    }
                    return col
                  })
                }
                if (m.config && m.config.components) {
                  m.config.components = _replace(m.config.components)
                }
                return m
              })
            }
            if (card.backElements) { // 卡片
              card.backElements = card.backElements.map(m => {
                if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                  m.field = map[m.field.toLowerCase()].FieldName
                }
                if (m.modal && m.modal.fields) {
                  m.modal.fields = m.modal.fields.map(col => {
                    if (col.field && map[col.field.toLowerCase()]) {
                      col.field = map[col.field.toLowerCase()].FieldName
                    }
                    return col
                  })
                }
                if (m.verify && m.verify.columns) {
                  m.verify.columns = m.verify.columns.map(col => {
                    if (col.Column && map[col.Column.toLowerCase()]) {
                      col.Column = map[col.Column.toLowerCase()].FieldName
                    }
                    return col
                  })
                }
                if (m.config && m.config.components) {
                  m.config.components = _replace(m.config.components)
                }
                return m
              })
            }
            if (card.fields) { // 表单
              card.fields = card.fields.map(m => {
                if (m.field && map[m.field.toLowerCase()]) {
                  m.field = map[m.field.toLowerCase()].FieldName
                }
                return m
              })
            }
          })
        }
        if (item.elements) {
          item.elements = item.elements.map(m => {
            if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
              m.field = map[m.field.toLowerCase()].FieldName
            }
            if (m.modal && m.modal.fields) {
              m.modal.fields = m.modal.fields.map(col => {
                if (col.field && map[col.field.toLowerCase()]) {
                  col.field = map[col.field.toLowerCase()].FieldName
                }
                return col
              })
            }
            if (m.verify && m.verify.columns) {
              m.verify.columns = m.verify.columns.map(col => {
                if (col.Column && map[col.Column.toLowerCase()]) {
                  col.Column = map[col.Column.toLowerCase()].FieldName
                }
                return col
              })
            }
            if (m.config && m.config.components) {
              m.config.components = _replace(m.config.components)
            }
            return m
          })
        }
        if (item.plot) {
          if (item.plot.Xaxis && map[item.plot.Xaxis.toLowerCase()]) {
            item.plot.Xaxis = map[item.plot.Xaxis.toLowerCase()].FieldName
          }
          if (item.subtype === 'basetable') {
            item.cols = item.cols.map(col => {
              if (col.field && map[col.field.toLowerCase()]) {
                col.field = map[col.field.toLowerCase()].FieldName
          // 统计图
          if (item.plot.InfoValue && map[item.plot.InfoValue.toLowerCase()]) {
            item.plot.InfoValue = map[item.plot.InfoValue.toLowerCase()].FieldName
          }
          if (item.plot.InfoType && map[item.plot.InfoType.toLowerCase()]) {
            item.plot.InfoType = map[item.plot.InfoType.toLowerCase()].FieldName
          }
          // 占比图
          if (item.plot.valueField && map[item.plot.valueField.toLowerCase()]) {
            item.plot.valueField = map[item.plot.valueField.toLowerCase()].FieldName
          }
          if (item.plot.labelField && map[item.plot.labelField.toLowerCase()]) {
            item.plot.labelField = map[item.plot.labelField.toLowerCase()].FieldName
          }
          // 饼图
          if (item.plot.type && map[item.plot.type.toLowerCase()]) {
            item.plot.type = map[item.plot.type.toLowerCase()].FieldName
          }
          // 散点图
          if (item.plot.gender && map[item.plot.gender.toLowerCase()]) {
            item.plot.gender = map[item.plot.gender.toLowerCase()].FieldName
          }
          if (item.Yaxis) {
            if (Array.isArray(item.Yaxis)) {
              item.Yaxis = item.Yaxis.map(m => {
                if (map[m.toLowerCase()]) {
                  return map[m.toLowerCase()].FieldName
                }
                return m
              })
            } else {
              if (item.Yaxis && map[item.Yaxis.toLowerCase()]) {
                item.Yaxis = map[item.Yaxis.toLowerCase()].FieldName
              }
            }
          }
        }
        if (item.cols) {
          let _update = (cols) => {
            return cols.map(col => {
              if (col.type === 'custom' && col.elements) {
                col.elements = col.elements.map(m => {
                  if (m.eleType === 'button') {
                    if (m.modal && m.modal.fields) {
                      m.modal.fields = m.modal.fields.map(col => {
                        if (col.field && map[col.field.toLowerCase()]) {
                          col.field = map[col.field.toLowerCase()].FieldName
                        }
                        return col
                      })
                    }
                    if (m.verify && m.verify.columns) {
                      m.verify.columns = m.verify.columns.map(col => {
                        if (col.Column && map[col.Column.toLowerCase()]) {
                          col.Column = map[col.Column.toLowerCase()].FieldName
                        }
                        return col
                      })
                    }
                    if (m.config && m.config.components) {
                      m.config.components = _replace(m.config.components)
                    }
                  } else {
                    if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
                      m.field = map[m.field.toLowerCase()].FieldName
                    }
                  }
                  return m
                })
              } else if (col.type === 'colspan') {
                col.subcols = _update(col.subcols)
              } else if (col.field) {
                if (map[col.field.toLowerCase()]) {
                  col.field = map[col.field.toLowerCase()].FieldName
                }
              }
              return col
            })
          }
          return item
        })
      }
      config.components = _replace(config.components)
    // } else if (type === 'table') {
    //   config.columns = config.columns.map(col => {
    //     if (col.field && map[col.field.toLowerCase()]) {
    //       col.field = map[col.field.toLowerCase()].FieldName
    //     }
    //     return col
    //   })
    //   config.search = config.search.map(col => {
    //     if (col.field && map[col.field.toLowerCase()]) {
    //       col.field = map[col.field.toLowerCase()].FieldName
    //     }
    //     if (col.datefield && map[col.datefield.toLowerCase()]) {
    //       col.datefield = map[col.datefield.toLowerCase()].FieldName
    //     }
    //     return col
    //   })
    //   config.action = config.action.map(m => {
    //     if (m.verify && m.verify.columns) {
    //       m.verify.columns = m.verify.columns.map(col => {
    //         if (col.Column && map[col.Column.toLowerCase()]) {
    //           col.Column = map[col.Column.toLowerCase()].FieldName
    //         }
    //         return col
    //       })
    //     }
    //     return m
    //   })
    } else if (type === 'form') {
      config.fields = config.fields.map(col => {
        if (col.field && map[col.field.toLowerCase()]) {
          col.field = map[col.field.toLowerCase()].FieldName
          item.cols = _update(item.cols)
        }
        return col
        if (item.subtype === 'basetable') {
          item.cols = item.cols.map(col => {
            if (col.field && map[col.field.toLowerCase()]) {
              col.field = map[col.field.toLowerCase()].FieldName
            }
            return col
          })
        }
        return item
      })
    }
    config.components = _replace(config.components)
    config.interfaces && config.interfaces.forEach(item => {
      if (item.columns) {
        item.columns = item.columns.map(col => {
          let cell = map[col.field.toLowerCase()]
          if (cell) {
            col.field = cell.FieldName
            if (cell.datatype) {
              col.datatype = cell.datatype
            }
          }
          return col
        })
      }
    })
    this.setState({
      confirming: false,
@@ -470,156 +445,131 @@
  // 依据字段替换名称
  execLabel = (map) => {
    const { type } = this.props
    let config = fromJS(this.props.config).toJS()
    if (type === 'custom') {
      let _replace = (components) => {
        return components.map(item => {
          if (item.type === 'tabs') {
            item.subtabs.forEach(tab => {
              tab.components = _replace(tab.components)
            })
            return item
          } else if (item.type === 'group') {
            item.components = _replace(item.components)
            return item
          }
          if (item.columns) {
            item.columns = item.columns.map(col => {
              if (col.field && map[col.field.toLowerCase()]) {
                col.label = map[col.field.toLowerCase()].FieldDec
              }
              return col
            })
          }
          if (item.search) {
            item.search = item.search.map(col => {
              if (col.field && map[col.field.toLowerCase()]) {
                col.label = map[col.field.toLowerCase()].FieldDec
              }
              return col
            })
          }
    let _replace = (components) => {
      return components.map(item => {
        if (item.type === 'tabs') {
          item.subtabs.forEach(tab => {
            tab.components = _replace(tab.components)
          })
          return item
        } else if (item.type === 'group') {
          item.components = _replace(item.components)
          return item
        }
        if (item.columns) {
          item.columns = item.columns.map(col => {
            if (col.field && map[col.field.toLowerCase()]) {
              col.label = map[col.field.toLowerCase()].FieldDec
            }
            return col
          })
        }
        if (item.search) {
          item.search = item.search.map(col => {
            if (col.field && map[col.field.toLowerCase()]) {
              col.label = map[col.field.toLowerCase()].FieldDec
            }
            return col
          })
        }
          if (item.action) {
            item.action.forEach(m => {
              if (m.modal && m.modal.fields) {
                m.modal.fields = m.modal.fields.map(col => {
                  if (col.field && map[col.field.toLowerCase()]) {
                    col.label = map[col.field.toLowerCase()].FieldDec
                  }
                  return col
                })
              }
              if (m.verify && m.verify.columns) {
                m.verify.columns = m.verify.columns.map(col => {
                  if (col.Column && map[col.Column.toLowerCase()]) {
                    col.Text = map[col.Column.toLowerCase()].FieldDec
                  }
                  return col
                })
              }
              if (m.config && m.config.components) {
                m.config.components = _replace(m.config.components)
              }
            })
          }
          if (item.cols) {
            let _update = (cols) => {
              return cols.map(col => {
                if (col.type === 'custom' && col.elements) {
                  col.elements = col.elements.map(m => {
                    if (m.eleType === 'button') {
                      if (m.modal && m.modal.fields) {
                        m.modal.fields = m.modal.fields.map(col => {
                          if (col.field && map[col.field.toLowerCase()]) {
                            col.label = map[col.field.toLowerCase()].FieldDec
                          }
                          return col
                        })
                      }
                      if (m.verify && m.verify.columns) {
                        m.verify.columns = m.verify.columns.map(col => {
                          if (col.Column && map[col.Column.toLowerCase()]) {
                            col.Text = map[col.Column.toLowerCase()].FieldDec
                          }
                          return col
                        })
                      }
                      if (m.config && m.config.components) {
                        m.config.components = _replace(m.config.components)
                      }
                    }
                    return m
                  })
                } else if (col.type === 'colspan') {
                  col.subcols = _update(col.subcols)
                } else if (col.field) {
                  if (map[col.field.toLowerCase()]) {
                    col.label = map[col.field.toLowerCase()].FieldDec
                  }
        if (item.action) {
          item.action.forEach(m => {
            if (m.modal && m.modal.fields) {
              m.modal.fields = m.modal.fields.map(col => {
                if (col.field && map[col.field.toLowerCase()]) {
                  col.label = map[col.field.toLowerCase()].FieldDec
                }
                return col
              })
            }
            if (m.verify && m.verify.columns) {
              m.verify.columns = m.verify.columns.map(col => {
                if (col.Column && map[col.Column.toLowerCase()]) {
                  col.Text = map[col.Column.toLowerCase()].FieldDec
                }
                return col
              })
            }
            if (m.config && m.config.components) {
              m.config.components = _replace(m.config.components)
            }
          })
        }
            item.cols = _update(item.cols)
          }
        if (item.cols) {
          let _update = (cols) => {
            return cols.map(col => {
              if (col.type === 'custom' && col.elements) {
                col.elements = col.elements.map(m => {
                  if (m.eleType === 'button') {
                    if (m.modal && m.modal.fields) {
                      m.modal.fields = m.modal.fields.map(col => {
                        if (col.field && map[col.field.toLowerCase()]) {
                          col.label = map[col.field.toLowerCase()].FieldDec
                        }
                        return col
                      })
                    }
                    if (m.verify && m.verify.columns) {
                      m.verify.columns = m.verify.columns.map(col => {
                        if (col.Column && map[col.Column.toLowerCase()]) {
                          col.Text = map[col.Column.toLowerCase()].FieldDec
                        }
                        return col
                      })
                    }
                    if (m.config && m.config.components) {
                      m.config.components = _replace(m.config.components)
                    }
                  }
          if (item.subtype === 'basetable') {
            item.cols = item.cols.map(col => {
              if (col.field && map[col.field.toLowerCase()]) {
                col.label = map[col.field.toLowerCase()].FieldDec
                  return m
                })
              } else if (col.type === 'colspan') {
                col.subcols = _update(col.subcols)
              } else if (col.field) {
                if (map[col.field.toLowerCase()]) {
                  col.label = map[col.field.toLowerCase()].FieldDec
                }
              }
              return col
            })
          }
          return item
        })
      }
      config.components = _replace(config.components)
    // } else if (type === 'table') {
    //   config.columns = config.columns.map(col => {
    //     if (col.field && map[col.field.toLowerCase()]) {
    //       col.label = map[col.field.toLowerCase()].FieldDec
    //     }
    //     return col
    //   })
    //   config.search = config.search.map(col => {
    //     if (col.field && map[col.field.toLowerCase()]) {
    //       col.label = map[col.field.toLowerCase()].FieldDec
    //     }
    //     return col
    //   })
    //   config.action = config.action.map(m => {
    //     if (m.verify && m.verify.columns) {
    //       m.verify.columns = m.verify.columns.map(col => {
    //         if (col.Column && map[col.Column.toLowerCase()]) {
    //           col.Text = map[col.Column.toLowerCase()].FieldDec
    //         }
    //         return col
    //       })
    //     }
    //     return m
    //   })
    } else if (type === 'form') {
      config.fields = config.fields.map(col => {
        if (col.field && map[col.field.toLowerCase()]) {
          col.label = map[col.field.toLowerCase()].FieldDec
          item.cols = _update(item.cols)
        }
        return col
        if (item.subtype === 'basetable') {
          item.cols = item.cols.map(col => {
            if (col.field && map[col.field.toLowerCase()]) {
              col.label = map[col.field.toLowerCase()].FieldDec
            }
            return col
          })
        }
        return item
      })
    }
    config.components = _replace(config.components)
    config.interfaces && config.interfaces.forEach(item => {
      if (item.columns) {
        item.columns = item.columns.map(col => {
          if (col.field && map[col.field.toLowerCase()]) {
            col.label = map[col.field.toLowerCase()].FieldDec
          }
          return col
        })
      }
    })
    this.setState({
      confirming: false,
      visible: false