certflow.views.query_view module

查询界面 - 参数化查询(配置驱动版)

从 ui.yaml 读取视图模板、操作符定义、字段映射等配置。

class certflow.views.query_view.QueryView(session, db_manager=None, controller=None)[源代码]

基类:QuickSearchPresetMixin, QWidget

销售计划查询视图 - 配置驱动

参数:
navigate_to_print
back_to_home
setup_ui()[源代码]

初始化整体界面布局

返回类型:

None

setup_view_toolbar(parent_layout)[源代码]

设置视图切换工具栏

参数:

parent_layout (Any)

返回类型:

None

setup_filter_section(parent_layout)[源代码]

设置筛选条件区域

参数:

parent_layout (Any)

返回类型:

None

qsp_get_quick_search_items(fields)[源代码]

快查候选数据源(重写 mixin 钩子):以视图默认范围(_view_default_conditions)作为 稳定基础抽出去重组合,不随快查临时行收窄(与历史行为一致)。

参数:

fields (list[str])

返回类型:

list[str]

qsp_get_field_label(field)[源代码]

字段中文标签(重写 mixin 钩子,仅用于快查框占位提示)。

参数:

field (str)

返回类型:

str

快查确认入口(mixin 回调):桥接到 View 的 search()

mixin 在 AND 分支以无参调用、OR 分支带 or_filters 调用,二者都能正确转发。

参数:

or_filters (Any)

返回类型:

None

setup_result_table(parent_layout)[源代码]

设置结果表格(迁移到 BaseQueryView:SalePlanQueryView 宿主驱动渲染器)。

保留 QueryView 自身的高级 FilterBar / 快查预设 / 统计 / 导出 / 打印跳转, 仅把结果表格 + 分页展示委托给 SalePlanQueryView;其内置分页条隐藏, 翻页由 QueryView 自有分页控件经 run_query 驱动。

参数:

parent_layout (Any)

返回类型:

None

setup_pagination(parent_layout)[源代码]

设置分页控件

参数:

parent_layout (Any)

返回类型:

None

switch_view(view_key)[源代码]

切换当前查询视图

参数:

view_key (str)

返回类型:

None

search(or_filters=None, reset_page=True)[源代码]

执行搜索

参数:
  • or_filters (Any) -- 可选 OR 条件列表([{field, operator, value}, ...]), 与筛选行条件以 OR 组合,用于快查「跨字段任一命中」。

  • reset_page (bool) -- 是否将当前页复位到第 1 页。新查询(筛选变更 / 查询按钮 / 预设 / 切换视图)应为 True;翻页与改页大小由调用方显式维持页码, 传 False,避免上一页残留页码超出新结果范围导致显示为空。

返回类型:

None

refresh()[源代码]

刷新当前视图数据(保留当前页码)

返回类型:

None

showEvent(event)[源代码]

首次显示时加载数据(避免构造期在无事件循环的测试/无头环境触发阻塞式查询)。

参数:

event (Any)

返回类型:

None

display_results(result)[源代码]

将查询结果填充到表格中显示(委托 SalePlanQueryView,渲染保真见其 _render)。

注意:不在每次结果刷新时重算快查候选项——否则 QuickSearch 的选中态(currentIndex) 会被重置回首项,导致键盘 ↓ 永远回到第一个候选、无法翻页切换(与 report_view 行为不一致)。 候选仅在初始化 / preset 切换 / 视图默认范围变化时重算。

参数:

result (dict[str, Any])

返回类型:

None

get_filters()[源代码]

获取当前所有筛选条件(委托 FilterBar,统一条件契约)。

遍历所有筛选行,收集非空的筛选条件,构造成查询服务可用的格式。 如果启用了「按计划日期范围筛选」且用户已勾选,自动附加 plan_date 区间条件。

返回:

{'value': ..., 'operator': ...}} 区间条件 value 为 [min, max] 列表

返回类型:

筛选条件字典,格式为 {field_name

add_filter_row()[源代码]

添加一行空筛选条件(公共入口)

创建一个包含字段选择、操作符选择、值输入框和删除按钮的筛选行。

返回类型:

None

reset_filters()[源代码]

重置筛选条件

恢复为当前视图的默认筛选条件(或空行),恢复默认时间范围复选框,重置页码并重新搜索。

返回类型:

None

setup_quick_filter_bar(parent_layout)[源代码]

设置快速筛选按钮栏

参数:

parent_layout (Any)

返回类型:

None

get_selected_ids()[源代码]

获取当前选中的 SalePlan ID 列表

用于跨页面数据传递,将查询视图中选中的记录 ID 传递给合格证页面。

返回:

选中的 SalePlan.id 列表

返回类型:

List[int]

show_statistics()[源代码]

显示统计信息弹窗

返回类型:

None

export_results()[源代码]

导出当前查询结果为 Excel 文件(委托 Controller → Service → Handler)

返回类型:

None

prev_page()[源代码]

方法说明。

返回:

None

返回类型:

None

next_page()[源代码]

方法说明。

返回:

None

返回类型:

None

on_page_size_changed()[源代码]

方法说明。

返回:

None

返回类型:

None

staticMetaObject = PySide6.QtCore.QMetaObject("QueryView" inherits "QWidget": Methods:   #33 type=Signal, signature=navigate_to_print(QVariantList), parameters=QVariantList   #34 type=Signal, signature=back_to_home() )