输入类组件
设计思想与原则
简洁
使用简单,只需要 <Input type="{组件类型}" v-model="value" />
一行代码,一目了然。组件功能、样式高度内聚,入参简单,出参简单。
统一
对原子化输入组件抽象统一,管理统一,维护统一。
分层
基础组件 -> 应用组件 -> 模板组件 -> 应用程序。
文本输入
{ "value": "" }
vue
<Input type="text" v-model="value" />
文本域输入
{ "value": "" }
vue
<Input type="textarea" v-model="value" />
数字输入
{ "value": null }
vue
<Input type="number" v-model="value" />
下拉选择输入
请选择
{ "value": "" }
vue
<template>
<Input type="select" v-model="value" :options="options" />
</template>
<script setup lang="ts">
const options = [
{
value: 1,
label: '订单类型一'
},
{
value: 2,
label: '订单类型二'
},
{
value: 3,
label: '订单类型三'
}
]
const value = ref('')
</script>
Radio 单选输入
{ "value": "" }
vue
<template>
<Input type="radio" v-model="value" :options="options" />
</template>
<script setup lang="ts">
const options = [
{
value: 1,
label: '订单类型一'
},
{
value: 2,
label: '订单类型二'
},
{
value: 3,
label: '订单类型三'
}
]
const value = ref('')
</script>
Checkbox 选择输入
默认 true
false
修改 :trueValue="1" :falseValue="0"
改变选中值
{ "value": true }
vue
<Input type="checkbox" v-model="checkbox" label="是否禁用" />
Checkboxgroup 复选输入
{ "value": [] }
vue
<template>
<Input type="checkboxgroup" v-model="value" :options="options" />
</template>
<script setup lang="ts">
const options = [
{
value: 1,
label: '订单类型一'
},
{
value: 2,
label: '订单类型二'
},
{
value: 3,
label: '订单类型三'
}
]
const value = ref([])
</script>
Switch 开关输入
默认 true
false
修改 :activeValue="1" :inactiveValue="0"
改变选中值
{ "value": true }
vue
<Input type="switch" v-model="value" />
时间选择输入
类型 year | yearrange | month | monthrange | date | daterange | datetime | datetimerange
遵循element-plus组件类型
日期选择
{ "value": "" }
vue
<Input type="date" v-model="value" />
日期时间选择
{ "value": "" }
vue
<Input type="datetime" v-model="value" />
日期时间范围选择
-
{ "value": [] }
vue
<Input type="datetimerange" v-model="value" />
级联选择输入
默认单选,字段 props: { multiple: true }
控制单选,多选
{ "value": [] }
vue
<template>
<Input type="cascader" v-model="value" :options="treeOptions" :props="{ multiple: true }" />
</template>
<script setup lang="ts">
const treeOptions = [
{
value: 1,
label: 'Level one 1',
children: [
{
value: 4,
label: 'Level two 1-1',
children: [
{
value: 9,
label: 'Level three 1-1-1'
},
{
value: 10,
label: 'Level three 1-1-2'
}
]
}
]
},
{
value: 2,
label: 'Level one 2',
children: [
{
value: 5,
label: 'Level two 2-1'
},
{
value: 6,
label: 'Level two 2-2'
}
]
},
{
value: 3,
label: 'Level one 3',
children: [
{
value: 7,
label: 'Level two 3-1'
},
{
value: 8,
label: 'Level two 3-2'
}
]
}
]
const value = ref([])
</script>
树形选择输入
默认单选,字段 multiple: true
控制单选,多选
请选择
{ "value": [] }
vue
<template>
<Input type="treeselect" v-model="value" :options="treeOptions" :multiple="true" />
</template>
<script setup lang="ts">
const treeOptions = [
{
value: 1,
label: 'Level one 1',
children: [
{
value: 4,
label: 'Level two 1-1',
children: [
{
value: 9,
label: 'Level three 1-1-1'
},
{
value: 10,
label: 'Level three 1-1-2'
}
]
}
]
},
{
value: 2,
label: 'Level one 2',
children: [
{
value: 5,
label: 'Level two 2-1'
},
{
value: 6,
label: 'Level two 2-2'
}
]
},
{
value: 3,
label: 'Level one 3',
children: [
{
value: 7,
label: 'Level two 3-1'
},
{
value: 8,
label: 'Level two 3-2'
}
]
}
]
const value = ref([])
</script>
字典选择输入
请选择
{ "value": "" }
vue
<Input type="dict" v-model="value" code="test" />
API
Props
参数名 | 说明 | 类型 | 默认值 |
---|---|---|---|
model-value (v-model) | 绑定值 | Record<string, any> | - |
type | 类型 | text, number, switch, radio, checkbox, datetime, select, cascader, treeselect 等 | - |
multiple | 单选,多选 | string | false |
clearable | 是否可清空 | boolean | true |
disabled | 是否禁用 | boolean | false |
placeholder | 文本输入的占位符 | string | |
code | 字典名 | string | |
options | 选项列表 | array[] |
Options
名称 | 说明 | 类型 | 默认值 |
---|---|---|---|
label | 选项名 | string | undefined |
value | 选项值 | string , number | undefined |
disabled | 是否禁用选项 | boolean | false |
children | 选项 children 数组 | Options[] | undefined |
注意事项
说明
组件基础属性字段样式已封装,需要扩展组件功能请参考 Element-Plus Input 文档查阅