feat: 增加采集任务重新执行入口 (#63)
This commit is contained in:
+31
-2
@@ -21,8 +21,8 @@
|
||||
- 图标用 `FluentIcon`,**不得用表情符号**。
|
||||
- 页面 `objectName` 固定为 `pddTaskPage`,不要改。
|
||||
|
||||
注意:本页唯一会产生外部后果(真的去操作手机、可能下单)的命令是
|
||||
“开始自动获取”。其余操作全部只读本地数据库。
|
||||
注意:“开始自动获取”和“重新执行”会真的操作手机。重新执行当前只允许
|
||||
采集任务,采购任务必须在事件层拦截,不能从本入口下单。
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
@@ -276,6 +276,7 @@ class PDDTaskPage(QWidget):
|
||||
autoFetchRequested = pyqtSignal()
|
||||
searchRequested = pyqtSignal(dict)
|
||||
refreshRequested = pyqtSignal()
|
||||
rerunRequested = pyqtSignal(str)
|
||||
detailRequested = pyqtSignal(str)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
@@ -323,6 +324,10 @@ class PDDTaskPage(QWidget):
|
||||
self.refreshButton = PushButton(FIF.SYNC, "刷新", self)
|
||||
self.refreshButton.setAccessibleName("刷新本地任务表格")
|
||||
|
||||
self.rerunButton = PushButton(FIF.UPDATE, "重新执行", self)
|
||||
self.rerunButton.setAccessibleName("重新执行当前选中的采集任务")
|
||||
self.rerunButton.setEnabled(False)
|
||||
|
||||
self.commandCard = CardWidget(self)
|
||||
commandLayout = QGridLayout(self.commandCard)
|
||||
commandLayout.setContentsMargins(20, 14, 20, 14)
|
||||
@@ -338,6 +343,7 @@ class PDDTaskPage(QWidget):
|
||||
commandLayout.setColumnStretch(6, 4)
|
||||
commandLayout.setColumnStretch(8, 1)
|
||||
commandLayout.addWidget(self.refreshButton, 0, 9)
|
||||
commandLayout.addWidget(self.rerunButton, 0, 10)
|
||||
|
||||
def _build_content_area(self) -> None:
|
||||
self.taskTable = TableView(self)
|
||||
@@ -410,9 +416,13 @@ class PDDTaskPage(QWidget):
|
||||
self.searchButton.clicked.connect(self._apply_filters)
|
||||
self.keywordInput.returnPressed.connect(self._apply_filters)
|
||||
self.refreshButton.clicked.connect(self.refreshRequested.emit)
|
||||
self.rerunButton.clicked.connect(self._request_rerun)
|
||||
self.clearFiltersButton.clicked.connect(self.clear_filters)
|
||||
self.taskTable.clicked.connect(self._on_table_clicked)
|
||||
self.taskTable.activated.connect(self._on_table_activated)
|
||||
self.taskTable.selectionModel().selectionChanged.connect(
|
||||
self._update_rerun_button
|
||||
)
|
||||
|
||||
self.findShortcut = QShortcut(QKeySequence.Find, self)
|
||||
self.findShortcut.activated.connect(self.keywordInput.setFocus)
|
||||
@@ -497,6 +507,25 @@ class PDDTaskPage(QWidget):
|
||||
task = self.taskModel.row_at(index.row()) if index.isValid() else None
|
||||
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._update_rerun_button()
|
||||
|
||||
def _request_rerun(self) -> None:
|
||||
task_id = self.current_task_id()
|
||||
if task_id:
|
||||
self.rerunRequested.emit(task_id)
|
||||
|
||||
def _update_rerun_button(self) -> None:
|
||||
running = self.rerunButton.text() == "正在重新采集"
|
||||
has_selection = self.taskTable.selectionModel().hasSelection()
|
||||
self.rerunButton.setEnabled(
|
||||
has_selection and bool(self.current_task_id()) and not running
|
||||
)
|
||||
|
||||
def _apply_filters(self) -> None:
|
||||
filters = {
|
||||
"task_type": self.taskTypeCombo.currentText(),
|
||||
|
||||
Reference in New Issue
Block a user