Skip to content

QilinSearch组件

QilinSearch组件是一个搜索框组件,用于在页面中搜索内容。

基本使用

vue
<template>
    <QilinSearch v-model:searchConfig="searchConfig" ref="searchConfigRef"></QilinSearch>\
</template>

<script setup>
import {reactive,ref} from "vue";

// 获取搜索表单配置项ref
const searchConfigRef=ref(null);

const searchConfig=reactive({
    elFormConfig:{
        labelPosition:"right",
        labelSuffix:":",
        size:"default"
    },
    itemConfig:[
        {
            labelName:"姓名",
            dataName:"name",
            type:"input",
            inputType:"text"
        },
        {
            labelName:"身份",
            dataName:"identity",
            type:"select",
            dataListName:"identityList",
            multiple:true,
            filterable:false,
            collapseTags:true,
            clear:(item)=>{
                // console.log(item);
            }
        }
    ],
    moreConfig:{
        isShowMore:true
    },
    moreItemConfig:[
        {
            labelName:"出生日期",
            dataName:"birthday",
            type:"date",
            dateType:"date",
            format:"YYYY-MM-DD",
            valueFormat:"YYYY-MM-DD",
            width:160
        },
        {
            labelName:"工作区间",
            dataName:"workInterval",
            type:"date",
            dateType:"daterange",
            format:"YYYY-MM-DD",
            valueFormat:"YYYY-MM-DD"
        },
        {
            labelName:"参与项目",
            dataName:"projectName",
            type:"select",
            dataListName:"projectNameList"
        },
        {
            labelName:"项目所属",
            dataName:"projectOwn",
            type:"cascader",
            dataListName:"projectOwnList",
            cascaderProps:{
                label:"name",
                value:"id",
                children:"children"
            }
        }
    ],
    selectLists:{
        identityList:[
            {
                label:"学生",
                value:0,
                isHide:true
            },
            {
                label:"程序员",
                value:1
            },
            {
                label:"作者",
                value:2
            },
            {
                label:"打工人",
                value:3
            }
        ],
        projectNameList:[
            {
                label:"看守所、戒毒所、拘留所等项目",
                value:0
            },
            {
                label:"SDP零信任项目",
                value:1
            },
            {
                label:"动态应用安全防护系统BSG",
                value:2
            },
            {
                label:"云上贵州项目",
                value:3
            },
            {
                label:"红花街道h5项目",
                value:4
            },
            {
                label:"温州市党政机关信息化项目",
                value:5
            },
            {
                label:"U创办公管理系统",
                value:6
            },
            {
                label:"U创办公小程序项目",
                value:7
            }
        ],
        projectOwnList:[
            {
                name:"南京冠霆智能科技有限公司",
                id:1,
                children:[
                    {
                        name:"看守所项目",
                        id:11
                    },
                    {
                        name:"拘留所项目",
                        id:12
                    },
                    {
                        name:"戒毒所项目",
                        id:13
                    },
                    {
                        name:"安康医院项目",
                        id:14
                    }
                ]
            },
            {
                name:"亚信安全有限公司",
                id:2,
                children:[
                    {
                        name:"亚信智网有限公司",
                        id:21,
                        children:[
                            {
                                name:"SDP零信任项目",
                                id:211
                            },
                            {
                                name:"动态应用安全防护系统BSG",
                                id:212
                            }
                        ]
                    }
                ]
            },
            {
                name:"苏软科技(南京)有限公司",
                id:3,
                children:[
                    {
                        name:"云上贵州项目",
                        id:31
                    },
                    {
                        name:"红花街道h5项目",
                        id:32
                    },
                    {
                        name:"温州市党政机关信息化项目",
                        id:33
                    }
                ]
            },
            {
                name:"南京联创智慧城市科技有限公司",
                id:4,
                children:[
                    {
                        name:"U创办公管理系统",
                        id:41
                    },
                    {
                        name:"U创办公小程序",
                        id:42
                    }
                ]
            }
        ],
        residentialComplexNameList:[
            {
                label:"第一中学",
                value:1
            },
            {
                label:"第2中学",
                value:2
            },
            {
                label:"第3中学",
                value:3
            },
            {
                label:"第4中学",
                value:4
            }
        ]
    },
    buttonConfig:[
        {
            btnName:"查询",
            btnType:"primary",
            btnSize:"default",
            formRefName:searchConfigRef,
            btnClick:(formRef)=>{
                // console.log(formRef);
                console.log(searchConfig.submitData);
            }
        },
        {
            btnName:"重置",
            btnType:"default",
            btnSize:"default",
            formRefName:searchConfigRef,
            btnClick:(formRef)=>{
                console.log(formRef);
                formRef.resetSearchData();
            }
        }
    ],
    submitData:{
        name:"",
        identity:"",
        birthday:"",
        workInterval:"",
        projectName:"",
        projectOwn:""
    }
});
</script>

示例:

Props参数

searchConfig object

核心配置项,支持以下参数。

属性名类型
说明
可选值默认值
elFormConfigobjectel-form标签元素上的相关配置,详见elFormConfig--
itemConfigarray表单内每个组件的配置项,详见itemConfig--
moreConfigobject表单的更多配置项,详见moreConfig--
selectListsobject下拉数据集,详见selectLists--
buttonConfigarray表单内的按钮配置项,详见buttonConfig--
submitDataobject提交到后台的数据集,详见submitData--

