Files
gzth/header_search_panel/README.md
T
2025-12-19 15:37:59 +08:00

139 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自定义搜索视图说明
## 简介
该模块实现了自定义搜索视图 `header_search` 标签,主要包含以下筛选功能:
- 快捷筛选(quick_filter)
- 自选时间筛选(select_date_filter)(待移植)
- 字段搜索(field)(已移植)
通过这些筛选标签,用户可以更灵活地对列表视图中的数据进行筛选。
---
## 结构说明
### 1. 头部搜索框 (header_search)
**标签名:** `header_search`
#### 支持的属性:
| 属性名 | 类型 | 说明 | 是否可选 |
| ------- | ------ |-------------------------------------------------------------------| ---- |
| `class` | String | 自定义 CSS 类名,<br/>可使用class="header-search-inline"使所有筛选在同一行并根据宽度自动换行 | ✅ |
#### 子标签支持:
- `field`:简单字段筛选
- `quick_filter`:快捷筛选
- `select_date_filter`:自选时间筛选
#### 示例:
```xml
<header_search class="custom-search">
<quick_filter string="状态筛选" and_or="or">
<filter name="confirmed" string="已确认" domain="[('state', '=', 'confirmed')]"/>
<filter name="draft" string="草稿" domain="[('state', '=', 'draft')]"/>
</quick_filter>
<select_date_filter allow_date_fields="create_date,write_date" />
<field name="partner_id" string="合作伙伴"/>
<field name="order_id" string="订单编号"/>
</header_search>
```
---
### 2. 快捷筛选 (quick_filter)
**标签名:** `quick_filter`
#### 支持的属性:
| 属性名 | 类型 | 说明 | 是否可选 |
| ----------- | ------- | ----------- | ------------ |
| `class` | String | 自定义 CSS 类名 | ✅ |
| `string` | String | 显示的标头名称 | ✅ |
| `invisible` | Boolean | 是否默认隐藏(废弃) | ✅ |
| `options` | JSON | 扩展参数,支持以下参数: | ✅ |
| | | `radio`: 是否单选 | |
| | | `no_label`: 不显示标题 | |
| `and_or` | String | 筛选条件之间的逻辑关系 | ✅ (默认 `and`) |
#### 子标签:
- `filter` :用于定义筛选条件
#### 示例:
```xml
<quick_filter string="状态筛选" and_or="or" options="{'radio': False, 'no_label': True}">
<filter name="confirmed" string="已确认" domain="[('state', '=', 'confirmed')]"/>
<filter name="draft" string="草稿" domain="[('state', '=', 'draft')]"/>
</quick_filter>
```
---
### 3. 自选时间筛选 (select_date_filter)(废弃)
**标签名:** `select_date_filter`
#### 支持的属性:
| 属性名 | 类型 | 说明 | 是否可选 |
| ------------------- | ------- |----------------| ---- |
| `class` | String | 自定义 CSS 类名 | ✅ |
| `invisible` | Boolean | 是否默认隐藏(废弃) | ✅ |
| `allow_date_fields` | String | 允许筛选的时间字段,逗号分隔 | ✅ |
#### 示例:
```xml
<select_date_filter allow_date_fields="create_date,write_date" />
```
---
### 4. 字段筛选 (field)
**标签名:** `field`
#### 支持的属性:
| 属性名 | 类型 | 说明 | 是否可选 |
| ------- | ---- | --------- | ---- |
| `name` | String | 字段名称 | ❌ |
| `string` | String | 显示的标头名称 | ✅ |
| `class` | String | 自定义 CSS | ✅ |
| `invisible` | Boolean | 是否默认隐藏 | ✅ |
| `options` | JSON | 扩展参数,支持以下参数: | ✅ |
| | | `radio`: 是否单选 | |
| | | `no_label`: 不显示标题 | |
#### 示例:
```xml
<field name="partner_id" string="合作伙伴" />
<field name="order_id" string="订单编号" />
```
---
## 使用说明
1. 将筛选标签嵌入到自定义列表视图的 XML 文件中。
2. 通过 `class` 属性自定义样式。
3. 配合 Odoo 17 的搜索面板,实现更加灵活的筛选功能。
---
## 注意事项
- `and_or` 属性仅在 `quick_filter` 中生效。
- `allow_date_fields` 需要填写模型中的日期字段名。
- 如果 `invisible="1"`,筛选项默认隐藏,需要点击更多选项才能显示。