king
2025-05-23 24842b40de5cd60700bf69dfd38a0332f5431e36
src/utils/utils-update.js
@@ -1,157 +1,277 @@
import { fromJS } from 'immutable'
import Utils from './utils.js'
/**
 * @description 升级表单信息
 * @param {Object}   config      表单配置信息
 * @return {Object}  config
 */
export function updateForm (config) {
  if (!config.version && config.groups) {
    config.version = '1.0'
    if (config.groups && config.groups.length > 0) {
      let fields = []
      config.groups.forEach(group => {
        if (group.sublist.length === 0) return
export default class UpdateUtils {
  /**
   * @description 升级主表信息
   * @param {Object}   config      页面配置信息
   * @return {Object}  config
   */
  static updateCommonTable (config) {
    if (!config.version || config.version < '1.0') {
      config.version = '1.0'
      // 兼容标签
      if (!config.tabgroups) {
        config.tabgroups = [{ uuid: 'tabs', sublist: [] }]
      } else if (typeof(config.tabgroups[0]) === 'string') {
        let _tabgroups = []
        config.tabgroups.forEach(groupId => {
          let _group = {
            uuid: groupId,
            sublist: fromJS(config[groupId]).toJS()
          }
          delete config[groupId]
          _tabgroups.push(_group)
        })
        config.tabgroups = _tabgroups
      }
      // 兼容图表
      if (!config.charts) {
        config.expand = true
        config.charts = [{ uuid: Utils.getuuid(), label: '', title: '', chartType: 'table', icon: 'table', Hide: 'false', blacklist: [] }]
      } else {
        config.charts.forEach(card => {
          if (card.chartType === 'card') {
            card.details = card.details.map(_cell => {
              _cell.fontSize = _cell.fontSize || 14
              if (!_cell.width) {
                _cell.width = 100
              } else if (_cell.width === 'helf') {
                _cell.width = 50
              } else if (_cell.width === 'third') {
                _cell.width = 33
              }
              if (!_cell.fontWeight && _cell.bold === 'true') {
                _cell.fontWeight = 'normal'
              }
              _cell.height = _cell.height || 1
              return _cell
            })
            if (card.widthType === 'ratio' && card.avatar && card.avatar.widthType !== 'ratio') {
              card.avatar.widthType = 'ratio'
              card.avatar.width = 32
            }
          }
        })
      }
    }
    if (config.version < '1.1') {
      if (config.setting.interType === 'inner' && !config.setting.innerFunc) {
        config.setting.interType = 'system'
      }
      // 兼容接口类型
      config.action = config.action.map(item => {
        if (item.intertype === 'inner' && !item.innerFunc) {
          item.intertype = 'system'
        if (!group.default) {
          fields.push({
            type: 'split',
            label: group.label,
            uuid: group.uuid,
            span: 24
          })
        }
        return item
        fields.push(...group.sublist)
      })
      config.fields = fields
    }
    delete config.groups
    config.version = '1.1'
    config.Template = 'CommonTable'
    let _col = config.setting.cols || '2'
    return config
    config.fields = config.fields.map(item => {
      item.labelwidth = 33.3
      if (_col === '1' || item.entireLine === 'true' || ['textarea','hint','checkcard','brafteditor'].includes(item.type)) {
        item.span = 24
        if (_col === '2') {
          item.labelwidth = 16.3
        } else if (_col === '3') {
          item.labelwidth = 10.5
        } else if (_col === '4') {
          item.labelwidth = 8.3
        }
      } else if (_col === '2') {
        item.span = 12
      } else if (_col === '3') {
        item.span = 8
      } else if (_col === '4') {
        item.span = 6
      }
      return item
    })
  }
  /**
   * @description 升级子表信息
   * @param {Object}   config      页面配置信息
   * @return {Object}  config
   */
  static updateSubTable (config) {
    if (!config.version || config.version < '1.0') {
      config.version = '1.0'
      // 兼容图表
      if (!config.charts) {
        config.expand = false
        config.charts = [{
          uuid: Utils.getuuid(),
          label: '',
          title: '',
          chartType: 'table',
          icon: 'table',
          Hide: 'false',
          blacklist: []
        }]
      } else {
        config.charts.forEach(card => {
          if (card.chartType === 'card') {
            card.details = card.details.map(_cell => {
              if (!_cell.fontSize) {
                _cell.fontSize = 14
              }
              if (!_cell.width) {
                _cell.width = 100
              } else if (_cell.width === 'helf') {
                _cell.width = 50
              } else if (_cell.width === 'third') {
                _cell.width = 33
              }
              if (_cell.bold === 'true') {
                _cell.fontWeight = 'normal'
              }
  return config
}
              if (!_cell.height) {
                _cell.height = 1
              }
/**
 * @description 升级主表信息
 * @param {Object}   config      页面配置信息
 * @return {Object}  config
 */
export function updateCommonTable (config) {
  if (!config.version || config.version < '1.0') {
    config.version = '1.0'
    // 兼容标签
    if (!config.tabgroups) {
      config.tabgroups = [{ uuid: 'tabs', sublist: [] }]
    } else if (typeof(config.tabgroups[0]) === 'string') {
      let _tabgroups = []
      config.tabgroups.forEach(groupId => {
        let _group = {
          uuid: groupId,
          sublist: config[groupId]
        }
              return _cell
            })
        delete config[groupId]
            if (card.widthType === 'ratio' && card.avatar && card.avatar.widthType !== 'ratio') {
              card.avatar.widthType = 'ratio'
              card.avatar.width = 32
            }
          }
        })
      }
        _tabgroups.push(_group)
      })
      config.tabgroups = _tabgroups
    }
    if (config.version < '1.1') {
      if (config.setting.interType === 'inner' && !config.setting.innerFunc) {
        config.setting.interType = 'system'
      }
      // 兼容接口类型
      config.action = config.action.map(item => {
        if (item.intertype === 'inner' && !item.innerFunc) {
          item.intertype = 'system'
    // 兼容图表
    if (!config.charts) {
      config.expand = true
      config.charts = [{ uuid: '$$normaltable', label: '', title: '', chartType: 'table', icon: 'table', Hide: 'false', blacklist: [] }]
    } else {
      config.charts.forEach(card => {
        if (card.chartType === 'card') {
          card.details = card.details.map(_cell => {
            _cell.fontSize = _cell.fontSize || 14
            if (!_cell.width) {
              _cell.width = 100
            } else if (_cell.width === 'helf') {
              _cell.width = 50
            } else if (_cell.width === 'third') {
              _cell.width = 33
            }
            if (!_cell.fontWeight && _cell.bold === 'true') {
              _cell.fontWeight = 'normal'
            }
            _cell.height = _cell.height || 1
            return _cell
          })
        }
        return item
      })
    }
    config.version = '1.1'
    config.Template = 'SubTable'
    return config
  }
  if (config.version < '1.1') {
    config.version = '1.1'
    if (config.setting.interType === 'inner' && !config.setting.innerFunc) {
      config.setting.interType = 'system'
    }
    // 兼容接口类型
    config.action = config.action.map(item => {
      if (item.intertype === 'inner' && !item.innerFunc) {
        item.intertype = 'system'
      }
      return item
    })
  }
  if (config.version < '1.2') {
    config.version = '1.2'
    // 兼容功能按钮
    config.action = config.action.map(item => {
      if (item.execMode) {
        item.OpenType = 'funcbutton'
      } else if (item.OpenType === 'blank') {
        item.OpenType = 'tab'
      }
      return item
    })
  }
  if (config.version < '2.0') {
    config.version = '2.0'
    // 去除传统table中的标签,调整数据结构
    if (config.charts && config.charts.length === 1) {
      config.charts = null
    }
  }
  config.Template = 'CommonTable'
  return config
}
/**
 * @description 升级子表信息
 * @param {Object}   config      页面配置信息
 * @return {Object}  config
 */
export function updateSubTable (config) {
  if (!config.version || config.version < '1.0') {
    config.version = '1.0'
    // 兼容图表
    if (!config.charts) {
      config.expand = false
      config.charts = [{
        uuid: '$$normalsubtable',
        label: '',
        title: '',
        chartType: 'table',
        icon: 'table',
        Hide: 'false',
        blacklist: []
      }]
    } else {
      config.charts.forEach(card => {
        if (card.chartType === 'card') {
          card.details = card.details.map(_cell => {
            if (!_cell.fontSize) {
              _cell.fontSize = 14
            }
            if (!_cell.width) {
              _cell.width = 100
            } else if (_cell.width === 'helf') {
              _cell.width = 50
            } else if (_cell.width === 'third') {
              _cell.width = 33
            }
            if (_cell.bold === 'true') {
              _cell.fontWeight = 'normal'
            }
            if (!_cell.height) {
              _cell.height = 1
            }
            return _cell
          })
        }
      })
    }
  }
  if (config.version < '1.1') {
    config.version = '1.1'
    if (config.setting.interType === 'inner' && !config.setting.innerFunc) {
      config.setting.interType = 'system'
    }
    // 兼容接口类型
    config.action = config.action.map(item => {
      if (item.intertype === 'inner' && !item.innerFunc) {
        item.intertype = 'system'
      }
      return item
    })
  }
  if (config.version < '1.2') {
    config.version = '1.2'
    // 兼容功能按钮
    config.action = config.action.map(item => {
      if (item.execMode) {
        item.OpenType = 'funcbutton'
      } else if (item.OpenType === 'blank') {
        item.OpenType = 'tab'
      }
      return item
    })
  }
  if (config.version < '2.0') {
    config.version = '2.0'
    // 去除传统table中的标签,调整数据结构
    if (config.charts && config.charts.length === 1) {
      config.charts = null
    }
  }
  config.Template = 'SubTable'
  return config
}
/**
 * @description 升级弹窗子表信息
 * @param {Object}   config      页面配置信息
 * @return {Object}  config
 */
export function updateSubTabTable (config) {
  if (!config.version || config.version < '1.1') {
    config.version = '1.1'
    if (config.setting.interType === 'inner' && !config.setting.innerFunc) {
      config.setting.interType = 'system'
    }
    // 兼容接口类型
    config.action = config.action.map(item => {
      if (item.intertype === 'inner' && !item.innerFunc) {
        item.intertype = 'system'
      }
      return item
    })
  }
  if (config.version < '1.2') {
    config.version = '1.2'
    // 兼容功能按钮
    config.action = config.action.map(item => {
      if (item.execMode) {
        item.OpenType = 'funcbutton'
      } else if (item.OpenType === 'blank') {
        item.OpenType = 'tab'
      }
      return item
    })
  }
  config.Template = 'SubTable'
  return config
}