Skip to content

SearchForm

示例

在 formGrid 基础上扩展,完全支持 formGrid 全部功能

基本使用

<template>
  <div>
    <SuperSearchForm :field="field" :model="form" @search="_search" @reset="_reset"></SuperSearchForm>
  </div>
</template>

<script lang="ts" setup>
import {  reactive } from 'vue'
import { ElMessage } from "element-plus"

const form = reactive({
  name: '',
  sex: '',
  phone: '',
  startTime: '',
  endTime: ''
})
const field = [
  {
    label: '姓名',
    name: 'name',
    el: 'ElInput',
    tooltip: '这是一个提示信息',
    span: 2,
  },
  {
    label: '性别',
    name: 'sex',
    el: 'ElSelect',
    options: [
      { label: '', value: '1' },
      { label: '', value: '2' },
    ],
    span: 2,
  },
  {
    label: '手机号',
    name: 'phone',
    el: 'ElInput',
    span: 2,
  },
  {
    label: '开始时间',
    name: 'startTime',
    el: 'ElDatePicker',
    span: 2,
  },
  {
    label: '结束时间',
    name: 'endTime',
    el: 'ElDatePicker',
    span: 2,
  },
]

const _search = () => {
  ElMessage.success('查询成功')
}

const _reset = () => {
  ElMessage.success('重置成功')
}
</script>

关闭自动查询功能

关闭后需要手动点击查询按钮

<template>
  <div>
    <SuperSearchForm :field="field" :model="form" :autoSearch="false" @search="_search" @reset="_reset"></SuperSearchForm>
  </div>
</template>

<script lang="ts" setup>
import {  reactive } from 'vue'
import { ElMessage } from "element-plus"

const form = reactive({
  name: '',
  sex: '',
  phone: '',
  startTime: '',
  endTime: ''
})
const field = [
  {
    label: '姓名',
    name: 'name',
    el: 'ElInput',
    tooltip: '这是一个提示信息',
    span: 2,
  },
  {
    label: '性别',
    name: 'sex',
    el: 'ElSelect',
    options: [
      { label: '', value: '1' },
      { label: '', value: '2' },
    ],
    span: 2,
  },
  {
    label: '手机号',
    name: 'phone',
    el: 'ElInput',
    span: 2,
  },
  {
    label: '开始时间',
    name: 'startTime',
    el: 'ElDatePicker',
    span: 2,
  },
  {
    label: '结束时间',
    name: 'endTime',
    el: 'ElDatePicker',
    span: 2,
  },
]

const _search = () => {
  ElMessage.success('查询成功')
}

const _reset = () => {
  ElMessage.success('重置成功')
}
</script>

查询按钮前后插槽

<template>
  <div>
    <SuperSearchForm :field="field" :model="form" @search="_search" @reset="_reset">
      <template #beforeContent>
        <el-button type="primary">新增</el-button>
      </template>
      <template #afterContent>
        <el-button type="primary">删除</el-button>
      </template>
    </SuperSearchForm>
  </div>
</template>

<script lang="ts" setup>
import { reactive } from 'vue'
import { ElMessage, ElButton } from "element-plus"

const form = reactive({
  name: '',
})
const field = [
  {
    label: '姓名',
    name: 'name',
    el: 'ElInput',
    span: 2,
  },
]

const _search = () => {
  ElMessage.success('查询成功')
}

const _reset = () => {
  ElMessage.success('重置成功')
}
</script>

关闭展开收起/查询/重置按钮

通过设置 ifCollapsed/hideSearch/hideReset

<template>
  <div>
    <SuperSearchForm :field="field" :model="form" :ifCollapsed="false" :hideSearch="false" :hideReset="false" @search="_search" @reset="_reset"></SuperSearchForm>
  </div>
</template>

<script lang="ts" setup>
import {  reactive } from 'vue'
import { ElMessage } from "element-plus"

const form = reactive({
  name: '',
  sex: '',
  phone: '',
  startTime: '',
  endTime: ''
})
const field = [
  {
    label: '姓名',
    name: 'name',
    el: 'ElInput',
    tooltip: '这是一个提示信息',
    span: 2,
  },
  {
    label: '性别',
    name: 'sex',
    el: 'ElSelect',
    options: [
      { label: '', value: '1' },
      { label: '', value: '2' },
    ],
    span: 2,
  },
  {
    label: '手机号',
    name: 'phone',
    el: 'ElInput',
    span: 2,
  },
  {
    label: '开始时间',
    name: 'startTime',
    el: 'ElDatePicker',
    span: 2,
  },
  {
    label: '结束时间',
    name: 'endTime',
    el: 'ElDatePicker',
    span: 2,
  },
]

const _search = () => {
  ElMessage.success('查询成功')
}

const _reset = () => {
  ElMessage.success('重置成功')
}
</script>

API

Props

参数说明类型可选值默认值
field表单配置列formGridItemProps[]-[]
model表单数据绑定object-{}
searchCol响应式布局参数number/object-{ xs: 1, sm: 2, md: 3, lg: 4, xl: 4 }
ifCollapsed是否显示展开/收起booleantrue/falsetrue
ifCardStyle是否使用 card 样式booleantrue/falsetrue
autoSearch是否开启自动搜索booleantrue/falsetrue
hideReset是否隐藏重置按钮booleantrue/falsetrue

Slots

插槽名说明
beforeContent往查询按钮前面添加内容
afterContent往查询按钮后面添加内容