From cd00fadea33503749ea4244a166df87231022af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com> Date: Fri, 26 Dec 2025 17:03:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components.d.ts | 2 + frontend/public/default.png | Bin 0 -> 10042 bytes frontend/src/api/search.ts | 16 + frontend/src/assets/less/global.less | 3 + frontend/src/router/index.ts | 5 + .../src/views/components/ResourceList.vue | 15 +- .../src/views/components/detail_article.vue | 14 +- .../src/views/components/detail_resource.vue | 34 +- frontend/src/views/components/footer.vue | 61 +++- frontend/src/views/components/header.vue | 203 ++++++++--- frontend/src/views/components/search.vue | 332 ++++++++++++++++++ 11 files changed, 624 insertions(+), 61 deletions(-) create mode 100644 frontend/public/default.png create mode 100644 frontend/src/api/search.ts create mode 100644 frontend/src/views/components/search.vue diff --git a/frontend/components.d.ts b/frontend/components.d.ts index f3d4178..7409d23 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -22,7 +22,9 @@ declare module 'vue' { ElEmpty: typeof import('element-plus/es')['ElEmpty'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] + ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] + ElSelect: typeof import('element-plus/es')['ElSelect'] ElTag: typeof import('element-plus/es')['ElTag'] HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/frontend/public/default.png b/frontend/public/default.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e4af02c6a2f4e0a9277b5e4aa06672530c3b21 GIT binary patch literal 10042 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 import("@/views/downloadGames/index.vue"), }, + { + path: "/search", + name: "search", + component: () => import("@/views/components/search.vue"), + }, ], }); diff --git a/frontend/src/views/components/ResourceList.vue b/frontend/src/views/components/ResourceList.vue index 2250620..872e957 100644 --- a/frontend/src/views/components/ResourceList.vue +++ b/frontend/src/views/components/ResourceList.vue @@ -81,7 +81,11 @@ @@ -537,6 +544,11 @@ onMounted(() => { justify-content: space-between; margin: 30px 0; + .prev, + .next { + width: 50%; + } + a { color: #333; } diff --git a/frontend/src/views/components/detail_resource.vue b/frontend/src/views/components/detail_resource.vue index b49200c..5848dbc 100644 --- a/frontend/src/views/components/detail_resource.vue +++ b/frontend/src/views/components/detail_resource.vue @@ -5,6 +5,7 @@ import { ElMessage } from "element-plus"; import Header from "@/views/components/header.vue"; import Footer from "@/views/components/footer.vue"; import { resource as resourceApi } from "@/api/resource"; +import defaultImage from "@/assets/imgs/default.png"; const route = useRoute(); const router = useRouter(); // 新增:引入useRouter @@ -27,7 +28,9 @@ const pageInfo = computed(() => ({ // 获取图片地址 const getImageUrl = (imagePath: string) => { - if (!imagePath) return "/src/assets/imgs/default.png"; + if (!imagePath) { + return defaultImage; + } return import.meta.env.VITE_API_DOMAIN + imagePath; }; @@ -158,14 +161,12 @@ const fetchResourceDetail = async () => { try { const response: any = await resourceApi.getResourceDetail(resourceId.value); - - console.log("获取资源详情响应:", response); - if (response?.data?.code === 0 && response?.data?.data) { - resourceData.value = response.data.data.resource; + if (response.data.code === 0) { + resourceData.value = response.data.data; + console.log(resourceData.value); prevResource.value = response.data.data.prev_resource; nextResource.value = response.data.data.next_resource; relatedResources.value = response.data.data.related_resources || []; - console.log("资源数据加载完成:", resourceData.value?.title); } else { console.error("API响应格式错误:", response); ElMessage.error("获取资源详情失败:数据格式错误"); @@ -196,8 +197,6 @@ watch( ); onMounted(() => { - // 移除原有的fetchResourceDetail调用,由watch接管 - // 页面加载时滚动到顶部 window.scrollTo(0, 0); }); @@ -217,9 +216,7 @@ onMounted(() => { 首页 - {{ - pageInfo.name - }} + {{ resourceData.cate }} 详情 @@ -332,6 +329,11 @@ onMounted(() => { @click="handleContentClick" > +
+ -------- THE END -------- +
+ +
免责声明:
@@ -519,7 +521,7 @@ onMounted(() => { .top-content { width: 100%; height: 400px; - background-color: #0081ff; + background-color: var(--primary-color); position: relative; .top-content-main { @@ -611,10 +613,10 @@ onMounted(() => { } .value { - border: 1px #0d6efd dashed; + border: 1px var(--primary-color) dashed; padding: 3px 6px; font-size: 13px; - background-color: #0081ff12; + background-color: var(--primary-light-bg); border-radius: 5px; } } @@ -626,11 +628,11 @@ onMounted(() => { align-items: center; .codebtn { - color: #0d6efd; + color: var(--primary-color); margin-left: 20px; padding: 6px 20px; border-radius: 8px; - border: 1px solid #0d6efd; + border: 1px solid var(--primary-color); cursor: pointer; transition: all 0.3s ease; background-color: #fff; diff --git a/frontend/src/views/components/footer.vue b/frontend/src/views/components/footer.vue index 2f70c48..c5b2df3 100644 --- a/frontend/src/views/components/footer.vue +++ b/frontend/src/views/components/footer.vue @@ -1,4 +1,13 @@ diff --git a/frontend/src/views/components/header.vue b/frontend/src/views/components/header.vue index 6307c2d..2ef9a96 100644 --- a/frontend/src/views/components/header.vue +++ b/frontend/src/views/components/header.vue @@ -1,12 +1,22 @@ + + + +