certflow.views.query_hub_view 源代码

"""查询中心 hub(阶段 B2)

替代原「查询与补充」单一销售计划查询页,作为主窗口的一个堆叠页,内含三个标签:

- 🔍 销售计划:内嵌现有 ``QueryView``(其丰富查询/筛选/分页/打印入口零改动)。
- 🟡 校正队列(黄标):内嵌现有 ``CorrectionQueueView``(去模态,作子控件嵌入)。
- 🗂 基础数据:``BaseDataHubWidget``(维护按钮 + 材质/口径/型号→压力/BOM 查询)。

``query_view`` 属性仍指向内嵌的 ``QueryView`` 实例,供主窗口连接信号(如
``navigate_to_print``)与刷新。

蓝图关联:``docs/BLUEPRINT_QUERY_UNIFY.md`` 阶段 B2(基础数据/校正队列/BOM 收进查询中心)。
"""

from __future__ import annotations

import contextlib
from typing import Any

from PySide6.QtCore import Qt
from PySide6.QtWidgets import QTabWidget, QVBoxLayout, QWidget

from certflow.views.base_data_hub_widget import BaseDataHubWidget
from certflow.views.correction_queue_view import CorrectionQueueView


[文档] class QueryHubView(QWidget): """查询中心 hub:销售计划 / 校正队列 / 基础数据 三标签。""" def __init__( self, query_view: QWidget, db_manager: Any = None, session: Any = None, parent: QWidget | None = None, ) -> None: super().__init__(parent) self.query_view = query_view self._db_manager = db_manager self._session = session self._init_ui() def _init_ui(self) -> None: layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) self._tabs = QTabWidget() self._tabs.addTab(self.query_view, "🔍 销售计划") self._correction = CorrectionQueueView( db_manager=self._db_manager, session=self._session, parent=self, ) self._correction.setWindowFlags(Qt.WindowType.Widget) self._tabs.addTab(self._correction, "🟡 校正队列") self._base_data = BaseDataHubWidget( db_manager=self._db_manager, session=self._session, parent=self, ) self._tabs.addTab(self._base_data, "🗂 基础数据") layout.addWidget(self._tabs, stretch=1)
[文档] def refresh(self) -> None: """刷新子标签(切回本页或导入后调用)。""" with contextlib.suppress(Exception): self.query_view.refresh() with contextlib.suppress(Exception): self._correction.refresh() with contextlib.suppress(Exception): self._base_data.refresh()