view.jsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { h, computed } from 'vue'
  2. import { formInputViewProps } from '../../form-input-props'
  3. import { useCipConfig } from '@cip/components/hooks/use-cip-config'
  4. import dayjs from 'dayjs'
  5. import advancedFormat from 'dayjs/plugin/advancedFormat'
  6. import weekYear from 'dayjs/plugin/weekYear'
  7. import weekOfYear from 'dayjs/plugin/weekOfYear'
  8. dayjs.extend(advancedFormat)
  9. dayjs.extend(weekYear)
  10. dayjs.extend(weekOfYear)
  11. /**
  12. * @description 参数配置
  13. * @param viewType 显示日期格式, 默认全时间格式
  14. * @param format 显示日期格式 优先级最高
  15. * @return modelValue
  16. */
  17. export default {
  18. props: formInputViewProps,
  19. setup (props) {
  20. const cipConfig = useCipConfig()
  21. const typeToFormatter = {
  22. year: 'YYYY',
  23. month: 'YYYY-MM',
  24. week: 'YYYY 第 ww 周',
  25. date: 'YYYY-MM-DD',
  26. datetime: 'YYYY-MM-DD HH:mm:ss'
  27. }
  28. // [注:props.config.format在input组件未实现,考虑兼容问题故保留 ]
  29. props.config.format && console.warn('date的展示组件的format属性即将废弃,将在v5.x移除请使用formatter代替')
  30. const format = props.config.format || props.config.formatter || typeToFormatter[props.config.viewType] || typeToFormatter.date
  31. const date = computed(() => {
  32. // modelValue和cip-table 或 cip-form 配置默认参数一致,返回modelValue
  33. if ([cipConfig.table.defaultViewValue, cipConfig.defaultViewValue].includes(props.modelValue)) return props.modelValue
  34. return props.modelValue ? dayjs(props.modelValue).format(format) : ''
  35. })
  36. return () => h('span', {}, [date.value])
  37. }
  38. }