--- name: jjb-search-form description: 定义 JJB 项目搜索表单组件使用规范。在使用 SearchForm、formLine、Form.Item 或 PageLayout 集成搜索区时使用。必须参考 MD/d.ts 文档。 --- # 搜索区规范(一级页面) ## 搜索表单组件 - 除提示词明确不需要的情况下,所有页面搜索区 **必须** 使用: ```javascript import SearchForm from '~/components/SearchForm' ``` 必须严格参考node_modules中对应依赖包的 MD 文档或 d.ts 文件!不得猜测组件属性! - **FormLine 规范**: `SearchForm` 的 `formLine` 属性中,所有搜索控件 **必须** 使用 `ControlWrapper` 封装: ```javascript import ControlWrapper from '@cqsjjb/jjb-react-admin-component/ControlWrapper' ``` | 控件 | 写法 | |------|------| | 文本输入 | `` | | 下拉选择 | `...` | | 日期范围 | `` | | 级联选择 | `` | | 树选择 | `` | **注意**:`ControlWrapper` 没有 `Custom` 属性,不要自行拼装。 - **布局挂载规范**: - **标准布局**:若页面结构简单,**必须**将 `SearchForm` 放置在 `PageLayout` 的 `formLine` 属性中,以实现搜索区与页面头部的紧凑集成。 - **复杂布局**:若搜索需求涉及复杂交互或多行展示,可根据实际场景将 `SearchForm` 放置于 `PageLayout` 的主体内容区。 ### 代码演示 ```jsx import React, { useState, useEffect } from 'react'; import { Button, Form, Table } from 'antd'; import PageLayout from '@cqsjjb/jjb-react-admin-component/PageLayout'; import SearchForm from '~/components/SearchForm'; import ControlWrapper from '@cqsjjb/jjb-react-admin-component/ControlWrapper'; import { tools } from '@cqsjjb/jjb-common-lib'; const { router } = tools; function DemoList(props) { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const getData = async () => { setLoading(true); try { // 请求数据 } finally { setLoading(false); } }; useEffect(() => { form.setFieldsValue(router.query); getData(); }, []); return ( , ]} onReset={(values) => { router.query = { ...router.query, ...values, current: 1, pageSize: 10 }; getData(); }} onFinish={(values) => { router.query = { ...router.query, ...values, current: 1, pageSize: 10 }; getData(); }} /> {/* Table ... */} ); } ```