elFormConfig object

el-form标签元素上的相关配置

属性名类型
说明
可选值默认值
labelPositionstringlabel标签的位置left/right/topleft
labelSuffixstringlabel标签的后缀-
sizestring表单内组件的尺寸large/small/defaultdefault
classNamestringel-form的自定义类名--

itemConfig object

表单内每个组件的配置项。

属性名类型
说明
可取值默认值
labelNamestringlabel标签的文字-默认名称
dataNamestring对应后台的数据字段名--
isHideboolean是否隐藏该表单项-false
hideLabelboolean是否隐藏该表单项的label标签-false
labelNameTextstringlabel标签的额外字段--
typestring表单组件的类型input/select/date/cascader/slotinput
inputTypestringinput的类型,当且仅当type=input时生效text/numbertext
clearableboolean是否显示可以一键清空按钮-true
prefixIconstring输入框前置内置图标,当且仅当type=input时生效--
prefixSlotNamestring输入框前置内置图标插槽名称,当且仅当type=input时生效--
suffixIconstring输入框后置内置图标,当且仅当type=input时生效--
suffixSlotNamestring输入框后置内置图标插槽名称,当且仅当type=input时生效--
dataListNamestring下拉数据名称对应selectLists中属性名,当type=select时生效--
multipleboolean是否可以多选,当type=select、checkbox时生效-false
collapseTagsboolean多选时是否将选中值按文字的形式展示,当type=select时生效-false
filterableboolean是否可搜索,当type为select生效-true
cascaderPropsobject配置级联选择器的选项,具体的配置参数详见element官网el-cascader文档,当type=cascader时生效--
remoteboolean其中的选项是否从服务器远程加载,当type=select时生效-false
remoteMethodfunction定义远程搜索方法,启用远程搜索需要开filterableremote设置为true,当type=select时生效--
remoteShowSuffixboolean远程搜索模式下是否显示后缀图标,当type=select时生效-true
loadingboolean是否正在从远程获取数据,加载完毕后需要将其重置为false,当type=select时生效-false
loadingTextstring远程加载数据时显示的文本,当loading为true时生效-加载中
customLabelNamestring下拉选项中自定义label对应字段值,当type=select时生效-label
customValueNamestring下拉选项中自定义value对应字段值,当type=select时生效-value
dateTypestring日期选择器的类型,当type=date时生效year/years/month/date/dates/datetime/week/datetimerange/daterange/monthrangedate
defaultTimeDate/[Date,Date]选择日期后的默认时间值,默认8点半,当type=date且为范围选择时生效-new Date(2000,1,1,8,30,0)
disabledDatefunction设置禁用日期的方法,一般要配合日期组件的calendar-change事件,当且仅当type=date时生效(item,date)=>{}-
formatstring显示在输入框中的格式化时间设置,当type=date时生效-YYYY-MM-DD HH:mm:ss
valueFormatstring传给后台的格式化时间设置,当type=date时生效-YYYY-MM-DD HH:mm:ss
startPlaceholderstring日期开始提示语,当type=date且dateType=***range时生效--
endPlaceholderstring日期结束提示语,当type=date且dateType=***range时生效--
rangeSeparatorstring时间选择器的范围分隔符,当type=date且dateType=***range时生效-
widthnumber表单每项组件的宽度,单位为px-150
classNamestring表单每项组件即el-form-item的自定义类名--
itemStylestring表单每项组件即el-form-item的自定义样式--
disabledboolean是否禁用该项-false
slotNamestringslot具名插槽名称,当type=slot时生效--
placeholderstring表单占位符提示语--

moreConfig object

更多配置项扩展。

属性名类型
说明
可取值默认值
isShowMoreboolean是否显示展开收缩功能-false
moreItemConfigarray展开时搜索表单配置项,同itemConfig属性一致--

selectLists object

下拉数据集,当type=select、cascader时其内属性名须对应dataListName的值。

buttonConfig array

表单底部操作提交按钮相关配置项。

属性名类型
说明
可取值默认值
btnNamestring按钮名称-按钮
btnTypestring按钮类型primary/success/warning/danger/info/textdefault
btnSizestring按钮尺寸large/small/defaultdefault
classNamestring按钮自定义类名--
formRefNameDOM表单元素的DOM--
btnClickfunction按钮点击事件(formRef)=>{}-

submitData object

提交到后台的数据集,即每个itemConfig的dataName值组成的对象。

Events

组件的暴露事件。

事件名类型参数
说明
-functionitem,value\event\undefined,undefined\ref每个itemConfig表单元素的change、blur、clear等事件,配置在itemConfig中,事件名就是他们的属性名,如change

Exposes

组件的暴露方法。

方法名类型参数
说明
resetSearchDatafunction-对整个表单的内容进行重置

Slots

组件的插槽。

插槽名数据值
说明
{item.slotName}data:{scope,item}设置itemConfig配置项中的type为slot或者itemSlot时即可使用,用于需要对元素某项进行特殊处理的需求,其中设置的slotName属性值就是该插槽名