Explorar o código

完善路由

完善路由
dangyunlong hai 2 semanas
pai
achega
e7380be8e3

+ 1 - 1
.nuxt/manifest/latest.json

@@ -1 +1 @@
-{"id":"dev","timestamp":1743418904456}
+{"id":"dev","timestamp":1743483804980}

+ 1 - 1
.nuxt/manifest/meta/dev.json

@@ -1 +1 @@
-{"id":"dev","timestamp":1743418904456,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
+{"id":"dev","timestamp":1743483804980,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 3 - 3
.nuxt/nitro.json

@@ -1,5 +1,5 @@
 {
-  "date": "2025-03-31T11:01:47.107Z",
+  "date": "2025-04-01T05:03:33.085Z",
   "preset": "nitro-dev",
   "framework": {
     "name": "nuxt",
@@ -9,9 +9,9 @@
     "nitro": "2.10.4"
   },
   "dev": {
-    "pid": 18296,
+    "pid": 11552,
     "workerAddress": {
-      "socketPath": "\\\\.\\pipe\\nitro\\worker-18296-1.sock"
+      "socketPath": "\\\\.\\pipe\\nitro\\worker-11552-1.sock"
     }
   }
 }

+ 1 - 1
assets/css/index.less

@@ -2230,7 +2230,7 @@
         }
     }
     .title {
-        height: 46px;
+        height: 45px;
         display: -webkit-box;
         -webkit-box-orient: vertical;
         -webkit-line-clamp: 2;

+ 1 - 1
components/detail/HotNews.vue

@@ -9,7 +9,7 @@
             <li v-for="(item, index) in hotNewsList">
                 <span>{{ index + 1 }}</span>
                 <NuxtLink :to="item.linkurl" v-show="item.islink == 1" :title="item.title">{{ item.title }}</NuxtLink>
-                <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink == 0" :title="item.title">{{ item.title }}
+                <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`" v-if="item.islink == 0" :title="item.title">{{ item.title }}
                 </NuxtLink>
             </li>
         </ul>

+ 1 - 1
components/detail/HotNews2.vue

@@ -11,7 +11,7 @@
                 <img class="hotNewsImg" :src="item.imgurl">
                 <p>{{ item.title }}</p>
             </NuxtLink>
-            <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink == 0" :title="item.title">
+            <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`" v-if="item.islink == 0" :title="item.title">
                 <img class="hotNewsImg" :src="item.imgurl">
                 <p>{{ item.title }}</p>
             </NuxtLink>

+ 1 - 1
components/home/BigSwiper.vue

@@ -3,7 +3,7 @@
         <el-carousel :interval="5000" arrow="always" height="405px" indicator-class="custom-indicator"
             class="custom-carousel" @change="handleIndicatorChange">
             <el-carousel-item v-for="(item, index) in imagelist" :key="index">
-                <NuxtLink :to="`/newsDetail/${item.id}`"
+                <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`"
                     :title="item.title">
                     <img :src="item.imgurl" :alt="item.title">
                     <span>{{ item.title }}</span>

+ 1 - 23
components/home/BigTitle_List.vue

@@ -4,7 +4,7 @@
             <ul>
                 <li v-for="item in headlinelist1" class="left">
                     <!-- <i></i> -->
-                    <NuxtLink :to="{path:`/newsDetail/${item.id}`,query:{listId:routeId,listName:routeName}}" :title="item.title">{{item.title}}</NuxtLink>
+                    <NuxtLink :to="{path:`/${item.pinyin}/a/${item.id}.html`}" :title="item.title">{{item.title}}</NuxtLink>
                 </li>
             </ul>
         </div>
@@ -15,28 +15,6 @@
 const props = defineProps({
     headlinelist1: Object
 });
-
-// const headlinelist1 = ref("")
-// async function getModelData1() {
-//     const { data: mkdata, error: mkdataError } =  requestData('/web/getWebsiteArticlett', {
-//         method: 'GET',
-//         query: {
-//             'pageSize': 2,
-//             'level': 1,
-//             'placeid': 2,
-//             'id':''
-//         },
-//     });
-//     if (mkdataError.value) {
-//         //console.error('模块1数据上部分请求失败!', mkdataError.value);
-//     } else {
-//         if (mkdata.value) {
-//             //console.log('模块1数据上部分请求成功!', mkdata.value.data);
-//             headlinelist1.value = mkdata.value.data;
-//         }
-//     }
-// }
-// getModelData1()
 </script>
 
 

+ 15 - 6
components/home/PageMessage.vue

@@ -4,10 +4,7 @@
             <div class="bigTitle">
                 <div class="inner" v-for="(item, index) in headlinelist" :key="index">
                     <img src="http://img.bjzxtw.org.cn/master/bjzxtw/public/head/mainTitleicon.png" alt="" class="left">
-                    <NuxtLink :to="item.linkurl" v-if="item.islink==1" :title="item.title">
-                        <h1 class="left">{{ item.title }}</h1>
-                    </NuxtLink>
-                    <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink==0" :title="item.title">
+                    <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" :target="item.islink == 1 ? '_blank' : '_self'">
                         <h1 class="left">{{ item.title }}</h1>
                     </NuxtLink>
                 </div>
@@ -22,8 +19,9 @@
                     <ul>
                         <li v-for="(item, index) in hotNewsList" :key="index">
                             <strong>{{ index + 1 }}</strong>
-                            <NuxtLink :to="item.linkurl" v-if="item.islink==1" :title="item.title">{{ item.title }}</NuxtLink>
-                            <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink==0" :title="item.title">{{ item.title }}</NuxtLink>
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" :target="item.islink == 1 ? '_blank' : '_self'">
+                                {{ item.title }}
+                            </NuxtLink>
                         </li>
                     </ul>
                 </div>
@@ -33,10 +31,21 @@
 </template>
 
 <script setup>
+//0.加载必备依赖 start ---------------------------------------->
 import { NuxtLink } from "#components";
 import { ref, onMounted } from "vue"
 const nuxtApp = useNuxtApp();
 const axios = nuxtApp.$axios;
+
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        return `/${item.pinyin}/a/${item.id}.html`;
+    }
+}
+//0.加载必备依赖 end ---------------------------------------->
+
 //1.获得板块数据 start ---------------------------------------->
 //大标题
 const headlinelist = ref([])

+ 2 - 2
components/home/SecondaryHeading.vue

@@ -9,7 +9,7 @@
                 <strong>频道介绍</strong>
                 <div v-for="(item,index) in titleData">
                     <span v-if="index<=7">
-                        <NuxtLink :to="{ path: `/newsList/${item.cid}`,query:{page:1} }">{{item.alias}}</NuxtLink>
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
                     </span>
                     <b v-else></b>
                 </div>
@@ -34,7 +34,7 @@ const route = useRoute();
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
 const segments = fullPath.split('/'); 
-const targetSegment = segments[2]; 
+const targetSegment = segments[1]; 
 const numberPart = targetSegment.match(/\d+$/)?.[0]; 
 //路由id
 //let routeId = 11 //排除路径错误可以打开这个

+ 12 - 37
components/home/Slider.vue

@@ -22,9 +22,9 @@
         <!-- 标题下内容列表 -->
         <div class="box">
             <div class="boxcontent">
-                <div class="boxleft" v-if="boxData1[0]">
+                <div class="boxleft" v-if="boxData1">
                     <div class="boxBigImg">
-                        <NuxtLink :to="`/newsDetail/${boxData1[0].id}`" class="imgbg" :title="boxData1[0].title">
+                        <NuxtLink :href="getLinkPathDetail(boxData1[0])" :title="boxData1[0].title" :target="boxData1[0].islink == 1 ? '_blank' : '_self'">
                             <img :src="boxData1[0].imgurl" :alt="boxData1[0].title">
                             <div>
                                 <p><span>专题</span>{{ boxData1[0].title }}</p>
@@ -32,13 +32,13 @@
                         </NuxtLink>
                     </div>
                     <div class="boxMainImg">
-                        <NuxtLink :to="`/newsDetail/${boxData1[1].id}`" class="imgbg" :title="boxData1[1].title">
+                        <NuxtLink :href="getLinkPathDetail(boxData1[1])" :title="boxData1[1].title" :target="boxData1[1].islink == 1 ? '_blank' : '_self'">
                             <img :src="boxData1[1].imgurl" :alt="boxData1[1].title">
                             <div>
                                 <p>{{boxData1[1].title}}</p>
                             </div>
                         </NuxtLink>
-                        <NuxtLink :to="`/newsDetail/${boxData1[2].id}`" class="imgbg" :title="boxData1[2].title">
+                        <NuxtLink :href="getLinkPathDetail(boxData1[2])" :title="boxData1[2].title" :target="boxData1[2].islink == 1 ? '_blank' : '_self'">
                             <img :src="boxData1[2].imgurl" :alt="boxData1[2].title">
                             <div>
                                 <p>{{boxData1[2].title}}</p>
@@ -46,7 +46,7 @@
                         </NuxtLink>
                     </div>
                     <div class="boxBigImg">
-                        <NuxtLink :to="`/newsDetail/${boxData1[3].id}`" class="imgbg" :title="boxData1[3].title">
+                        <NuxtLink :href="getLinkPathDetail(boxData1[3])" :title="boxData1[3].title" :target="boxData1[3].islink == 1 ? '_blank' : '_self'">
                             <img :src="boxData1[3].imgurl" :alt="boxData1[3].title">
                             <div>
                                 <p>{{boxData1[3].title}}</p>
@@ -57,9 +57,9 @@
                 <div class="boxright">
                    <ul>
                         <li v-for="item in boxData2">
-                            <NuxtLink :to="`/newsDetail/${item.id}`" :title="item.title">
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.title" :target="item.islink == 1 ? '_blank' : '_self'">
                                 <p class="title">{{item.title}}</p>
-                            </NuxtLink> 
+                            </NuxtLink>
                         </li>
                    </ul>
                 </div>
@@ -72,43 +72,18 @@
 //1.获得传入的数据 start---------------------------------------->
 const props = defineProps({
     message: Array,
+    boxData1: Array,
+    boxData2: Array,
 });
 //1.获得传入的数据 end---------------------------------------->
 
 //2.获得本页的数据 start---------------------------------------->
-const boxData1 = ref([]);
-const boxData2 = ref([]);
-
-if(props.message){
-    //政策法规 导航池1 图文4 文字6 模块1
-    await getPageData(1,4,8,3);
-}
-
-//注意,政策法规下面还有一个政策法规
-//当前这个是二级分类页面,你进去以后显示的是他的子导航
-async function getPageData(catid,img_num,text_num,modulesNum){
-    const mkdata =  await requestDataPromise('/web/getWebsiteCatidArticle', {
-        method: 'GET',
-        query: {
-            'catid': catid, //catid
-            'img_num': img_num, //图片数量
-            'text_num': text_num //文字数量
-        },
-    });
-    //模块1新农村
-    if(modulesNum == 3){
-        boxData1.value = mkdata.data.img;
-        boxData2.value = mkdata.data.text;
-    }
-}
-
 //格式化跳转路径 - 标题
 const getLinkPath = (item) => {
     if (item.children_count == 0) {
-        return `/newsList/${item.cid}`;
+        return `/${item.aLIas_pinyin}/1.html`;
     } else {
-        //return `/${item.url}/`;
-        return `/primaryNavigation/${item.cid}`;
+        return `/${item.aLIas_pinyin}/`;
     }
 }
 //格式化跳转路径 - 到详情
@@ -116,7 +91,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/newsDetail/${item.id}`;
+        return `/${item.pinyin}/a/${item.id}.html`;
     }
 }
 //2.获得本页的数据 end---------------------------------------->

