快乐的梦鱼 před 1 měsícem
rodič
revize
5c4f785e57
2 změnil soubory, kde provedl 9 přidání a 6 odebrání
  1. 7 5
      src/components/NavBar.vue
  2. 2 1
      src/pages/channel/[id].vue

+ 7 - 5
src/components/NavBar.vue

@@ -35,22 +35,24 @@ const route = useRoute();
 const navItems = await useSSrSimpleDataLoader('navItems', async () => {
   const data = (await $fetch('/api/channel/nav')).data || [];
 
+  const specialPages = [] as any[];
   // 政策法规 特殊页
   const lawsPage = data.find(item => item.name === '政策法规');
   if (lawsPage) {
-    lawsPage.type = 'link';
-    lawsPage.outlink = '/channel/laws/?id=' + lawsPage.id;
+    lawsPage.url = '/channel/laws/?id=' + lawsPage.id;
   }
   const contactPage = data.find(item => item.name === '联系我们');
   if (contactPage) {
-    contactPage.type = 'link';
-    contactPage.outlink = '/about';
+    contactPage.url = '/about';
   }
+  specialPages.push(lawsPage, contactPage);
 
   return data.map(item => {
+    const isSpeical = (specialPages.includes(item));
     return {
       ...item,
-      url: item.type === 'list' ? `/channel/${item.id}` : item.outlink,
+      url: isSpeical ? item.url : 
+        (item.type === 'list' ? `/channel/${item.id}` : item.outlink),
     }
   });
 });

+ 2 - 1
src/pages/channel/[id].vue

@@ -34,7 +34,8 @@
                 </div>
                 <ul class="sidebar-menu">
                   <li v-for="(item, key) in channelData.content.value?.childs" :key="key">
-                    <router-link :to="`/channel/${item.id}`" :class="{ 'active': item.id == channelId }">
+                    <a v-if="item.type === 'link'" :href="item.outlink" target="_blank">{{ item.name }}</a>
+                    <router-link v-else :to="`/channel/${item.id}`" :class="{ 'active': item.id == channelId }">
                       {{ item.name }}
                       <Icon name="material-symbols-light:chevron-right" />
                     </router-link>