fix: 优化重新采集取消交互 (#82)

This commit is contained in:
chengma
2026-08-10 09:08:54 +08:00
parent 8cc8574e8a
commit 39f4a8ee4f
6 changed files with 307 additions and 16 deletions
+32 -5
View File
@@ -277,12 +277,14 @@ class PDDTaskPage(QWidget):
searchRequested = pyqtSignal(dict)
refreshRequested = pyqtSignal()
rerunRequested = pyqtSignal(str)
rerunCancelRequested = pyqtSignal()
detailRequested = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.setObjectName("pddTaskPage")
self._rerun_state = "idle"
self.taskModel = TaskTableModel(self)
self._build_command_area()
self._build_content_area()
@@ -508,22 +510,47 @@ class PDDTaskPage(QWidget):
return task.remote_task_id if task else ""
def set_rerun_running(self, running: bool) -> None:
"""重新采集期间锁定两个会操作手机的入口。"""
"""设置重新采集状态;运行时保留可见的停止入口。"""
self.rerunButton.setText("正在重新采集" if running else "重新执行")
self.autoFetchButton.setEnabled(not running)
self._rerun_state = "running" if running else "idle"
self._update_rerun_button()
def set_rerun_cancelling(self) -> None:
"""显示取消请求已发出,防止用户重复点击。"""
self._rerun_state = "cancelling"
self._update_rerun_button()
def _request_rerun(self) -> None:
if self._rerun_state == "running":
self.rerunCancelRequested.emit()
return
if self._rerun_state != "idle":
return
task_id = self.current_task_id()
if task_id:
self.rerunRequested.emit(task_id)
def _update_rerun_button(self) -> None:
running = self.rerunButton.text() == "正在重新采集"
if self._rerun_state == "running":
self.rerunButton.setText("停止重新采集")
self.rerunButton.setAccessibleName("停止当前重新采集")
self.rerunButton.setEnabled(True)
self.autoFetchButton.setEnabled(False)
return
if self._rerun_state == "cancelling":
self.rerunButton.setText("正在停止…")
self.rerunButton.setAccessibleName("正在停止重新采集")
self.rerunButton.setEnabled(False)
self.autoFetchButton.setEnabled(False)
return
self.rerunButton.setText("重新执行")
self.rerunButton.setAccessibleName("重新执行当前选中的采集任务")
self.autoFetchButton.setEnabled(True)
has_selection = self.taskTable.selectionModel().hasSelection()
self.rerunButton.setEnabled(
has_selection and bool(self.current_task_id()) and not running
has_selection and bool(self.current_task_id())
)
def _apply_filters(self) -> None: