瀏覽代碼

feat: document page

chenlei 1 年之前
父節點
當前提交
02fb66d461
共有 3 個文件被更改,包括 67 次插入0 次删除
  1. 1 0
      src/app.config.ts
  2. 3 0
      src/subModule/pages/document/index.config.ts
  3. 63 0
      src/subModule/pages/document/index.tsx

+ 1 - 0
src/app.config.ts

@@ -16,6 +16,7 @@ export default defineAppConfig({
         "pages/portrait-iframe/index",
         "pages/portrait-iframe/index",
         "pages/museum/index",
         "pages/museum/index",
         "pages/protocol/index",
         "pages/protocol/index",
+        "pages/document/index",
       ],
       ],
     },
     },
   ],
   ],

+ 3 - 0
src/subModule/pages/document/index.config.ts

@@ -0,0 +1,3 @@
+export default definePageConfig({
+  navigationBarTitleText: "文档",
+});

+ 63 - 0
src/subModule/pages/document/index.tsx

@@ -0,0 +1,63 @@
+import Taro, { FC, useDidHide, useDidShow, useRouter } from "@tarojs/taro";
+import { useEffect, useRef } from "react";
+
+const DocumentPage: FC = () => {
+  const route = useRouter();
+  const goBack = useRef(false);
+
+  useEffect(() => {
+    if (!route.params.url) {
+      Taro.showToast({
+        title: "请传入url",
+        icon: "error",
+        duration: 3000,
+      });
+      return;
+    }
+
+    Taro.showLoading({
+      title: "加载中",
+    });
+
+    Taro.downloadFile({
+      url: decodeURIComponent(route.params.url),
+      success(res) {
+        Taro.openDocument({
+          filePath: res.tempFilePath,
+          // @ts-ignore
+          fileType: route.params.fileType || "pdf",
+          showMenu: true,
+          success() {
+            Taro.hideLoading();
+          },
+          fail(res) {
+            Taro.showToast({
+              title: res.errMsg,
+              icon: "none",
+              duration: 3000,
+            });
+          },
+        });
+      },
+      fail(res) {
+        Taro.showToast({
+          title: res.errMsg,
+          icon: "none",
+          duration: 3000,
+        });
+      },
+    });
+  }, []);
+
+  useDidShow(() => {
+    goBack.current && Taro.navigateBack();
+  });
+
+  useDidHide(() => {
+    goBack.current = true;
+  });
+
+  return null;
+};
+
+export default DocumentPage;