feat: 增加批量重新采集和安全重新采购 (#138 #139)

This commit is contained in:
chengma
2026-08-11 10:42:51 +08:00
parent 7aa49c0e29
commit 598c808093
12 changed files with 420 additions and 60 deletions
+37 -16
View File
@@ -390,7 +390,8 @@ class PDDTaskPage(QWidget):
autoFetchRequested = pyqtSignal()
searchRequested = pyqtSignal(dict)
refreshRequested = pyqtSignal()
rerunRequested = pyqtSignal(str)
rerunRequested = pyqtSignal(object)
purchaseRerunRequested = pyqtSignal(object)
rerunCancelRequested = pyqtSignal()
resubmitRequested = pyqtSignal(object)
removeRequested = pyqtSignal(object)
@@ -460,10 +461,14 @@ class PDDTaskPage(QWidget):
self.invertSelectionButton.setToolTip("反选当前已加载的任务")
self.invertSelectionButton.setEnabled(False)
self.rerunButton = PushButton(FIF.UPDATE, "重新执行", self)
self.rerunButton.setAccessibleName("重新执行当前选中的采集任务")
self.rerunButton = PushButton(FIF.UPDATE, "重新采集", self)
self.rerunButton.setAccessibleName("重新采集勾选的采集任务")
self.rerunButton.setEnabled(False)
self.purchaseRerunButton = PushButton(FIF.SHOPPING_CART, "重新采购", self)
self.purchaseRerunButton.setAccessibleName("重新采购勾选的采购任务")
self.purchaseRerunButton.setEnabled(False)
self.resubmitButton = PushButton(FIF.SEND, "重新上报", self)
self.resubmitButton.setAccessibleName("重新上报勾选任务的已有结果")
self.resubmitButton.setEnabled(False)
@@ -489,7 +494,7 @@ class PDDTaskPage(QWidget):
if compact == self._compact_commands and self.commandLayout.count():
return
self._compact_commands = compact
for column in range(16):
for column in range(17):
self.commandLayout.setColumnStretch(column, 0)
if compact:
@@ -506,9 +511,10 @@ class PDDTaskPage(QWidget):
(self.selectAllButton, 2, 5, 1, 1),
(self.invertSelectionButton, 2, 6, 1, 1),
(self.checkedCountLabel, 2, 7, 1, 1),
(self.rerunButton, 2, 8, 1, 1),
(self.resubmitButton, 2, 9, 1, 1),
(self.removeButton, 2, 10, 1, 1),
(self.resubmitButton, 2, 8, 1, 1),
(self.rerunButton, 2, 9, 1, 1),
(self.purchaseRerunButton, 2, 10, 1, 1),
(self.removeButton, 2, 11, 1, 1),
)
self.commandLayout.setColumnStretch(4, 1)
else:
@@ -525,9 +531,10 @@ class PDDTaskPage(QWidget):
(self.selectAllButton, 0, 10, 1, 1),
(self.invertSelectionButton, 0, 11, 1, 1),
(self.checkedCountLabel, 0, 12, 1, 1),
(self.rerunButton, 0, 13, 1, 1),
(self.resubmitButton, 0, 14, 1, 1),
(self.removeButton, 0, 15, 1, 1),
(self.resubmitButton, 0, 13, 1, 1),
(self.rerunButton, 0, 14, 1, 1),
(self.purchaseRerunButton, 0, 15, 1, 1),
(self.removeButton, 0, 16, 1, 1),
)
self.commandLayout.setColumnStretch(6, 4)
self.commandLayout.setColumnStretch(9, 1)
@@ -619,6 +626,7 @@ class PDDTaskPage(QWidget):
self.taskModel.invert_loaded_task_checks
)
self.rerunButton.clicked.connect(self._request_rerun)
self.purchaseRerunButton.clicked.connect(self._request_purchase_rerun)
self.resubmitButton.clicked.connect(self._request_resubmit)
self.removeButton.clicked.connect(self._request_remove)
self.clearFiltersButton.clicked.connect(self.clear_filters)
@@ -636,7 +644,7 @@ class PDDTaskPage(QWidget):
def resizeEvent(self, event) -> None:
"""按内容区宽度切换顶部命令区的单行或双行布局。"""
self._update_command_layout(compact=event.size().width() < 1460)
self._update_command_layout(compact=event.size().width() < 1580)
super().resizeEvent(event)
def set_tasks(self, tasks: Iterable[TaskRow]) -> None:
@@ -750,8 +758,15 @@ class PDDTaskPage(QWidget):
if self._rerun_state != "idle":
return
task_ids = self.taskModel.checked_task_ids()
if len(task_ids) == 1:
self.rerunRequested.emit(task_ids[0])
if task_ids:
self.rerunRequested.emit(task_ids)
def _request_purchase_rerun(self) -> None:
if self._rerun_state != "idle":
return
task_ids = self.taskModel.checked_task_ids()
if task_ids:
self.purchaseRerunRequested.emit(task_ids)
def _request_resubmit(self) -> None:
if self._resubmit_running or self._remove_running:
@@ -773,6 +788,7 @@ class PDDTaskPage(QWidget):
self.rerunButton.setAccessibleName("停止当前重新采集")
self.rerunButton.setEnabled(True)
self.resubmitButton.setEnabled(False)
self.purchaseRerunButton.setEnabled(False)
self.removeButton.setEnabled(False)
self.selectAllButton.setEnabled(False)
self.invertSelectionButton.setEnabled(False)
@@ -783,21 +799,26 @@ class PDDTaskPage(QWidget):
self.rerunButton.setAccessibleName("正在停止重新采集")
self.rerunButton.setEnabled(False)
self.resubmitButton.setEnabled(False)
self.purchaseRerunButton.setEnabled(False)
self.removeButton.setEnabled(False)
self.selectAllButton.setEnabled(False)
self.invertSelectionButton.setEnabled(False)
self.autoFetchButton.setEnabled(False)
return
self.rerunButton.setText("重新执行")
self.rerunButton.setAccessibleName("重新执行当前选中的采集任务")
self.rerunButton.setText("重新采集")
self.rerunButton.setAccessibleName("重新采集勾选的采集任务")
self.purchaseRerunButton.setText("重新采购")
idle = not self._resubmit_running and not self._remove_running
has_tasks = self.taskModel.data_row_count() > 0
self.autoFetchButton.setEnabled(idle)
self.selectAllButton.setEnabled(idle and has_tasks)
self.invertSelectionButton.setEnabled(idle and has_tasks)
self.rerunButton.setEnabled(
idle and len(self.taskModel.checked_task_ids()) == 1
idle and bool(self.taskModel.checked_task_ids())
)
self.purchaseRerunButton.setEnabled(
idle and bool(self.taskModel.checked_task_ids())
)
self.resubmitButton.setEnabled(
idle and bool(self.taskModel.checked_task_ids())