+ 2 - 2
components/home/pageNavigation.vue

@@ -112,10 +112,10 @@ const getLinkPath = (item) => {
         return `${item.web_url}`;
     }else if(item.children_count == 0){
         //return `/newsList/${item.category_id}?page=1`;
-        return `/news/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/1.html`;
     }else{
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
-        return `/news/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/`;
     }
 }
 //2.加载模块数据 end ---------------------------------------->

+ 2 - 2
components/home/pageNavigation1.vue

@@ -70,10 +70,10 @@ const getLinkPath = (item) => {
         return `${item.web_url}`;
     }else if(item.children_count == 0){
         //return `/newsList/${item.category_id}?page=1`;
-        return `/news/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/1.html`;
     }else{
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
-        return `/news/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/`;
     }
 }
 //2.加载模块数据 end ---------------------------------------->

+ 26 - 15
pages/news/[dir]/[dir]/[id].vue → pages/[dir]/[dir]/[id].vue

@@ -13,17 +13,17 @@
         <div class="sannongzhichuang" v-if="parent_name != ''">
             <div class="inner">
                 <h2>
-                    <NuxtLink :to="`/primaryNavigation/${parent_id}`"> {{ parent_name }}</NuxtLink>
+                    <NuxtLink :to="`/${parent_pinyin}`"> {{ parent_name }}</NuxtLink>
                     <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
                 </h2>
                 <p class="introduction">
                     <strong>频道介绍</strong>
