view.jsx 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import { computed } from 'vue'
  2. import { formInputViewProps } from '../../form-input-props'
  3. import { getUsingConfig, isNotEmpty, addThousandSeparator } from '@cip/utils/util'
  4. import { useCipConfig } from '@cip/components/hooks/use-cip-config'
  5. export default {
  6. props: formInputViewProps,
  7. setup (props) {
  8. const cipConfig = useCipConfig()
  9. // 分隔符
  10. const separator = computed(() => {
  11. return getUsingConfig(props.config.separator, cipConfig.number.thousandSeparator)
  12. })
  13. // 精度
  14. const precision = computed(() => {
  15. return getUsingConfig(props.config.precision, cipConfig.number.precision)
  16. })
  17. // 展示数据
  18. const viewValue = computed(() => {
  19. let value = Number(props.modelValue)
  20. if (!isNaN(value)) {
  21. if (isNotEmpty(precision.value)) value = value.toFixed(precision.value)
  22. if (separator.value) value = addThousandSeparator(value, separator.value)
  23. return [value, props.config.unit]
  24. } else {
  25. return props.config.defaultValue ?? '-'
  26. }
  27. })
  28. return () => <div class={'basic-number--view'}>
  29. {viewValue.value}
  30. </div>
  31. }
  32. }