feat: 展示PDD商品和采购订单信息 (#164)
This commit is contained in:
+54
-24
@@ -56,6 +56,18 @@ from qfluentwidgets import (
|
||||
|
||||
PAGE_SIZE = 50
|
||||
CHECK_COLUMN = 0
|
||||
TASK_TYPE_COLUMN = 1
|
||||
GOODS_ID_COLUMN = 2
|
||||
TITLE_COLUMN = 3
|
||||
SHOP_COLUMN = 4
|
||||
COLOR_COLUMN = 5
|
||||
SIZE_COLUMN = 6
|
||||
PRICE_COLUMN = 7
|
||||
QUANTITY_COLUMN = 8
|
||||
STATUS_COLUMN = 9
|
||||
ORDER_NO_COLUMN = 10
|
||||
DURATION_COLUMN = 11
|
||||
UPDATED_AT_COLUMN = 12
|
||||
REMOTE_TASK_ID_ROLE = Qt.UserRole + 1
|
||||
|
||||
|
||||
@@ -76,6 +88,7 @@ class TaskRow:
|
||||
status: str = "待执行"
|
||||
latest_run_status: str = ""
|
||||
duration_seconds: Optional[int] = None
|
||||
order_no: str = ""
|
||||
updated_at: str = ""
|
||||
|
||||
|
||||
@@ -88,6 +101,7 @@ class TaskTableModel(QAbstractTableModel):
|
||||
HEADERS = (
|
||||
"选择",
|
||||
"任务类型",
|
||||
"PDD商品ID",
|
||||
"商品标题",
|
||||
"店铺名",
|
||||
"颜色",
|
||||
@@ -95,6 +109,7 @@ class TaskTableModel(QAbstractTableModel):
|
||||
"价格",
|
||||
"数量",
|
||||
"状态",
|
||||
"订单号",
|
||||
"用时",
|
||||
"更新时间",
|
||||
)
|
||||
@@ -138,15 +153,24 @@ class TaskTableModel(QAbstractTableModel):
|
||||
return self._display_value(task, column)
|
||||
|
||||
if role == Qt.TextAlignmentRole:
|
||||
if column in (0, 1, 8, 9):
|
||||
if column in (
|
||||
CHECK_COLUMN,
|
||||
TASK_TYPE_COLUMN,
|
||||
STATUS_COLUMN,
|
||||
DURATION_COLUMN,
|
||||
):
|
||||
return Qt.AlignCenter
|
||||
if column in (6, 7):
|
||||
if column in (PRICE_COLUMN, QUANTITY_COLUMN):
|
||||
return Qt.AlignRight | Qt.AlignVCenter
|
||||
return Qt.AlignLeft | Qt.AlignVCenter
|
||||
|
||||
if role == Qt.ToolTipRole:
|
||||
if column == 2:
|
||||
if column == GOODS_ID_COLUMN:
|
||||
return task.goods_id or "尚无PDD商品ID"
|
||||
if column == TITLE_COLUMN:
|
||||
return task.title or "尚未获取标题"
|
||||
if column == ORDER_NO_COLUMN:
|
||||
return task.order_no or "尚无订单号"
|
||||
|
||||
if role == REMOTE_TASK_ID_ROLE:
|
||||
return task.remote_task_id
|
||||
@@ -367,32 +391,36 @@ class TaskTableModel(QAbstractTableModel):
|
||||
def _display_value(task: TaskRow, column: int) -> str:
|
||||
if column == CHECK_COLUMN:
|
||||
return ""
|
||||
if column == 1:
|
||||
if column == TASK_TYPE_COLUMN:
|
||||
return task.task_type
|
||||
if column == 2:
|
||||
if column == GOODS_ID_COLUMN:
|
||||
return task.goods_id or "—"
|
||||
if column == TITLE_COLUMN:
|
||||
return task.title or "尚未获取标题"
|
||||
if column == 3:
|
||||
if column == SHOP_COLUMN:
|
||||
return task.shop_name or "—"
|
||||
if column == 4:
|
||||
if column == COLOR_COLUMN:
|
||||
return task.color or "—"
|
||||
if column == 5:
|
||||
if column == SIZE_COLUMN:
|
||||
return task.size or "—"
|
||||
if column == 6:
|
||||
if column == PRICE_COLUMN:
|
||||
if task.price_cents is None:
|
||||
return "—"
|
||||
suffix = " 起" if task.price_is_starting else ""
|
||||
return f"¥{task.price_cents / 100:.2f}{suffix}"
|
||||
if column == 7:
|
||||
if column == QUANTITY_COLUMN:
|
||||
return "—" if task.quantity is None else str(task.quantity)
|
||||
if column == 8:
|
||||
if column == STATUS_COLUMN:
|
||||
return task.status
|
||||
if column == 9:
|
||||
if column == ORDER_NO_COLUMN:
|
||||
return task.order_no or "—"
|
||||
if column == DURATION_COLUMN:
|
||||
if task.latest_run_status == "running":
|
||||
return "进行中"
|
||||
if task.duration_seconds is None:
|
||||
return "—"
|
||||
return f"{max(0, task.duration_seconds)} 秒"
|
||||
if column == 10:
|
||||
if column == UPDATED_AT_COLUMN:
|
||||
return task.updated_at or "—"
|
||||
return ""
|
||||
|
||||
@@ -575,18 +603,20 @@ class PDDTaskPage(QWidget):
|
||||
|
||||
header = self.taskTable.horizontalHeader()
|
||||
header.setSectionResizeMode(QHeaderView.Interactive)
|
||||
header.setSectionResizeMode(2, QHeaderView.Stretch)
|
||||
header.setSectionResizeMode(TITLE_COLUMN, QHeaderView.Stretch)
|
||||
header.setMinimumSectionSize(64)
|
||||
self.taskTable.setColumnWidth(0, 64)
|
||||
self.taskTable.setColumnWidth(1, 82)
|
||||
self.taskTable.setColumnWidth(3, 108)
|
||||
self.taskTable.setColumnWidth(4, 108)
|
||||
self.taskTable.setColumnWidth(5, 82)
|
||||
self.taskTable.setColumnWidth(6, 96)
|
||||
self.taskTable.setColumnWidth(7, 70)
|
||||
self.taskTable.setColumnWidth(8, 116)
|
||||
self.taskTable.setColumnWidth(9, 82)
|
||||
self.taskTable.setColumnWidth(10, 156)
|
||||
self.taskTable.setColumnWidth(CHECK_COLUMN, 64)
|
||||
self.taskTable.setColumnWidth(TASK_TYPE_COLUMN, 82)
|
||||
self.taskTable.setColumnWidth(GOODS_ID_COLUMN, 135)
|
||||
self.taskTable.setColumnWidth(SHOP_COLUMN, 108)
|
||||
self.taskTable.setColumnWidth(COLOR_COLUMN, 108)
|
||||
self.taskTable.setColumnWidth(SIZE_COLUMN, 82)
|
||||
self.taskTable.setColumnWidth(PRICE_COLUMN, 96)
|
||||
self.taskTable.setColumnWidth(QUANTITY_COLUMN, 70)
|
||||
self.taskTable.setColumnWidth(STATUS_COLUMN, 116)
|
||||
self.taskTable.setColumnWidth(ORDER_NO_COLUMN, 190)
|
||||
self.taskTable.setColumnWidth(DURATION_COLUMN, 82)
|
||||
self.taskTable.setColumnWidth(UPDATED_AT_COLUMN, 156)
|
||||
self.taskTable.viewport().installEventFilter(self)
|
||||
|
||||
self.emptyStateCard = CardWidget(self)
|
||||
|
||||
Reference in New Issue
Block a user