diff --git a/src/pages/product/ProductStockDetail.vue b/src/pages/product/ProductStockDetail.vue
index 1b3fc91..79ce173 100644
--- a/src/pages/product/ProductStockDetail.vue
+++ b/src/pages/product/ProductStockDetail.vue
@@ -36,6 +36,7 @@
+
{
}
}
+async function openReservedRecordList(): Promise {
+ if (product.value?.id) {
+ await router.push({
+ name: "ProductStockRecordList",
+ query: {
+ productId: product.value.id,
+ operationType: "ORDER_RESERVE",
+ activeReservationOnly: "true",
+ transitionDepth: String(getCurrentRouteDepth() + 1)
+ }
+ });
+ }
+}
+
function getCurrentRouteDepth(): number {
const transitionDepth = Array.isArray(route.query.transitionDepth)
? route.query.transitionDepth[0]
diff --git a/src/pages/product/ProductStockRecordList.vue b/src/pages/product/ProductStockRecordList.vue
index 959b19f..5a1ca8e 100644
--- a/src/pages/product/ProductStockRecordList.vue
+++ b/src/pages/product/ProductStockRecordList.vue
@@ -93,15 +93,20 @@ const loading = ref(false);
const isRefreshing = ref(false);
const noMore = ref(false);
const productId = computed(() => getQueryText("productId"));
-const operationType = ref(getQueryText("operationType") as OperationFilter || "ALL");
+const activeReservationRequested = getQueryText("activeReservationOnly") === "true";
+const operationType = ref(getQueryText("operationType") as OperationFilter || (activeReservationRequested ? "ORDER_RESERVE" : "ALL"));
const direction = ref(getQueryText("direction") as DirectionFilter || "ALL");
const keyword = ref(getQueryText("keyword"));
+const activeReservationOnly = computed(() => activeReservationRequested && operationType.value === "ORDER_RESERVE");
let keywordTimer: number | undefined;
let requestToken = 0;
const emptyText = computed(() => {
if (loading.value) {
return "正在加载库存流水";
}
+ if (activeReservationOnly.value) {
+ return "暂无有效的预占流水";
+ }
return keyword.value.trim() || productId.value || operationType.value !== "ALL" || direction.value !== "ALL" ? "未找到匹配的库存流水" : "暂无库存流水";
});
const loadStateText = computed(() => loading.value ? "正在加载" : noMore.value ? "已经到底了" : "上拉加载更多");
@@ -195,6 +200,7 @@ async function loadMore(force = false): Promise {
productId: productId.value || undefined,
keyword: keyword.value.trim() || undefined,
operationType: operationType.value === "ALL" ? undefined : operationType.value,
+ activeReservationOnly: activeReservationOnly.value || undefined,
direction: direction.value === "ALL" ? undefined : direction.value,
index: pageIndex.value,
size: pageSize
diff --git a/src/types/Product.ts b/src/types/Product.ts
index 1cbbc52..869e568 100644
--- a/src/types/Product.ts
+++ b/src/types/Product.ts
@@ -126,6 +126,7 @@ export type StockRecordPage = {
bizType?: StockBizType;
bizId?: string;
operationType?: StockOperationType;
+ activeReservationOnly?: boolean;
direction?: StockRecordDirection;
beginAt?: number;
endAt?: number;