1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { computed, h } from 'vue'
- import { isObject, isArray } from '@cip/utils/util'
- import { fromInputEmits } from '@cip/components/cip-form-input/form-input-props'
- // 异步获取options由上层提供 不支持按条件搜索
- export default {
- props: {
- modelValue: [String, Number],
- config: Object,
- tableOptions: Array
- },
- emits: [...fromInputEmits],
- setup (props) {
- const options = computed(() => {
- return props.tableOptions || props.config.options || []
- })
- const optionIsObject = computed(() => {
- return isObject(options.value[0])
- })
- const optionProps = computed(() => {
- return Object.assign({
- label: 'label',
- value: 'value'
- }, props.config?.optionProps)
- })
- const marryOption = (value) => {
- const item = options.value.filter(v => v[optionProps.value.value] === value)[0]
- return item ? item[optionProps.value.label] : ''
- }
- const viewValue = computed(() => {
- if (isArray(props.modelValue)) {
- if (optionIsObject.value) {
- return props.modelValue.map(i => marryOption(i, i)).join(props.config.splitKey || ',')
- } else {
- return props.modelValue.join(props.config.splitKey || ',')
- }
- }
- if (options.value.length !== 0 && optionIsObject.value) {
- marryOption(props.modelValue)
- }
- return props.modelValue
- })
- return () => h('span', {}, [viewValue.value])
- }
- }
|