view.jsx 1.2 KB

12345678910111213141516171819202122232425
  1. import { ElTag } from 'element-plus'
  2. import { formInputViewProps } from '@cip/components/cip-form-input/form-input-props'
  3. import { useFormView, useOptions } from '@cip/components/hooks/form-input'
  4. import { computed } from 'vue'
  5. import { getFieldValue, getValueByTemplate } from '@cip/utils/util'
  6. export default {
  7. props: formInputViewProps,
  8. setup (props) {
  9. const { securityConfig, width } = useFormView(props)
  10. const multiple = computed(() => securityConfig.value.multiple)
  11. const { optionProps } = useOptions(props, false)
  12. return () => <div style={{ width: width.value }} class={'cip-select-object--view'}>
  13. {!multiple.value && getFieldValue(props.modelValue || {}, optionProps.value.label) }
  14. {multiple.value && <>
  15. {
  16. (props.modelValue || []).map(item => {
  17. const value = getFieldValue(item, optionProps.value.value) // 【注:】value不支持模版语法
  18. const label = optionProps.value.label.includes('$') ? getValueByTemplate(optionProps.value.label, item) : getFieldValue(item, optionProps.value.label) // 支持模版语法
  19. return <ElTag key={value}>{label}</ElTag>
  20. })
  21. }
  22. </> }
  23. </div>
  24. }
  25. }