util.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { getFieldValue, isNotEmpty, setFieldValue } from '@cip/utils/util'
  2. export const getValuesByKeys = (data = {}, keys = []) => {
  3. const result = {}
  4. keys.forEach(key => {
  5. if (typeof key === 'object') {
  6. const object = key
  7. setFieldValue(result, object.key, getFieldValue(data, object.key))
  8. } else {
  9. setFieldValue(result, key, getFieldValue(data, key))
  10. }
  11. })
  12. return result
  13. }
  14. export const setValuesByKeys = (target = {}, keys = [], values = {}) => {
  15. keys.forEach(key => {
  16. if (typeof key === 'object') {
  17. const object = key
  18. setFieldValue(target, object.key, getFieldValue(values, object.key))
  19. } else {
  20. setFieldValue(target, key, getFieldValue(values, key))
  21. }
  22. })
  23. }
  24. export const isHideLabel = (config) => {
  25. return config.hideLabel || (isNotEmpty(config.labelWidth) && !config.labelWidth) || !config.label
  26. }
  27. export const getLabelWidth = (config) => {
  28. if (config.hideLabel) return '0px'
  29. if (config.labelWidth) return config.labelWidth + 'px'
  30. if (!config.label) return '0px' // 兼容老的设计
  31. return undefined
  32. }
  33. export const getChangeIndex = (values, oldValues) => {
  34. const result = []
  35. values.forEach((v, i) => {
  36. if (typeof v === 'object') {
  37. // 数组 对象相等判断
  38. // 无法通过值来判断对象级数组是否变化 (地址引用导致2个值一直都是相等的)
  39. result.push(i)
  40. } else {
  41. if (v !== oldValues[i]) {
  42. result.push(i)
  43. }
  44. }
  45. })
  46. return result
  47. }
  48. export const judgeUseFn = (key, config, effect) => {
  49. if (!effect) return config[key] // 没有effect 参数则直接使用config[key]
  50. if (effect && key in effect) { // 有effect 且 effect对象明确存在key(不管其值为什么)
  51. if (typeof effect[key] === 'function') return effect[key] // effect中的值为函数 则认为此次响应使用局部方法
  52. return config[key]
  53. }
  54. }