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

只有title的时候不显示链接

visuddhinanda 2 лет назад
Родитель
Сommit
f3723a3241
1 измененных файлов с 41 добавлено и 19 удалено
  1. 41 19
      dashboard/src/components/template/QuoteLink.tsx

+ 41 - 19
dashboard/src/components/template/QuoteLink.tsx

@@ -1,11 +1,14 @@
-import { bookName as _bookName } from "../fts/book_name";
+import { Typography } from "antd";
+
 import { ArticleCtl, TDisplayStyle } from "./Article";
 import { IWidgetTermCtl, TermCtl } from "./Term";
+import { useEffect, useState } from "react";
+
+const { Text } = Typography;
 
 interface IWidgetQuoteLinkCtl {
   type: string;
   bookName: string;
-  bookNameLocal?: string;
   volume: string;
   page: string;
   style: TDisplayStyle;
@@ -17,7 +20,6 @@ interface IWidgetQuoteLinkCtl {
 const QuoteLinkCtl = ({
   type,
   bookName,
-  bookNameLocal,
   volume,
   page,
   style,
@@ -26,26 +28,46 @@ const QuoteLinkCtl = ({
   term,
   title,
 }: IWidgetQuoteLinkCtl) => {
+  const [validPage, setValidPage] = useState(false);
+  const [tpl, setTpl] = useState<string>();
   let textShow = ` ${volume}.${page}`;
 
+  useEffect(() => {
+    if (type && bookName && volume && page) {
+      setValidPage(true);
+      setTpl(
+        `{{ql|type=${type}|bookname=${bookName}|volume=${volume}|page=${page}}}`
+      );
+    }
+  }, [bookName, page, type, volume]);
+
   return (
     <>
-      <ArticleCtl
-        title={
-          title ? (
-            title
-          ) : (
-            <>
-              <TermCtl {...term} compact={true} />
-              {textShow}
-            </>
-          )
-        }
-        type={"page"}
-        focus={book && para ? `${book}-${para}` : undefined}
-        id={`${type}_${bookName}_${volume}_${page}`}
-        style={style}
-      />
+      {validPage ? (
+        <ArticleCtl
+          title={
+            title ? (
+              title
+            ) : (
+              <>
+                <TermCtl {...term} compact={true} />
+                {textShow}
+              </>
+            )
+          }
+          type={"page"}
+          focus={book && para ? `${book}-${para}` : undefined}
+          id={`${type}_${bookName}_${volume}_${page}`}
+          style={style}
+          modalExtra={
+            <Text style={{ marginRight: 8 }} copyable={{ text: tpl }}>
+              复制模版
+            </Text>
+          }
+        />
+      ) : (
+        <Text>{title}</Text>
+      )}
     </>
   );
 };