139 lines
4.3 KiB
Markdown
139 lines
4.3 KiB
Markdown
# 自定义搜索视图说明
|
||
|
||
## 简介
|
||
|
||
该模块实现了自定义搜索视图 `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"`,筛选项默认隐藏,需要点击更多选项才能显示。
|
||
|