Просмотр исходного кода

fix(dashboard-v6): fetchPageNav 按页码类型匹配对应书名标题字段

M→m_title / P→p_title / V→v_title,其余退回 term,与后端 pageInfoByPara 保持一致
visuddhinanda 2 недель назад
Родитель
Сommit
b59e17fc6b
1 измененных файлов с 18 добавлено и 7 удалено
  1. 18 7
      dashboard-v6/src/api/article.ts

+ 18 - 7
dashboard-v6/src/api/article.ts

@@ -578,22 +578,33 @@ export async function articleLoader({ params }: LoaderFunctionArgs) {
 /**
 /**
  * 页码导航
  * 页码导航
  *
  *
- * pageId 形如 `M-dīghanikāya-2-10`(页码类型_书名_卷号_页码),
- * 内部通过 bookName 表把书名 term 反查为 book id 后请求
- * GET /api/v2/nav-page/{TYPE}-{booksId}-{volume}-{page}
+ * pageId 形如 `M-dīghanikāya-2-10`(页码类型_书名_卷号_页码)。
+ * 书名(第 2 段)需按页码类型对应不同版本的书名标题字段反查 book id:
+ * M 缅文版 → m_title,P PTS版 → p_title,V 内观研究所版 → v_title,
+ * 其余类型退回 term(与后端 pageInfoByPara 的映射保持一致),
+ * 之后请求 GET /api/v2/nav-page/{TYPE}-{booksId}-{volume}-{page}。
  */
  */
 export const fetchPageNav = (pageId: string): Promise<IPageNavResponse> => {
 export const fetchPageNav = (pageId: string): Promise<IPageNavResponse> => {
   const pageParam = pageId.split("_");
   const pageParam = pageId.split("_");
   if (pageParam.length < 4) {
   if (pageParam.length < 4) {
     return Promise.reject(new Error(`invalid page id: ${pageId}`));
     return Promise.reject(new Error(`invalid page id: ${pageId}`));
   }
   }
+  const type = pageParam[0].toUpperCase();
+  const titleField: "term" | "m_title" | "p_title" | "v_title" =
+    type === "M"
+      ? "m_title"
+      : type === "P"
+        ? "p_title"
+        : type === "V"
+          ? "v_title"
+          : "term";
   const booksId = bookName
   const booksId = bookName
-    .filter((value) => value.term === pageParam[1])
+    .filter((value) => value[titleField] === pageParam[1])
     .map((item) => item.id)
     .map((item) => item.id)
     .join("_");
     .join("_");
-  const url = `/api/v2/nav-page/${pageParam[0].toUpperCase()}-${booksId}-${
-    pageParam[2]
-  }-${pageParam[3]}`;
+  const url = `/api/v2/nav-page/${type}-${booksId}-${pageParam[2]}-${
+    pageParam[3]
+  }`;
   return get<IPageNavResponse>(url);
   return get<IPageNavResponse>(url);
 };
 };