第一步优化勾选功能

This commit is contained in:
27942
2026-02-05 00:35:15 +08:00
parent 4219c2fb58
commit 65b01af819

View File

@@ -861,6 +861,20 @@ class MainWindow(QMainWindow):
layout.addWidget(checkbox)
self.config_table.setCellWidget(row, 0, wrapper)
def _sync_checked_from_table(self):
"""从表格当前页的勾选框同步勾选状态到 configs仅非 model_view 且当前页)"""
if self.use_model_view or not self.page_row_indices:
return
for table_row, config_index in enumerate(self.page_row_indices):
if config_index >= len(self.configs):
continue
w = self.config_table.cellWidget(table_row, 0)
if not w:
continue
checkbox = w.findChild(QCheckBox) if hasattr(w, 'findChild') else None
if checkbox is not None:
self.configs[config_index]['勾选'] = checkbox.isChecked()
def _on_checkbox_changed(self, config_index, state):
"""勾选框状态改变回调"""
@@ -3226,17 +3240,21 @@ class MainWindow(QMainWindow):
try:
# 检查是否有Excel导入的配置
if self.configs:
# 如果存在失败项,自动只勾选失败
failed_indices = []
for idx, cfg in enumerate(self.configs):
status = cfg.get('情况', '')
if "失败" in status or "错误" in status or "过期" in status or "跳过" in status:
failed_indices.append(idx)
if failed_indices:
# 检查用户是否已经勾选了任何
has_user_selection = any(cfg.get('勾选', False) for cfg in self.configs)
# 只有当用户没有勾选任何项时,才自动勾选失败项
if not has_user_selection:
failed_indices = []
for idx, cfg in enumerate(self.configs):
cfg['勾选'] = idx in failed_indices
self.update_table()
self._show_infobar("info", "提示", f"检测到 {len(failed_indices)} 条失败记录,已自动仅选择失败项")
status = cfg.get('情况', '')
if "失败" in status or "错误" in status or "过期" in status or "跳过" in status:
failed_indices.append(idx)
if failed_indices:
for idx, cfg in enumerate(self.configs):
cfg['勾选'] = idx in failed_indices
self.update_table()
self._show_infobar("info", "提示", f"检测到 {len(failed_indices)} 条失败记录,已自动仅选择失败项")
# 如果有Excel配置批量处理
self.execute_batch_from_excel()
return # 批量处理完成后直接返回
@@ -3262,7 +3280,9 @@ class MainWindow(QMainWindow):
# 执行前强制同步当前页数据,确保手动修改的内容被包含
if not self.use_model_view:
self._sync_configs_from_table()
# 从表格当前页勾选框同步勾选状态到 configs确保执行的是用户当前勾选的行
self._sync_checked_from_table()
# 开始新任务时,从当前数据中统计已有的成功/失败/待执行数量(累计历史数据)
existing_success = 0
existing_failed = 0