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()