certflow.views package¶
Subpackages¶
- certflow.views.bases package
- certflow.views.common package
Submodules¶
- certflow.views.base_data_hub_widget module
- certflow.views.bom_import_widget module
- certflow.views.bom_material_query_view module
- certflow.views.caliber_mapping_manager_view module
- certflow.views.certificate_preview_painter module
- certflow.views.correction_flag_query_view module
- certflow.views.correction_queue_view module
CorrectionQueueViewCorrectionQueueView.showEvent()CorrectionQueueView.refresh()CorrectionQueueView.on_correct_flagged()CorrectionQueueView.on_clear_flag()CorrectionQueueView.on_release_quarantine()CorrectionQueueView.on_delete_quarantine()CorrectionQueueView.on_edit_and_release_quarantine()CorrectionQueueView.closeEvent()CorrectionQueueView.staticMetaObject
FlagCorrectDialogQuarantineReleaseDialog
- certflow.views.history_view module
- certflow.views.import_confirm_dialog module
- certflow.views.import_dialog module
ImportConfigDialogImportConfigDialog.file_pathImportConfigDialog.df_rawImportConfigDialog.available_sheetsImportConfigDialog._skipped_columnsImportConfigDialog._column_mapped_statusImportConfigDialog.sheet_configsImportConfigDialog.config_confirmedImportConfigDialog.scope_monthImportConfigDialog.date_range_startImportConfigDialog.date_range_endImportConfigDialog.order_filterImportConfigDialog.selected_rowsImportConfigDialog.filter_combosImportConfigDialog.setup_ui()ImportConfigDialog.load_user_config()ImportConfigDialog.save_user_config()ImportConfigDialog.browse_file()ImportConfigDialog.load_excel_info()ImportConfigDialog.load_sheet_data()ImportConfigDialog.update_preview()ImportConfigDialog.get_current_mapping()ImportConfigDialog.skip_unmapped_columns()ImportConfigDialog.reset_skipped_columns()ImportConfigDialog.select_all()ImportConfigDialog.deselect_all()ImportConfigDialog.clear_saved_config()ImportConfigDialog.on_checkbox_changed()ImportConfigDialog.on_preview_changed()ImportConfigDialog.preview_data()ImportConfigDialog.auto_detect()ImportConfigDialog.validate_config()ImportConfigDialog.staticMetaObject
- certflow.views.import_page module
- certflow.views.lookup_tables_dialog module
- certflow.views.main_window module
- certflow.views.material_grade_manager_view module
- certflow.views.model_param_mapping_manager_view module
- certflow.views.output_view module
- certflow.views.param_supplement_dialog module
ParamSupplementDialogParamSupplementDialog.paramsParamSupplementDialog.confirmedParamSupplementDialog.skip_allParamSupplementDialog.supplement_confirmedParamSupplementDialog.confirmedParamSupplementDialog.skip_allParamSupplementDialog.paramsParamSupplementDialog.setup_ui()ParamSupplementDialog.load_prefill()ParamSupplementDialog.get_parameters()ParamSupplementDialog.staticMetaObject
- certflow.views.print_dialog module
- certflow.views.print_view module
- certflow.views.query_hub_view module
- certflow.views.query_view module
QueryViewQueryView.navigate_to_printQueryView.back_to_homeQueryView.setup_ui()QueryView.setup_view_toolbar()QueryView.setup_filter_section()QueryView.qsp_get_quick_search_items()QueryView.qsp_get_field_label()QueryView.on_quick_search()QueryView.setup_result_table()QueryView.setup_pagination()QueryView.switch_view()QueryView.search()QueryView.refresh()QueryView.showEvent()QueryView.display_results()QueryView.get_filters()QueryView.add_filter_row()QueryView.reset_filters()QueryView.setup_quick_filter_bar()QueryView.get_selected_ids()QueryView.show_statistics()QueryView.export_results()QueryView.prev_page()QueryView.next_page()QueryView.on_page_size_changed()QueryView.staticMetaObject
- certflow.views.queue_panel module
- certflow.views.report_view module
ReportWorkerReportViewReportView.populate_page_options()ReportView.setup_ui()ReportView.create_template_group()ReportView.create_data_group()ReportView.create_preview_group()ReportView.create_button_bar()ReportView.load_data()ReportView.load_all()ReportView.on_quick_search()ReportView.on_report_type_changed()ReportView.select_all()ReportView.clear_all()ReportView.get_selected_ids()ReportView.update_data_table()ReportView.update_info()ReportView.on_generate()ReportView.show_result()ReportView.on_open_folder()ReportView.on_preview_bom()ReportView.staticMetaObject
- certflow.views.sale_plan_query_view module
SalePlanQueryViewSalePlanQueryView.selection_changedSalePlanQueryView.set_controller()SalePlanQueryView.set_view_columns()SalePlanQueryView.run_query()SalePlanQueryView.display()SalePlanQueryView.recordsSalePlanQueryView.selected_rows()SalePlanQueryView.selected_records()SalePlanQueryView.selected_sale_plan_ids()SalePlanQueryView.save_column_state()SalePlanQueryView.restore_column_state()SalePlanQueryView.staticMetaObject
- certflow.views.scan_view module
- certflow.views.settings_view module
Module contents¶
视图模块
包含所有界面相关的类,提供系统的图形用户界面组件。 该模块是CertFlow系统的前端展示层,负责用户交互和数据展示。
- class certflow.views.ImportConfigDialog(file_path='', view_key='sales_plan', parent=None, db_manager=None, session=None)[源代码]¶
基类:
QDialog导入配置对话框
提供Excel文件导入前的参数配置界面,支持: - 文件选择(新增) - 工作表选择 - 表头行和数据起始行设置 - 列映射预览和手动配置 - 跳过列管理 - 配置记忆(自动保存下次导入时恢复)
- Signals:
config_confirmed: 配置确认信号,参数为配置参数字典
- file_path¶
Excel文件路径
- df_raw¶
原始DataFrame(未处理表头)
- available_sheets¶
可用工作表列表
- _skipped_columns¶
跳过的列名集合
- _column_mapped_status¶
每列映射状态缓存
- sheet_configs¶
各工作表的保存配置
- config_confirmed¶
- on_checkbox_changed(row, col_name, state)[源代码]¶
复选框状态改变处理
三种状态的处理逻辑: - 已配置(✅): 列有目标映射 + 复选框选中 → 导入时使用该映射 - 未配置(⚠️): 列无目标映射 + 复选框选中 → 导入但不映射(保留原列名) - 跳过(⏭️): 复选框未选中 → 导入时忽略该列
转换规则: - 从未选中→选中: 从跳过恢复为原始状态(已配置或未配置) - 从选中→未选中: 标记为跳过
- staticMetaObject = PySide6.QtCore.QMetaObject("ImportConfigDialog" inherits "QDialog": Methods: #41 type=Signal, signature=config_confirmed(QVariantMap), parameters=QVariantMap )¶
- class certflow.views.MainWindow(session, config=None, db_manager=None, settings_controller=None)[源代码]¶
基类:
QMainWindow主窗口 - 统一调度各流程视图
- 参数:
session (Any)
config (dict)
db_manager (DatabaseManager | None)
settings_controller (SettingsController | None)
- show_output_view(sale_plan_ids=None, certificate_ids=None, target=None)[源代码]¶
显示统一输出视图并加载数据(§11.5 阶段3)。
- staticMetaObject = PySide6.QtCore.QMetaObject("MainWindow" inherits "QMainWindow": )¶
- class certflow.views.PrintView(session, config=None, db_manager=None, parent=None, printer_controller=None)[源代码]¶
基类:
QWidget合格证打印视图
- Signals:
print_completed: 打印完成信号,携带 certificate_ids 列表
- 参数:
session (Any)
config (dict)
db_manager (Any)
parent (Any)
printer_controller (Any)
- print_completed¶
- setup_ui()[源代码]¶
构建打印界面
整体:顶部【主操作面:队列传输控制条】+ QSplitter(左控制面板 / 右预览面板) + 底部【打印队列表格】。传输控制条(启动/暂停/继续/置顶/上移/取消/清空已完成) 提升到顶部,用户可显式控制队列;左右均包 QScrollArea 兜底防裁切。
- 返回类型:
None
- load_selected_sale_plan_ids(sale_plan_ids)[源代码]¶
加载选中的销售计划 ID 列表,支持一次打印多条记录。
多条记录均加入打印视图:各自绑定最新 Certificate 并按整批编号区间 回填;批量打印时依次逐条打印(如 12 台 + 32 台 = 44 台)。表单编辑 / 预览默认展示第一条,可通过「批量」按钮一次打印全部。
- staticMetaObject = PySide6.QtCore.QMetaObject("PrintView" inherits "QWidget": Methods: #33 type=Signal, signature=print_completed(QVariantList), parameters=QVariantList #34 type=Signal, signature=navigate_to_scan(QVariantList), parameters=QVariantList )¶
- class certflow.views.HistoryView(session, db_manager=None, parent=None)[源代码]¶
基类:
QWidget打印历史视图
- 参数:
session (Any)
db_manager (Any)
parent (Any)
- staticMetaObject = PySide6.QtCore.QMetaObject("HistoryView" inherits "QWidget": )¶
- class certflow.views.SettingsView(config=None, controller=None, parent=None)[源代码]¶
基类:
QWidget系统设置视图(配置中心)
标签页: - 概览: config.yaml 全量树(只读,含旁路配置),可编辑项灰显 - 可编辑: 由 settings_ui.yaml spec 自动渲染分区/控件 - 我的覆盖: 列出 paths.local.yaml + userconfig 稳定段覆盖,一键恢复默认
通过 SettingsController 保存设置并立即生效(主题切换、语言切换等)。
- 参数:
config (dict)
controller (SettingsController | None)
parent (Any)
- staticMetaObject = PySide6.QtCore.QMetaObject("SettingsView" inherits "QWidget": )¶
- class certflow.views.ScanView(session, db_manager=None, parent=None, scan_controller=None)[源代码]¶
基类:
QWidget合格证扫描件生成视图(WYSIWYG 单页)
- 参数:
session (Any)
db_manager (Any)
parent (Any)
scan_controller (Any)
- scan_completed¶
- set_template_by_family(family)[源代码]¶
按语言族(全中文/中英文/全英文/俄英文)设置模板下拉(D 套用)。
解析 family→具体 key(取该族首个启用变体),再定位
template_combo项设选中; 找不到则忽略(保持现状)。设置会触发_on_template_changed重绘预览。- 参数:
family (str)
- 返回类型:
None
- apply_layout_preset(label)[源代码]¶
按拼版推荐值 label 套用扫描拼版(D 套用)。
label为空或「自定义」→ 设为自定义(启用自旋框)。否则在
layout_combo精确/包含匹配;匹配到则选中并触发预设套用, 匹配不到则回退自定义。
- 参数:
label (str)
- 返回类型:
None
- staticMetaObject = PySide6.QtCore.QMetaObject("ScanView" inherits "QWidget": Methods: #33 type=Signal, signature=scan_completed(QVariantList), parameters=QVariantList )¶
- class certflow.views.ParamSupplementDialog(model='', prefill=None, material_grades=None, parent=None)[源代码]¶
基类:
QDialog参数补充对话框
对标 VBA print.vb 批量打印时的一连串 InputBox 交互: 1. 口径 InputBox(第635/671行) 2. 压力 InputBox(第651/703行) 3. 温度 InputBox(第660/716行) 4. 介质 InputBox(第741行)
- 参数:
- params¶
用户填写的参数字典
- confirmed¶
用户是否点击了"确认"
- skip_all¶
用户是否点击了"跳过全部"
- supplement_confirmed¶
- static get_parameters(model='', prefill=None, material_grades=None, parent=None)[源代码]¶
弹出参数补充对话框并返回结果
对标 VBA 的 InputBox 调用模式,提供便捷的静态方法。
- staticMetaObject = PySide6.QtCore.QMetaObject("ParamSupplementDialog" inherits "QDialog": Methods: #41 type=Signal, signature=supplement_confirmed(QVariantMap), parameters=QVariantMap )¶
- class certflow.views.PrintPreviewDialog(data, serial_number='预览编号', template_key='full_chinese_3', parent=None)[源代码]¶
基类:
QDialog打印预览对话框
显示合格证预览位图,支持打印、图片导出和关闭操作。
- data¶
打印数据字典
- serial_number¶
当前预览的产品编号
- copies¶
打印份数
- staticMetaObject = PySide6.QtCore.QMetaObject("PrintPreviewDialog" inherits "QDialog": )¶
- class certflow.views.QueryView(session, db_manager=None, controller=None)[源代码]¶
基类:
QuickSearchPresetMixin,QWidget销售计划查询视图 - 配置驱动
- 参数:
session (Any)
db_manager (Any)
controller (QueryController | None)
- back_to_home¶
- qsp_get_quick_search_items(fields)[源代码]¶
快查候选数据源(重写 mixin 钩子):以视图默认范围(
_view_default_conditions)作为 稳定基础抽出去重组合,不随快查临时行收窄(与历史行为一致)。
- on_quick_search(or_filters=None)[源代码]¶
快查确认入口(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
- display_results(result)[源代码]¶
将查询结果填充到表格中显示(委托 SalePlanQueryView,渲染保真见其
_render)。注意:不在每次结果刷新时重算快查候选项——否则 QuickSearch 的选中态(currentIndex) 会被重置回首项,导致键盘 ↓ 永远回到第一个候选、无法翻页切换(与 report_view 行为不一致)。 候选仅在初始化 / preset 切换 / 视图默认范围变化时重算。
- get_filters()[源代码]¶
获取当前所有筛选条件(委托 FilterBar,统一条件契约)。
遍历所有筛选行,收集非空的筛选条件,构造成查询服务可用的格式。 如果启用了「按计划日期范围筛选」且用户已勾选,自动附加 plan_date 区间条件。
- 返回:
{'value': ..., 'operator': ...}} 区间条件 value 为 [min, max] 列表
- 返回类型:
筛选条件字典,格式为 {field_name
- get_selected_ids()[源代码]¶
获取当前选中的 SalePlan ID 列表
用于跨页面数据传递,将查询视图中选中的记录 ID 传递给合格证页面。
- 返回:
选中的 SalePlan.id 列表
- 返回类型:
List[int]
- 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() )¶
- class certflow.views.ReportView(controller=None, parent=None)[源代码]¶
基类:
QuickSearchPresetMixin,QWidget报告生成视图。
提供报告类型/语言/每页记录数选择、可勾选的数据列表(来自数据库销售计划)、 生成按钮与结果提示。
- 参数:
controller (ReportController | None)
parent (QWidget | None)
- populate_page_options(report_kind)[源代码]¶
按报告类型填充「每页行数」候选(配置可选,而非数字递增)。
- 参数:
report_kind (str)
- 返回类型:
None
- on_quick_search(or_filters=None)[源代码]¶
取 FilterBar 统一条件契约,对全库做检索并刷新勾选表格。
- 参数:
or_filters (Any) -- 可选 OR 条件列表(快查模糊输入无分隔符时传入), 与筛选行条件以 OR 组合。
- 返回类型:
None
- staticMetaObject = PySide6.QtCore.QMetaObject("ReportView" inherits "QWidget": )¶
- class certflow.views.BaseView(parent=None)[源代码]¶
基类:
QWidget所有业务视图的基类。
现有视图当前在
__init__内联构造 UI、各自实现refresh/retranslate_ui(仅settings_view有retranslate_ui、仅query_view有_is_dark_theme)。 本类把这些散落约定收敛为统一钩子 + helper,供后续灰度迁移继承。- 参数:
parent (QWidget | None)
- tr(text)[源代码]¶
翻译文本。
委托
QApplication.instance().i18n_manager.tr``(与现有视图读取 ``app.theme_manager的同一种全局挂载约定);找不到则原样返回。
- staticMetaObject = PySide6.QtCore.QMetaObject("BaseView" inherits "QWidget": )¶
- class certflow.views.BaseDialog(parent=None, title='', show_apply=False, confirm_text='确认', cancel_text='取消')[源代码]¶
基类:
QDialog标准对话框基类。
用法:
class MyDialog(BaseDialog): def init_ui(self) -> None: self.content_layout.addWidget(QLabel("内容")) dlg = MyDialog(self, title="编辑", confirm_text="保存") if dlg.exec(): ...
按钮栏信号已接线:
accepted -> accept()、rejected -> reject()、 ``applied -> self.applied``(可选「应用」按钮)。- applied¶
- confirm_danger(title, message, preview=None, ok_text='删除', ok_default=False)[源代码]¶
弹出来自
widgets.ConfirmDialog的危险操作二次确认(确认逻辑收敛进 widgets)。
- staticMetaObject = PySide6.QtCore.QMetaObject("BaseDialog" inherits "QDialog": Methods: #41 type=Signal, signature=applied() )¶
- class certflow.views.BomMaterialQueryView(session=None, db_manager=None, controller=None, parent=None)[源代码]¶
-
BOM 零件牌号查询视图(BaseQueryView + BomQueryDataSource 迁移版)。
- 参数:
session (Any)
db_manager (Any)
controller (Any)
parent (Any)
- staticMetaObject = PySide6.QtCore.QMetaObject("BomMaterialQueryView" inherits "BaseQueryView": )¶