Skip to content
本页目录

GicSearchForm

使用 antdesign Form 二次封装的高级查询组件

说明

  • 高级查询组件无需传入表单数据 formData,需要赋值默认值时给 formConfig 传 defaultData
  • 当给左侧某个按钮添加了 loading 状态,若需要动态修改该变量时,在定义 btnConfig 时注意使用 computed 定义,否则修改 loading 变量无法生效

基本用法

组件演示

示例
vue
<template>
  <div>
    <p>
      <a-button @click="changeVisible">手动控制更多查询条件的显示与隐藏</a-button>
    </p>
    <GicSearchForms
      :form-config="formConfig"
      :btn-config="btnConfig"
      @query="handleQuery"
      @reset="handleReset"
      :columnVisibleSet="false"
      @bill-checked="billChecked"
      :select-list="selectList"
      :unit-config="unitConfig"
      @change-unit="changeUnit"
      @btnClick="btnClick"
      ref="searchForm"
    ></GicSearchForms>
  </div>
</template>
<script lang="ts" setup>
import { ref, reactive } from 'vue'
import { GicSearchForms } from 'ctj-ui-next'
import {
  formItem,
  tableBtnConfig,
  formConfig,
  unitConfig,
  BtnType,
  Units,
  BillTypeItem,
  ControlType,
} from 'ctj-ui-next/lib/index'
const searchForm = ref()
const formConfig = reactive(<formConfig>{
  items: [
    {
      field_code: 'checkValue',
      label: '输入查询',
      control_type: ControlType.input,
      configs: {
        placeholder: '费用内容',
      },
    },
    {
      field_code: 'name',
      label: '指标名称',
      control_type: ControlType.treeSelect,
      configs: {
        multiple: true,
        optionsData: [
          {
            label: 'A',
            value: 'A',
            title: 'A',
            children: [
              {
                label: 'a',
                value: 'a',
                title: 'a',
              },
              {
                label: 'b',
                value: 'b',
                title: 'b',
              },
            ],
          },
        ],
      },
    },
    {
      field_code: 'type',
      label: '收款类型',
      control_type: ControlType.select,
      configs: {
        mode: 'multiple',
        optionsData: [
          {
            label: '男',
            value: '1',
            title: '1男',
          },
          {
            label: '女',
            value: '2',
            title: '2女',
          },
        ],
      },
    },
    {
      field_code: 'feeType',
      label: '费用类型',
      control_type: ControlType.select,
    },
    {
      field_code: 'user',
      label: '收款人',
      control_type: ControlType.input,
    },
  ],
  colSpan: 6,
  isConvert: true, //查询获取的参数是否需要将数组格式数据转换为字符串格式
  defaultData: {
    //查询表单默认值
    checkValue: 'test',
  },
  //顶部工具栏默认显示的最多查询项,默认1个
  max: 2,
})
const btnConfig = reactive<tableBtnConfig>({
  btns: [
    {
      level: 1,
      type: BtnType.addBill,
      title: '添加',
      icon: 'add',
    },
    {
      level: 2,
      title: '导入',
      type: BtnType.import,
      tempType: '21',
      icon: 'import',
    },
    {
      level: 3,
      title: '导出',
      icon: 'export',
    },
  ],
})
const selectList = reactive<BillTypeItem[]>([
  {
    bill_type_id: '111',
    bill_type_name: '差旅',
  },
  {
    bill_type_id: '222',
    bill_type_name: '会议',
  },
])
const unitConfig = reactive<unitConfig>({
  visible: true,
  defaultVal: Units.yuan,
  disabled: false,
})
let selectData: any = ref([])

//查询
const handleQuery = (obj: any) => {}

//重置
const handleReset = () => {}

//顶部按钮-新增单据
const billChecked = (item: BillTypeItem) => {}

//顶部右侧工具栏-单位切换时触发
const changeUnit = (val: Units) => {}

//顶部按钮-其他按钮单击事件
const btnClick = (icon: string) => {}

//手动修改更多查询项的显隐
const changeVisible = (val: boolean) => {
  searchForm.value.toggleSearch(true)
}
</script>
<style lang="less" scoped>
#app {
  padding: 8px;
  background-color: #fff;
}
</style>
<template>
  <div>
    <p>
      <a-button @click="changeVisible">手动控制更多查询条件的显示与隐藏</a-button>
    </p>
    <GicSearchForms
      :form-config="formConfig"
      :btn-config="btnConfig"
      @query="handleQuery"
      @reset="handleReset"
      :columnVisibleSet="false"
      @bill-checked="billChecked"
      :select-list="selectList"
      :unit-config="unitConfig"
      @change-unit="changeUnit"
      @btnClick="btnClick"
      ref="searchForm"
    ></GicSearchForms>
  </div>
