Browse Source

文档详情

唐钦 3 years ago
parent
commit
b2490d07e6

+ 13 - 13
src/services/doc.service.ts

@@ -1,13 +1,13 @@
-import type { Doc } from "@/types/doc.types";
-import type { Response } from "@/types/response.types";
-import type { AxiosResponse } from "axios";
-import httpClient from "./httpClient";
-
-/**
- * 根据文档ID查询文档详情
- * @param id 文档ID
- * @returns axios响应
- */
-export function fetch(id: number): Promise<AxiosResponse<Response<Doc>>> {
-  return httpClient.get<Response<Doc>>(`/doc/${id}`);
-}
+import type { Doc } from "@/types/doc.types";
+import type { Response } from "@/types/response.types";
+import type { AxiosResponse } from "axios";
+import httpClient from "./httpClient";
+
+/**
+ * 根据文档ID查询文档详情
+ * @param id 文档ID
+ * @returns axios响应
+ */
+export function fetch(id: Object): Promise<AxiosResponse<Response<Doc>>> {
+  return httpClient.get<Response<Doc>>("/gw/search/document/CN/" + id);
+}

+ 6 - 6
src/services/search.service.ts

@@ -1,13 +1,13 @@
-import type { SearchResult } from "@/types/search.types";
-import type { Response } from "@/types/response.types";
-import type { AxiosResponse } from "axios";
+import type {SearchResult} from "@/types/search.types";
+import type {Response} from "@/types/response.types";
+import type {AxiosResponse} from "axios";
 import httpClient from "./httpClient";
 
 function search(query: Object): Promise<AxiosResponse<Response<SearchResult>>> {
-  // const params = { query };
-  return httpClient.post("/gw/search/search", query);
+    // const params = { query };
+    return httpClient.post("/gw/search/search", query);
 }
 
 export default {
-  search,
+    search
 }

+ 21 - 21
src/stores/doc-detail.ts

@@ -1,21 +1,21 @@
-import type { Doc } from "@/types/doc.types";
-import type { Response } from "@/types/response.types";
-import { defineStore } from "pinia";
-import { ref, type Ref } from "vue";
-import * as docService from "@/services/doc.service";
-import type { AxiosResponse } from "axios";
-
-export const useDocDetailStore = defineStore("docDetail", () => {
-  const doc: Ref<Doc | null> = ref(null);
-
-  function fetch(id: number) {
-    return docService.fetch(id).then((resp: AxiosResponse<Response<Doc>>) => {
-      doc.value = resp.data.data;
-    });
-  }
-
-  return {
-    doc,
-    fetch,
-  }
-});
+import type { Doc } from "@/types/doc.types";
+import type { Response } from "@/types/response.types";
+import { defineStore } from "pinia";
+import { ref, type Ref } from "vue";
+import * as docService from "@/services/doc.service";
+import type { AxiosResponse } from "axios";
+
+export const useDocDetailStore = defineStore("docDetail", () => {
+  const doc: Ref<Doc | null> = ref(null);
+
+  function fetch(id: Object) {
+    return docService.fetch(id).then((resp: AxiosResponse<Response<Doc>>) => {
+      doc.value = resp.data.data;
+    });
+  }
+
+  return {
+    doc,
+    fetch,
+  }
+});

+ 50 - 49
src/views/detail/DetailView.vue

@@ -1,49 +1,50 @@
-<script setup lang="ts">
-import { useDocDetailStore } from '@/stores/doc-detail';
-import { useSideBarStore } from '@/stores/side-bar';
-import { onMounted, onUnmounted, computed } from 'vue';
-import { useRoute } from 'vue-router';
-import DocCatalog from './components/DocCatalog.vue';
-
-// 当前路由
-const route = useRoute();
-// 左侧边栏状态
-const sideBarStore = useSideBarStore();
-// 文档详情
-const docDetailStore = useDocDetailStore();
-
-const doc = computed(() => docDetailStore.doc);
-
-onMounted(() => {
-  // 收起左侧边栏
-  sideBarStore.setCollapse(true);
-  // 查询文档详情内容
-  const id = parseInt(route.params.id as string);
-  if (id > 0) {
-    docDetailStore.fetch(id);
-  }
-});
-
-onUnmounted(() => {
-  sideBarStore.setCollapse(false);
-});
-
-</script>
-
-<template>
-  <a-row type="flex" :gutter="24">
-    <a-col :span="4">
-      <h2>目录</h2>
-      <DocCatalog></DocCatalog>
-    </a-col>
-    <a-col :span="20">
-      <div v-if="doc" class="doc-wrap">
-        <h2 class="title">{{ doc.title }}</h2>
-        <p>文档详情</p>
-      </div>
-      <div v-else>
-        <a-empty />
-      </div>
-    </a-col>
-  </a-row>
-</template>
+<script setup lang="ts">
+import { useDocDetailStore } from '@/stores/doc-detail';
+import { useSideBarStore } from '@/stores/side-bar';
+import { onMounted, onUnmounted, computed } from 'vue';
+import { useRoute } from 'vue-router';
+import searchService from "@/services/search.service";
+import DocCatalog from './components/DocCatalog.vue';
+
+// 当前路由
+const route = useRoute();
+// 左侧边栏状态
+const sideBarStore = useSideBarStore();
+// 文档详情
+const docDetailStore = useDocDetailStore();
+
+const doc = computed(() => docDetailStore.doc);
+
+onMounted(() => {
+  // 收起左侧边栏
+  sideBarStore.setCollapse(true);
+  // 查询文档详情内容
+  const id = route.params.id;
+  if (id) {
+    docDetailStore.fetch(id);
+  }
+});
+
+onUnmounted(() => {
+  sideBarStore.setCollapse(false);
+});
+
+</script>
+
+<template>
+  <a-row type="flex" :gutter="24">
+    <a-col :span="4">
+      <h2>目录</h2>
+      <DocCatalog></DocCatalog>
+    </a-col>
+    <a-col :span="20">
+      <div v-if="doc" class="doc-wrap">
+        <h2 class="title">{{ doc.title }}</h2>
+        <p>文档详情</p>
+      </div>
+      <div v-else>
+        <a-empty />
+      </div>
+    </a-col>
+  </a-row>
+</template>

+ 1 - 1
src/views/search/components/SearchResultItem.vue

@@ -13,7 +13,7 @@ defineProps({
 <template>
   <div class="item">
     <h1>
-      <RouterLink :to="'/detail/' + data.id" target="_blank">
+      <RouterLink :to="'/detail/' + data._id" target="_blank">
         {{ data.title }}
       </RouterLink>
     </h1>