-                <div v-for="(item, index) in secondNav" :key="index">
-                    <span v-if="index <= 7">
-                        <NuxtLink :to="{ path: `/newsList/${item.category_id}`,query:{page:1}}">{{ item.alias }}</NuxtLink>
-                    </span>
-                    <b v-else></b>
-                </div>
+                    <div v-for="(item, index) in secondNav" :key="index">
+                        <span v-if="index <= 7">
+                            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
+                        </span>
+                        <b v-else></b>
+                    </div>
                 </p>
             </div>
         </div>
@@ -37,7 +37,7 @@
                         <NuxtLink to="/">首页</NuxtLink>
                     </el-breadcrumb-item>
                     <el-breadcrumb-item v-if="parent_name != ''">
-                        <NuxtLink :to="`/primaryNavigation/${parent_id}`"> {{ parent_name }}</NuxtLink>
+                        <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
                     </el-breadcrumb-item>
                     <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
                 </el-breadcrumb>
@@ -49,14 +49,13 @@
                 <div class="innerLeft">
                     <ul class="list">
                         <li v-for="(item, index) in newsList" :key="index">
-                            <NuxtLink :to="item.linkurl" v-show="item.islink == 1" :title="item.title">{{ item.title }}
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
+                                {{ item.title }}
                             </NuxtLink>
