feat(generate): filter tasks by product status

This commit is contained in:
chengma
2026-07-20 10:32:04 +08:00
parent 9852b1c9c1
commit fa101c16ce
4 changed files with 75 additions and 10 deletions
+16 -1
View File
@@ -1144,6 +1144,10 @@ class GenerateTab(QWidget):
self.status_filter.setObjectName("statusFilter")
for label, value in self.STATUS_FILTERS:
self.status_filter.addItem(label, value)
self.product_status_filter = QComboBox()
self.product_status_filter.setObjectName("generateProductStatusFilter")
for label, value in product_status.PRODUCT_STATUS_FILTER_ITEMS:
self.product_status_filter.addItem(label, value)
self.refresh_button = QPushButton("刷新")
self.open_image_dir_button = QPushButton("打开图片文件夹")
self.open_image_dir_button.setObjectName("openImageDirButton")
@@ -1158,7 +1162,9 @@ class GenerateTab(QWidget):
filter_layout.addWidget(self.shop_filter, 1)
filter_layout.addWidget(QLabel("商品ID"))
filter_layout.addWidget(self.item_filter, 1)
filter_layout.addWidget(QLabel("状态"))
filter_layout.addWidget(QLabel("商品状态"))
filter_layout.addWidget(self.product_status_filter, 1)
filter_layout.addWidget(QLabel("生成状态"))
filter_layout.addWidget(self.status_filter, 1)
filter_layout.addWidget(self.refresh_button)
filter_layout.addWidget(self.open_image_dir_button)
@@ -1240,6 +1246,7 @@ class GenerateTab(QWidget):
self.batch_filter.currentIndexChanged.connect(self.refresh_tasks)
self.shop_filter.currentIndexChanged.connect(self.refresh_tasks)
self.item_filter.textChanged.connect(self.refresh_tasks)
self.product_status_filter.currentIndexChanged.connect(self.refresh_tasks)
self.status_filter.currentIndexChanged.connect(self.refresh_tasks)
self.refresh_button.clicked.connect(self.refresh_tasks)
self.open_image_dir_button.clicked.connect(self.open_image_directory)
@@ -2103,6 +2110,7 @@ class GenerateTab(QWidget):
self.batch_filter.setEnabled(not running)
self.shop_filter.setEnabled(not running)
self.item_filter.setEnabled(not running)
self.product_status_filter.setEnabled(not running)
self.status_filter.setEnabled(not running)
self.title_template_combo.setEnabled(not running)
self.new_title_template_button.setEnabled(not running)
@@ -2411,6 +2419,7 @@ class GenerateTab(QWidget):
selected_batch = self.batch_filter.currentData()
selected_shop = self.shop_filter.currentData()
selected_status = self.status_filter.currentData() or "all"
selected_product_status = self.product_status_filter.currentData() or "all"
item_query = self.item_filter.text().strip()
self._populate_batch_filter(batches, selected_batch)
selected_batch = self.batch_filter.currentData()
@@ -2421,6 +2430,7 @@ class GenerateTab(QWidget):
task for task in batch_tasks
if self._matches_shop(task, selected_shop)
and self._matches_item(task, item_query)
and self._matches_product_status(task, selected_product_status)
and self._matches_status(task, selected_status)
]
except Exception as exc:
@@ -2524,6 +2534,11 @@ class GenerateTab(QWidget):
return True
return item_query in str(getattr(task, "item_id", ""))
def _matches_product_status(self, task, selected_product_status):
if selected_product_status in (None, "all"):
return True
return product_status.raw_status(getattr(task, "product_status", None)) == selected_product_status
def _matches_status(self, task, selected_status):
if selected_status in (None, "all"):
return True