# ytForm搜索表单组件
# 使用场景
复杂的表单搜索栏、增删改查的form表单
# 实例属性
属性名 | 默认值 | 类型 | 描述 | 是否必填 |
---|---|---|---|---|
inline | true | Boolean | 行内表单模式 可选值:true / false | |
form | {} | Object | 表单数据 formData | true |
formLabel | [] | Array | 表单类型数组 | true |
formRules | {} | Object | 表单规则校验对象 | |
labelWidth | "" | String | 表单标签label宽度 | |
formSize | small | String | 组件尺寸 可选值:small / mini / medium | |
showOperationBtn | true | Boolean | 是否展示 (查询、重置)按钮 可选值:true / false |
# formLabel中type可选值
// 其中type是支持的组件类型,label是对应的属性介绍
formLabel: [
{type: "input", label: "输入框"},
{type: "select", label: "下拉选择器"},
{type: "radio", label: "单选框"},
{type: "switch", label: "Switch开关"},
{type: "date", label: "DatePicker 日期选择器"},
{type: "datetimerange", label: "DatePicker 日期选择器"},
{type: "daterange", label: "DatePicker 日期选择器"},
]
# formLabel参数示例
formLabel: [
{
type: "input",
label: "输入框",
value: "inputValue",
},
{
type: "select",
label: "下拉选择器",
value: "selectValue",
opts: [
{
deptName: "单位1",
deptId: "单位1",
},
{
deptName: "单位2",
deptId: "单位2",
},
{
deptName: "单位3",
deptId: "单位3",
},
], // 其中optLabel的值是opts列表的label,optValue是opts列表的value
optLabel: "deptName",
optValue: "deptId",
},
{
type: "radio",
label: "单选框",
value: "radioValue",
opts: [
{
label: "男",
value: "男",
},
{
label: "女",
value: "女",
},
{
label: "未知",
value: "未知",
},
],
},
{
type: "switch",
label: "Switch开关",
value: "switchValue",
activeColor: "#13ce66",
inactiveColor: "#ff4949",
activeText: "打开",
inactiveText: "关闭",
},
{
type: "date",
label: "DatePicker日期选择器",
value: "dateValue",
placeholder: "请选择日期",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "datetimerange",
label: "DatePicker 日期选择器",
value: "datetimerangeValue",
pickerOptions: [],
align: "left",
rangeSeparator: "~",
startPlaceholder: "开始时间",
endPlaceholder: "结束时间",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "daterange",
label: "DatePicker 日期选择器",
value: "daterangeValue",
pickerOptions: [],
align: "left",
rangeSeparator: "~",
startPlaceholder: "开始时间",
endPlaceholder: "结束时间",
valueFormat: "yyyy-MM-dd",
},
],
# 事件
事件名 | 参数 | 描述 |
---|---|---|
selectClick | obj | 当 formLabel 中有type:"select"即有下拉框时,该属性会将下拉框点击的值和列表传给父组件 |
handleSearch | obj | 表单查询事件,将formData的值传给父组件 |
handleResetFrom | 重置表单 |
# 简单使用
<!--
* @Description: 搜索表单组件的使用 页面
* @Author: mhf
* @Date: 2023/11/4 19:57
-->
<template>
<div class="useYtForm">
<bgComp>
<ytForm
v-if="formLabel.length > 0"
:inline="inline"
:form="searchForm"
:formSize="formSize"
:formLabel="formLabel"
:formRules="formRules"
@handleSearch="handleSearch"
@handleResetFrom="handleResetFrom"
@selectClick="selectClick"
>
<template slot="formSlot">
<el-date-picker
type="years"
v-model="searchForm.formSlotValue"
value-format="yyyy"
placeholder="选择一个或多个年"
:size="formSize"
>
</el-date-picker>
</template>
<template slot="btnSlot">
<el-button type="primary" :size="formSize">
自定义按钮(插槽)
</el-button>
</template>
<template slot="otherSlot">
<span> 在这里写其他自定义内容 </span>
</template>
</ytForm>
</bgComp>
</div>
</template>
<script>
export default {
name: "useYtForm",
components: {},
props: {},
computed: {},
watch: {},
filters: {},
data() {
return {
inline: true,
formSize: "mini",
labelWidth: "120px",
formLabel: [
{
type: "input",
label: "输入框",
value: "inputValue",
},
{
type: "select",
label: "下拉选择器",
value: "selectValue",
opts: [
{
deptName: "单位1",
deptId: "单位1",
},
{
deptName: "单位2",
deptId: "单位2",
},
{
deptName: "单位3",
deptId: "单位3",
},
],
optLabel: "deptName",
optValue: "deptId",
},
{
type: "radio",
label: "单选框",
value: "radioValue",
opts: [
{
label: "男",
value: "男",
},
{
label: "女",
value: "女",
},
{
label: "未知",
value: "未知",
},
],
},
{
type: "switch",
label: "Switch开关",
value: "switchValue",
activeColor: "#13ce66",
inactiveColor: "#ff4949",
activeText: "打开",
inactiveText: "关闭",
},
{
type: "date",
label: "DatePicker日期选择器",
value: "dateValue",
placeholder: "请选择日期",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "datetimerange",
label: "DatePicker 日期选择器",
value: "datetimerangeValue",
pickerOptions: [],
align: "left",
rangeSeparator: "~",
startPlaceholder: "开始时间",
endPlaceholder: "结束时间",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "daterange",
label: "DatePicker 日期选择器",
value: "daterangeValue",
pickerOptions: [],
align: "left",
rangeSeparator: "~",
startPlaceholder: "开始时间",
endPlaceholder: "结束时间",
valueFormat: "yyyy-MM-dd",
},
],
formRules: {
inputValue: {
required: true,
message: "请输入输入框内容",
trigger: "blur",
},
}, // 表单规则校验
searchForm: {}, // 表单查询的条件
};
},
methods: {
handleSearch(formData) {
console.log(formData);
this.getTableData();
},
handleResetFrom() {
this.searchForm = {};
this.getTableData();
},
getTableData() {
console.log("获取表格数据");
},
selectClick(obj) {
console.log("下拉列表项点击了:", obj);
},
},
created() {},
mounted() {},
destroyed() {},
};
</script>
<style lang="scss" scoped></style>