-                            <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink == 0" :title="item.title">{{
-                                item.title }}</NuxtLink>
                         </li>
                     </ul>
                     <!-- 分页器 -->
-                    <div class="pagination">
+                    <div class="pagination" v-if="total > 0">
                         <el-pagination 
                             size="small" 
                             background 
@@ -94,6 +93,17 @@ import { ref, onMounted } from 'vue';
 //当前列表名称
 const name = ref('')
 const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//格式化跳转路径
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/a/${item.id}.html`;
+    }
+}
 //1.页面必备依赖 end ---------------------------------------->
 
 //1.获得路由id start ---------------------------------------->
@@ -150,7 +160,7 @@ newslists();
 //分页事件
 let changePage = (value) => {
     console.log("当前页码", value);
-    navigateTo(`/news/${targetSegment}/${value}.html`)
+    navigateTo(`/${targetSegment}/${value}.html`)
 }
 
 //2.3获得页面名称
@@ -179,6 +189,7 @@ getPageName();
 //3.1通过id获取父栏目
 const parent_name = ref([]);
 const parent_id = ref([]);
+const parent_pinyin = ref("");
 let getParentNav = async () => {
     const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
         method: 'GET',
@@ -190,15 +201,15 @@ let getParentNav = async () => {
         console.log(listData.data);
         parent_name.value = listData.data.parent_name;
         parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
     } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("错误位置:获取新闻列表")
         console.log("后端错误反馈:", listData.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
-    getSecondNav();
 }
-//获得列表
+//获得父级栏目详情
 getParentNav();
 
 // 3.2获取二级栏目

+ 40 - 7
pages/news/[dir]/[dir]/a/[id].vue → pages/[dir]/[dir]/a/[id].vue

@@ -8,15 +8,13 @@
     <!-- 面包屑导航 -->
     <div class="breadcrumb">
         <div class="inner">
-            <span class="location">当前位置:</span>
+            <span class="location">当前位置{{ parent_name }}:</span>
             <el-breadcrumb :separator-icon="ArrowRight">
                 <el-breadcrumb-item>
                     <NuxtLink to="/">首页</NuxtLink>
                 </el-breadcrumb-item>
-                <el-breadcrumb-item >
-                    <NuxtLink :to="{ path: `/newsList/${routLevelId}`,query:{page:1} }">
-                        {{ routLevelTitle }}
-                    </NuxtLink>
+                <el-breadcrumb-item v-if="parent_name != ''">
+                    <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
                 </el-breadcrumb-item>
                 <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
             </el-breadcrumb>
@@ -149,9 +147,44 @@ import { ArrowRight } from '@element-plus/icons-vue'
 const nuxtApp = useNuxtApp();
 const axios = nuxtApp.$axios;
 
-//获得跳转过来的id
+//1.1 获得跳转过来的id
 const route = useRoute();
-const articleId = route.params.id; //获得该页面的id
+const articleId = parseInt(route.params.id);  //获得该页面的id
+
+//1.2 获得父级栏目的名称、id
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/'); 
+const targetSegment = segments[1]; 
+const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+const routeId = numberPart;
+
+const parent_name = ref("");
+const parent_id = ref("");
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': routeId
+        },
+    });
+    
+    if (listData.code == 200) {
+        parent_name.value = listData.data.alias;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得父级栏目详情
+getParentNav();
 //1.页面依赖 end ---------------------------------------->
 
 //2.页面数据 start ---------------------------------------->

+ 27 - 15
pages/news/[dir]/[id].vue → pages/[dir]/[id].vue

@@ -13,17 +13,17 @@
         <div class="sannongzhichuang" v-if="parent_name != ''">
             <div class="inner">
                 <h2>
-                    <NuxtLink :to="`/primaryNavigation/${parent_id}`"> {{ parent_name }}</NuxtLink>
+                    <NuxtLink :to="`/${parent_pinyin}`"> {{ parent_name }}</NuxtLink>
                     <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
                 </h2>
                 <p class="introduction">
                     <strong>频道介绍</strong>
-                <div v-for="(item, index) in secondNav" :key="index">
-                    <span v-if="index <= 7">
-                        <NuxtLink :to="{ path: `/newsList/${item.category_id}`,query:{page:1}}">{{ item.alias }}</NuxtLink>
-                    </span>
-                    <b v-else></b>
-                </div>
+                    <div v-for="(item, index) in secondNav" :key="index">
+                        <span v-if="index <= 7">
+                            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
+                        </span>
+                        <b v-else></b>
+                    </div>
                 </p>
             </div>
         </div>
@@ -37,7 +37,7 @@
                         <NuxtLink to="/">首页</NuxtLink>
                     </el-breadcrumb-item>
                     <el-breadcrumb-item v-if="parent_name != ''">
-                        <NuxtLink :to="`/primaryNavigation/${parent_id}`"> {{ parent_name }}</NuxtLink>
+                        <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
                     </el-breadcrumb-item>
                     <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
                 </el-breadcrumb>
@@ -49,14 +49,13 @@
                 <div class="innerLeft">
                     <ul class="list">
                         <li v-for="(item, index) in newsList" :key="index">
-                            <NuxtLink :to="item.linkurl" v-show="item.islink == 1" :title="item.title">{{ item.title }}
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
+                                {{ item.title }}
                             </NuxtLink>
-                            <NuxtLink :to="`/newsDetail/${item.id}`" v-if="item.islink == 0" :title="item.title">{{
-                                item.title }}</NuxtLink>
                         </li>
                     </ul>
                     <!-- 分页器 -->
-                    <div class="pagination">
+                    <div class="pagination" v-if="total > 0">
                         <el-pagination 
                             size="small" 
                             background 
@@ -94,6 +93,17 @@ import { ref, onMounted } from 'vue';
 //当前列表名称
 const name = ref('')
 const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//格式化跳转路径
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/a/${item.id}.html`;
+    }
+}
 //1.页面必备依赖 end ---------------------------------------->
 
 //1.获得路由id start ---------------------------------------->
