feat(apply): filter updates by product status
This commit is contained in:
+22
-2
@@ -64,6 +64,10 @@ class ApplyTab(QWidget):
|
||||
self.status_filter.setObjectName("applyStatusFilter")
|
||||
for label, value in self.STATUS_FILTERS:
|
||||
self.status_filter.addItem(label, value)
|
||||
self.product_status_filter = QComboBox()
|
||||
self.product_status_filter.setObjectName("applyProductStatusFilter")
|
||||
for label, value in product_status.PRODUCT_STATUS_FILTER_ITEMS:
|
||||
self.product_status_filter.addItem(label, value)
|
||||
self.refresh_button = QPushButton("刷新")
|
||||
|
||||
filter_layout = QHBoxLayout()
|
||||
@@ -73,7 +77,9 @@ class ApplyTab(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)
|
||||
|
||||
@@ -152,6 +158,7 @@ class ApplyTab(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.preview_update_button.clicked.connect(self.preview_update)
|
||||
@@ -176,6 +183,7 @@ class ApplyTab(QWidget):
|
||||
selected_batch = self.batch_filter.currentData()
|
||||
selected_shop = self.shop_filter.currentData()
|
||||
selected_status = self.status_filter.currentData() or "generated"
|
||||
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()
|
||||
@@ -190,6 +198,7 @@ class ApplyTab(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:
|
||||
@@ -494,6 +503,9 @@ class ApplyTab(QWidget):
|
||||
def _item_filter_label(self):
|
||||
return self.item_filter.text().strip() or "全部商品"
|
||||
|
||||
def _product_status_filter_label(self):
|
||||
return self.product_status_filter.currentText() or "全部商品状态"
|
||||
|
||||
def _is_update_task(self, task):
|
||||
if task.stage in {"generated", "applied"}:
|
||||
return True
|
||||
@@ -507,6 +519,11 @@ class ApplyTab(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
|
||||
@@ -548,7 +565,8 @@ class ApplyTab(QWidget):
|
||||
+ f"批次:{self._batch_filter_label()}\n"
|
||||
+ f"店铺:{self._shop_filter_label()}\n"
|
||||
+ f"商品ID:{self._item_filter_label()}\n"
|
||||
+ f"状态:{self._status_label()}\n"
|
||||
+ f"商品状态:{self._product_status_filter_label()}\n"
|
||||
+ f"更新状态:{self._status_label()}\n"
|
||||
+ f"更新内容:{update_mode_text}\n"
|
||||
+ f"任务数:{len(tasks)}\n"
|
||||
+ f"预计批次:{batch_count}\n"
|
||||
@@ -760,6 +778,7 @@ class ApplyTab(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.update_mode_combo.setEnabled(not running)
|
||||
self._update_write_back_button()
|
||||
@@ -772,6 +791,7 @@ class ApplyTab(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.update_mode_combo.setEnabled(not running)
|
||||
self.write_back_button.setEnabled(False if running else bool(self._active_batch_ids()))
|
||||
|
||||
Reference in New Issue
Block a user