</template>
<script lang="ts" setup>
import { ref, reactive } from 'vue'
import { GicSearchForms } from 'ctj-ui-next'
import {
  formItem,
  tableBtnConfig,
  formConfig,
  unitConfig,
  BtnType,
  Units,
  BillTypeItem,
  ControlType,
} from 'ctj-ui-next/lib/index'
const searchForm = ref()
const formConfig = reactive(<formConfig>{
  items: [
    {
      field_code: 'checkValue',
      label: '输入查询',
      control_type: ControlType.input,
      configs: {
        placeholder: '费用内容',
      },
    },
    {
      field_code: 'name',
      label: '指标名称',
      control_type: ControlType.treeSelect,
      configs: {
        multiple: true,
        optionsData: [
          {
            label: 'A',
            value: 'A',
            title: 'A',
            children: [
              {
                label: 'a',
                value: 'a',
                title: 'a',
              },
              {
                label: 'b',
                value: 'b',
                title: 'b',
              },
            ],
          },
        ],
      },
    },
    {
      field_code: 'type',
      label: '收款类型',
      control_type: ControlType.select,
      configs: {
        mode: 'multiple',
        optionsData: [
          {
            label: '男',
            value: '1',
            title: '1男',
          },
          {
            label: '女',
            value: '2',
            title: '2女',
          },
        ],
      },
    },
    {
      field_code: 'feeType',
      label: '费用类型',
      control_type: ControlType.select,
    },
    {
      field_code: 'user',
      label: '收款人',
      control_type: ControlType.input,
    },
  ],
  colSpan: 6,
  isConvert: true, //查询获取的参数是否需要将数组格式数据转换为字符串格式
  defaultData: {
    //查询表单默认值
    checkValue: 'test',
  },
  //顶部工具栏默认显示的最多查询项,默认1个
  max: 2,
})
const btnConfig = reactive<tableBtnConfig>({
  btns: [
    {
      level: 1,
      type: BtnType.addBill,
      title: '添加',
      icon: 'add',
    },
    {
      level: 2,
      title: '导入',
      type: BtnType.import,
      tempType: '21',
      icon: 'import',
    },
    {
      level: 3,
      title: '导出',
      icon: 'export',
    },
  ],
})
const selectList = reactive<BillTypeItem[]>([
  {
    bill_type_id: '111',
    bill_type_name: '差旅',
  },
  {
    bill_type_id: '222',
    bill_type_name: '会议',
  },
])
const unitConfig = reactive<unitConfig>({
  visible: true,
  defaultVal: Units.yuan,
  disabled: false,
})
let selectData: any = ref([])

//查询
const handleQuery = (obj: any) => {}

//重置
const handleReset = () => {}

//顶部按钮-新增单据
const billChecked = (item: BillTypeItem) => {}

//顶部右侧工具栏-单位切换时触发
const changeUnit = (val: Units) => {}

//顶部按钮-其他按钮单击事件
const btnClick = (icon: string) => {}

//手动修改更多查询项的显隐
const changeVisible = (val: boolean) => {
  searchForm.value.toggleSearch(true)
}
</script>
<style lang="less" scoped>
#app {
  padding: 8px;
  background-color: #fff;
}
</style>

属性 Props

参数说明类型参数说明是否必传
formConfig表单数据formConfig参考 formConfig 说明
btnConfig表格顶部按钮tableBtnConfig参考btnConfig 说明
columnVisibleSet表格操作列显隐配置按钮是否显示boolean默认 false
eleDataObj表单元素下拉数据配置Object{ 字段名/字典 code: [下拉数据] }

事件 Events

事件名说明回调参数参数说明
handleQuery查询obj:any查询表单数据
handleReset重置
changeUnit顶部金额单位改变时触发val:any当前选中的金额单位
formChange表单数据改变时触发(value: any, column: columnItem, option: any)value 要素数据, column 对应表单项, option 下拉或属性下拉当前选中节点
billChecked报销单新建单据menuItem:any需要新建的单据信息
importSuccess导入成功触发
btnClick表格顶部其他按钮单击事件code:string单击的按钮 icon

方法 Methods

方法名称说明参数
toggleSearch改变“更多”查询条件的显示与隐藏true/false
resetData手动清空查询表单数据
getQueryData获取全部表单数据
setFieldValue修改某个字段的值('字段 field_code',值)

参数说明

btnConfig 说明

参数说明类型参数说明是否必传
max顶部允许显示的最多按钮数量number默认 4
btns顶部按钮tableBtn[]参考tableBtn 说明
moreText"更多"string默认显示更多

tableBtn 说明

参数说明类型参数说明是否必传
level按钮级别number/string用于设置不同级别按钮 css,不传即三级按钮
title按钮显示文字string
type按钮类型参考枚举 BtnType
visible按钮是否显示Booleantrue/false
tempType导入模板string按钮类型为导入时必传
icon按钮标识string
remark备注string
loading加载中boolean

formConfig 说明

参数说明类型参数说明是否必传
items表单项formItem[]参考formItem 说明
colSpan表单项占列数number通常为 6 或者 8,默认 6
max默认显示的查询项数量number默认 1
labelWidth表单 label 宽度string默认'120px'
eleDataObj表单元素下拉数据配置Object{ 字段名/字典 code: [下拉数据] }
isConvert查询时参数为数组的数据是否需要转换成字符串Booleantrue/false,默认 false
gaps各表单项之间的上下间距String默认 16px,高级查询中为 8px
defaultData表单数据默认值any{}

预算单位软件产品开发部