@@ -107,13 +117,13 @@ let pageSize = ref(20);
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
 const segments = fullPath.split('/'); 
-const targetSegment = segments[2]; 
+const targetSegment = segments[1]; 
 const numberPart = targetSegment.match(/\d+$/)?.[0]; 
 //路由id
 //let routeId = 20 //排除路径错误可以打开这个
 articleId = numberPart;
 //获得html前的数字
-const pageUrl = segments[3]; 
+const pageUrl = segments[2]; 
 const pageNumber = pageUrl.split('.')[0];
 console.log("当前URL中的页码:")
 console.log(pageNumber)//2
@@ -150,7 +160,7 @@ newslists();
 //分页事件
 let changePage = (value) => {
     console.log("当前页码", value);
-    navigateTo(`/news/${targetSegment}/${value}.html`)
+    navigateTo(`/${targetSegment}/${value}.html`)
 }
 
 //2.3获得页面名称
@@ -179,6 +189,7 @@ getPageName();
 //3.1通过id获取父栏目
 const parent_name = ref([]);
 const parent_id = ref([]);
+const parent_pinyin = ref("");
 let getParentNav = async () => {
     const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
         method: 'GET',
@@ -190,6 +201,7 @@ let getParentNav = async () => {
         console.log(listData.data);
         parent_name.value = listData.data.parent_name;
         parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
     } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("错误位置:获取新闻列表")

+ 45 - 6
pages/news/[dir]/a/[id].vue → pages/[dir]/a/[id].vue

@@ -13,10 +13,8 @@
                 <el-breadcrumb-item>
                     <NuxtLink to="/">首页</NuxtLink>
                 </el-breadcrumb-item>
-                <el-breadcrumb-item >
-                    <NuxtLink :to="{ path: `/newsList/${routLevelId}`,query:{page:1} }">
-                        {{ routLevelTitle }}
-                    </NuxtLink>
+                <el-breadcrumb-item v-if="parent_name != ''">
+                    <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
                 </el-breadcrumb-item>
                 <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
             </el-breadcrumb>
@@ -149,9 +147,50 @@ import { ArrowRight } from '@element-plus/icons-vue'
 const nuxtApp = useNuxtApp();
 const axios = nuxtApp.$axios;
 
-//获得跳转过来的id
+//1.1 获得跳转过来的id
 const route = useRoute();
-const articleId = route.params.id; //获得该页面的id
+//获得详情id
+const articleId = parseInt(route.params.id); //获得该页面的id
+
+
+//获得路由
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/'); 
+const targetSegment = segments[1]; 
+const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//路由id
+//let routeId = 20 //排除路径错误可以打开这个
+const routeId = numberPart;
+
+//1.2 获得父级栏目的名称、id
+const parent_name = ref([]);
+const parent_id = ref([]);
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': routeId
+        },
+    });
+    console.log("获取父级栏目数据")
+    console.log(listData)
+    if (listData.code == 200) {
+        console.log(listData.data);
+        parent_name.value = listData.data.alias;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得父级栏目详情
+getParentNav();
 //1.页面依赖 end ---------------------------------------->
 
 //2.页面数据 start ---------------------------------------->

+ 6 - 4
pages/news/[dir]/index.vue → pages/[dir]/index.vue

@@ -329,7 +329,8 @@ import { ref, onMounted } from 'vue';
 //首页分类栏目标题,不需要考虑外链
 const getLinkPath = (item) => {
     //return `/${item.url}/1.html`;
-    return `/newsList/${item.cid}?page=1`;
+    //return `/newsList/${item.cid}?page=1`;
+    return `/${item.aLIas_pinyin}/1.html`;
 }
 //首页跳转到详情,这里需要考虑外链
 const getLinkPathDetail = (item) => {
@@ -337,7 +338,8 @@ const getLinkPathDetail = (item) => {
         return `${item.linkurl}`;
     } else {
         //return `/${item.aLIas_pinyin}/${item.id}`;
-        return `/newsDetail/${item.id}`
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/a/${item.id}.html`;
     }
 }
 //0.加载页面依赖 end ---------------------------------------->
@@ -349,7 +351,7 @@ const route = useRoute();
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
 const segments = fullPath.split('/'); 
-const targetSegment = segments[2]; 
+const targetSegment = segments[1]; 
 const numberPart = targetSegment.match(/\d+$/)?.[0]; 
 //路由id
 //let routeId = 11 //排除路径错误可以打开这个
@@ -488,7 +490,7 @@ try {
                 cid: navigateData.data[index].category_id,
                 children_count: navigateData.data[index].children_count,
                 alias: navigateData.data[index].alias,
-                url: navigateData.data[index].aLIas_pinyin,
+                aLIas_pinyin: navigateData.data[index].aLIas_pinyin,
                 data:[],
                 data1:[],
                 data2:[],

+ 0 - 14
pages/about/[dir]/[id].vue

@@ -35,14 +35,8 @@
                     <ul class="list">
                         <li v-for="(item, index) in newsList" :key="index">
                             <NuxtLink :to="{ path: `zhaopin/${item.id}.html` }" :title="item.con_title">{{item.con_title}}</NuxtLink>
-                            <!-- <NuxtLink :to="{ path: `/speciaArticle/${item.id}` }" target="_blank" v-if="item.islink == 0">{{ item.list_title }}</NuxtLink> -->
                         </li>
                     </ul>
-                    <!-- 分页器 -->
-                    <!-- <div class="pagination">
-                        <el-pagination size="small" background layout="prev, pager, next" :total="total" class="mt-4"
-                            prev-text="上一页" next-text="下一页" @change="changePage" />
-                    </div> -->
                 </div>
                 <div class="innerRight">
                     <div class="rightMenuTitle">导航列表</div>
@@ -171,14 +165,6 @@ let newslists = async () => {
 }
 //获得列表
 newslists();
-
-//分页
-let changePage = (value) => {
-    console.log("当前页码", value);
-    page.value = value
-    console.log(page.value);
-    newslists()
-}
 //2.页面数据 end ---------------------------------------->
 
 //3 设置seo信息

+ 25 - 13
pages/index.vue

@@ -82,7 +82,7 @@
         <div class="scienceEducation">
             <div class="inner">
                 <div class="scienceLeft" v-if="pageData.length>=3">
-                    <HomeSlider :message="pageData[2]"></HomeSlider>
+                    <HomeSlider :message="pageData[2]" :boxData1="boxData17.imgnum" :boxData2="boxData17.textnum"></HomeSlider>
                 </div>
                 <div class="scienceRight" v-if="pageData.length>=4">
                     <div class="adBox1" v-if="adImg2">
@@ -557,12 +557,12 @@
                         </span>
                     </div>
                     <div class="right" v-if="tabsData3==1">
-                        <NuxtLink :to="{ path: `/newsList/${item.category_id}`}"  v-for="item in boxData14menu" :title="item.alias">
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}"  v-for="item in boxData14menu" :title="item.alias">
                             {{item.alias}}
                         </NuxtLink>
                     </div>
                     <div class="right" v-if="tabsData3==2">
-                        <NuxtLink :to="{ path: `/newsList/${item.category_id}`}" v-if="pageData[14].cid" v-for="item in boxData15menu" :title="item.alias">
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html}`}" v-if="pageData[14].cid" v-for="item in boxData15menu" :title="item.alias">
                             {{item.alias}}
                         </NuxtLink>
                     </div>
@@ -594,12 +594,12 @@
                         <div class="title">
                             <h3 v-if="boxData14menu[0]">
                                 <NuxtLink
-                                    :to="{ path: `/newsList/${boxData14menu[0].category_id}`}"
+                                    :to="{ path: `/${boxData14childpinyin}/1.html`}"
                                     v-if="boxData14menu[0]" class="leftTitle" :title="boxData14menu[0].alias">
                                     {{ boxData14menu[0].alias }}
                                 </NuxtLink>
                                 <NuxtLink
-                                    :to="{ path: `/newsList/${boxData14menu[0].category_id}`}"
+                                    :to="{ path: `/${boxData14childpinyin}/1.html`}"
                                     v-if="boxData14menu[0]" :title="boxData14menu[0].alias">
                                     查看更多
                                 </NuxtLink>
@@ -645,12 +645,12 @@
                         <div class="title">
                             <h3 v-if="boxData15menu[0]">
                                 <NuxtLink
-                                    :to="{ path: `/newsList/${boxData15menu[0].category_id}`}"
+                                    :to="{ path: `/${boxData15childpinyin}/1.html`}"
                                     v-if="boxData15menu[0]" class="leftTitle" :title="boxData15menu[0].alias">
                                     {{ boxData15menu[0].alias }}
                                 </NuxtLink>
                                 <NuxtLink
-                                    :to="{ path: `/newsList/${boxData15menu[0].category_id}`}"
+                                    :to="{ path: `/${boxData15childpinyin}/1.html`}"
                                     v-if="boxData15menu[0]" :title="boxData15menu[0].alias">
                                     查看更多
                                 </NuxtLink>
@@ -686,7 +686,7 @@
                     </div>
                 </div>
                 <div class="index_2_head_a_box clearfix">
-                    <NuxtLink :to="{ path: `/newsList/${item.category_id}`}" v-if="pageData[15].cid" v-for="item in boxData16menu" :title="item.alias">
+                    <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}" v-if="pageData[15].cid" v-for="item in boxData16menu" :title="item.alias">
                         {{item.alias}}
                     </NuxtLink>
                 </div>
@@ -749,12 +749,12 @@
                     <div class="index_1_box_right">
                         <div class="index_1_head_box clearfix index_1_head_box_line_none">
                             <NuxtLink
-                                :to="{ path: `/newsList/${boxData16menu[0].category_id}`}"
+                                :to="{ path: `/${boxData16childpinyin}/1.html`}"
                                 v-if="boxData16menu[0]" class="leftTitle" :title="boxData16menu[0].alias">
                                 {{ boxData16menu[0].alias }}
                             </NuxtLink>
                             <NuxtLink
-                                :to="{ path: `/newsList/${boxData16menu[0].category_id}`}"
+                                :to="{ path: `/${boxData16childpinyin}/1.html`}"
                                 v-if="boxData16menu[0]" :title="boxData16menu[0].alias">
                                 查看更多
                             </NuxtLink>
@@ -797,10 +797,10 @@ import { useSeoMeta } from '#imports';
 const getLinkPath = (item) => {
     if (item.children_count == 0) {
         //return `/newsList/${item.cid}?page=1`;
-        return `/news/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/1.html`;
     } else {
         //return `/primaryNavigation/${item.cid}`;
-        return `/news/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/`;
     }
 }
 //首页跳转到详情,这里需要考虑外链
@@ -808,7 +808,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/news${item.pinyin}a/${item.id}.html`;
+        return `/${item.pinyin}/a/${item.id}.html`;
     }
 }
 //1.加载页面必备组件 end---------------------------------------->
@@ -1265,11 +1265,13 @@ const tabsData3 = ref(1)
 const boxData14 = ref([]);
 const boxData14data2 = ref([]);
 const boxData14menu = ref([]);
+const boxData14childpinyin = ref([]);
 const boxData14mainData = ref([]);
 //模块15
 const boxData15 = ref([]);
 const boxData15data2 = ref([]);
 const boxData15menu = ref([]);
+const boxData15childpinyin = ref([]);
 const boxData15mainData = ref([]);
 //模块16 模块17 切换
 const tabsData4 = ref(1)
@@ -1277,7 +1279,11 @@ const tabsData4 = ref(1)
 const boxData16 = ref([]);
 const boxData16data2 = ref([]);
 const boxData16menu = ref([]);
+const boxData16childpinyin = ref([]);
 const boxData16mainData = ref([]);
+//模块17 - 政策法规 本来这个是模块3 原来是单独放到一个模块中的,现在提出来了
+const boxData17 = ref({})
+
 
 //3.2获得导航数据
 try {
@@ -1370,6 +1376,7 @@ let getJson = [
     {"parent":"21,2,8","child":"189,0,5"},//模块14农资购销
     {"parent":"153,2,8","child":"258,0,5"},//模块15农产购销
     {"parent":"26,4,8","child":"191,0,5"},//模块16打假维权
+    {"parent":"1,4,8","child":""},//模块3政策法规
 ]
 
 let jsonString = JSON.stringify(getJson);
@@ -1417,17 +1424,22 @@ async function getPageAllData(){
         boxData14.value = mkdata.data[12].imgnum;
         boxData14data2.value = mkdata.data[12].textnum;
         boxData14menu.value =  mkdata.data[12].child.all_childcat;
+        boxData14childpinyin.value = mkdata.data[12].child.pinyin;
         boxData14mainData.value = mkdata.data[12].child.textnum;
         //模块14农产购销 
         boxData15.value = mkdata.data[13].imgnum;
         boxData15data2.value = mkdata.data[13].textnum;
         boxData15menu.value = mkdata.data[13].child.all_childcat;
+        boxData15childpinyin.value = mkdata.data[13].child.pinyin;
         boxData15mainData.value = mkdata.data[13].child.textnum;
         //模块15打假维权 
         boxData16.value = mkdata.data[14].imgnum;
         boxData16data2.value = mkdata.data[14].textnum;
         boxData16menu.value = mkdata.data[14].child.all_childcat;
+        boxData16childpinyin.value = mkdata.data[14].child.pinyin;
         boxData16mainData.value = mkdata.data[14].child.textnum;
+        //模块17政策法规
+        boxData17.value = mkdata.data[15];
 
     }else{
         ElMessage.error(mkdata.message)

+ 12 - 3
pages/search/[id].vue

@@ -43,9 +43,18 @@
                         </div>
                     </div>
                     <!-- 分页器 -->
-                    <div class="pagination">
-                        <el-pagination size="small" background layout="prev, pager, next" :total="total" class="mt-4"
-                            v-model:page-size="pageSize" prev-text="上一页" next-text="下一页" @change="changePage" />
+                    <div class="pagination" v-if="total > 0">
+                        <el-pagination 
+                            size="small" 
+                            background 
+                            layout="prev, pager, next" 
+                            :total="total" 
+                            class="mt-4"
+                            :page-size="pageSize" 
+                            prev-text="上一页" 
+                            next-text="下一页" 
+                            @change="changePage"
+                         />
                     </div>
                 </div>
             </div>