32 lines
735 B
Vue
Raw Normal View History

2024-09-22 13:58:03 +08:00
<template>
<el-col :span="colSpan">
<el-form-item :label="label" :prop="prop">
<el-input v-bind="$attrs" :placeholder="computedPlaceholder">
<template v-for="(_, name) in $slots" #[name]="slotProps">
<slot :name="name" v-bind="slotProps"></slot>
</template>
</el-input>
</el-form-item>
</el-col>
</template>
<script lang="ts" setup>
import { computed } from 'vue'
interface Props {
label?: string
prop?: string
colSpan?: number
placeholder?: string
}
const props = withDefaults(defineProps<Props>(), {
colSpan: 24,
placeholder: ''
})
const computedPlaceholder = computed(() => {
return props.placeholder || (props.label ? `请输入${props.label}` : '')
})
</script>