Explorar o código

提交书刊信息代码

Jing hai 1 mes
pai
achega
67fbda0af7

+ 4 - 0
.nuxt/components.d.ts

@@ -14,6 +14,7 @@ interface _GlobalComponents {
     'HomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'HomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'HomePagination': typeof import("../components/home/Pagination.vue")['default']
     'HomePagination': typeof import("../components/home/Pagination.vue")['default']
     'HomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
     'HomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
+    'HomeSecondaryHeadingShukan': typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
     'HomeSmallSwiper1': typeof import("../components/home/SmallSwiper1.vue")['default']
     'HomeSmallSwiper1': typeof import("../components/home/SmallSwiper1.vue")['default']
     'HomeSmallSwiperNmg': typeof import("../components/home/SmallSwiperNmg.vue")['default']
     'HomeSmallSwiperNmg': typeof import("../components/home/SmallSwiperNmg.vue")['default']
     'HomeSurveyvote': typeof import("../components/home/Surveyvote.vue")['default']
     'HomeSurveyvote': typeof import("../components/home/Surveyvote.vue")['default']
@@ -62,6 +63,7 @@ interface _GlobalComponents {
     'LazyHomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'LazyHomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'LazyHomePagination': typeof import("../components/home/Pagination.vue")['default']
     'LazyHomePagination': typeof import("../components/home/Pagination.vue")['default']
     'LazyHomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
     'LazyHomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
+    'LazyHomeSecondaryHeadingShukan': typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
     'LazyHomeSmallSwiper1': typeof import("../components/home/SmallSwiper1.vue")['default']
     'LazyHomeSmallSwiper1': typeof import("../components/home/SmallSwiper1.vue")['default']
     'LazyHomeSmallSwiperNmg': typeof import("../components/home/SmallSwiperNmg.vue")['default']
     'LazyHomeSmallSwiperNmg': typeof import("../components/home/SmallSwiperNmg.vue")['default']
     'LazyHomeSurveyvote': typeof import("../components/home/Surveyvote.vue")['default']
     'LazyHomeSurveyvote': typeof import("../components/home/Surveyvote.vue")['default']
@@ -116,6 +118,7 @@ export const HomeListSecondaryHeading: typeof import("../components/home/ListSec
 export const HomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const HomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const HomePagination: typeof import("../components/home/Pagination.vue")['default']
 export const HomePagination: typeof import("../components/home/Pagination.vue")['default']
 export const HomeSecondaryHeading: typeof import("../components/home/SecondaryHeading.vue")['default']
 export const HomeSecondaryHeading: typeof import("../components/home/SecondaryHeading.vue")['default']
+export const HomeSecondaryHeadingShukan: typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
 export const HomeSmallSwiper1: typeof import("../components/home/SmallSwiper1.vue")['default']
 export const HomeSmallSwiper1: typeof import("../components/home/SmallSwiper1.vue")['default']
 export const HomeSmallSwiperNmg: typeof import("../components/home/SmallSwiperNmg.vue")['default']
 export const HomeSmallSwiperNmg: typeof import("../components/home/SmallSwiperNmg.vue")['default']
 export const HomeSurveyvote: typeof import("../components/home/Surveyvote.vue")['default']
 export const HomeSurveyvote: typeof import("../components/home/Surveyvote.vue")['default']
@@ -164,6 +167,7 @@ export const LazyHomeListSecondaryHeading: typeof import("../components/home/Lis
 export const LazyHomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const LazyHomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const LazyHomePagination: typeof import("../components/home/Pagination.vue")['default']
 export const LazyHomePagination: typeof import("../components/home/Pagination.vue")['default']
 export const LazyHomeSecondaryHeading: typeof import("../components/home/SecondaryHeading.vue")['default']
 export const LazyHomeSecondaryHeading: typeof import("../components/home/SecondaryHeading.vue")['default']
+export const LazyHomeSecondaryHeadingShukan: typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
 export const LazyHomeSmallSwiper1: typeof import("../components/home/SmallSwiper1.vue")['default']
 export const LazyHomeSmallSwiper1: typeof import("../components/home/SmallSwiper1.vue")['default']
 export const LazyHomeSmallSwiperNmg: typeof import("../components/home/SmallSwiperNmg.vue")['default']
 export const LazyHomeSmallSwiperNmg: typeof import("../components/home/SmallSwiperNmg.vue")['default']
 export const LazyHomeSurveyvote: typeof import("../components/home/Surveyvote.vue")['default']
 export const LazyHomeSurveyvote: typeof import("../components/home/Surveyvote.vue")['default']

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

@@ -1 +1 @@
-{"id":"ecadd406-112f-4261-b781-58f0ff14009c","timestamp":1745568279917}
+{"id":"661fd28d-1c96-42fc-9d02-02a5a5ffd574","timestamp":1746685860085}

+ 1 - 0
.nuxt/manifest/meta/661fd28d-1c96-42fc-9d02-02a5a5ffd574.json

@@ -0,0 +1 @@
+{"id":"661fd28d-1c96-42fc-9d02-02a5a5ffd574","timestamp":1746685860085,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 0 - 1
.nuxt/manifest/meta/ecadd406-112f-4261-b781-58f0ff14009c.json

@@ -1 +0,0 @@
-{"id":"ecadd406-112f-4261-b781-58f0ff14009c","timestamp":1745568279917,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 1 - 1
.nuxt/tsconfig.json

@@ -102,7 +102,7 @@
         "./imports"
         "./imports"
       ],
       ],
       "#app-manifest": [
       "#app-manifest": [
-        "./manifest/meta/ecadd406-112f-4261-b781-58f0ff14009c.json"
+        "./manifest/meta/661fd28d-1c96-42fc-9d02-02a5a5ffd574.json"
       ],
       ],
       "#components": [
       "#components": [
         "./components"
         "./components"

+ 1 - 0
assets/css/about.less

@@ -89,6 +89,7 @@
 
 
             .innerDetail1 {
             .innerDetail1 {
                 width: 1086px;
                 width: 1086px;
+                min-height: 600px;
                 margin: 0 auto;
                 margin: 0 auto;
                 padding: 30px 50px 40px;
                 padding: 30px 50px 40px;
                 box-sizing: border-box;
                 box-sizing: border-box;

+ 2 - 1
assets/css/public/footer.less

@@ -61,7 +61,7 @@
 
 
 .foot_frind_box {
 .foot_frind_box {
     display: block;
     display: block;
-    margin: 20px auto 30px;
+    margin: 20px auto 20px;
     overflow: hidden;
     overflow: hidden;
     display: flex;
     display: flex;
     width: 100%;
     width: 100%;
@@ -88,6 +88,7 @@
     color: #333;
     color: #333;
     font-size: 16px;
     font-size: 16px;
     margin: 0 30px;
     margin: 0 30px;
+    margin-bottom: 20px;
 }
 }
 
 
 .call_us_box {
 .call_us_box {

+ 763 - 0
assets/css/shukan.less

@@ -0,0 +1,763 @@
+@charset "utf-8";
+
+* {
+    margin: 0;
+    padding: 0;
+    font-family: "微软雅黑", "microsoft yahei";
+}
+
+ul,
+ol {
+    list-style: none;
+}
+
+a:active {
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: none;
+}
+
+a:visited {
+    text-decoration: none;
+}
+
+a:link {
+    text-decoration: none;
+}
+
+a:focus {
+    text-decoration: none;
+}
+
+body {
+    position: relative;
+}
+
+.clearfix {
+    overflow: hidden;
+}
+
+.clearfix_2::after {
+    content: '';
+    display: block;
+    height: 0;
+    visibility: hidden;
+    clear: both;
+}
+
+.hiddenColor {
+    visibility: hidden;
+}
+
+.hand {
+    cursor: pointer;
+}
+
+.aTag_parent {
+    position: relative;
+}
+
+.aTag_parent>a,
+.aTag {
+    display: block;
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    z-index: 99;
+    border: 0px;
+    top: 0px;
+    left: 0px;
+    background: rgba(0, 0, 0, 0);
+}
+
+.dot1 {
+    display: block;
+    word-break: keep-all;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.dot2 {
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+}
+
+input,
+img {
+    border: none;
+}
+
+.cover100 img {
+    display: block;
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
+}
+
+.back100 {
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+article,
+aside,
+footer,
+header,
+time,
+video,
+main,
+nav,
+h4,
+h3,
+section {
+    display: block;
+}
+
+.index_main {
+    width: 1200px;
+    margin: 0 auto;
+    margin-bottom: 222px;
+}
+
+.slow_6 {
+    -webkit-transition: all .6s;
+    -moz-transition: all .6s;
+    -ms-transition: all .6s;
+    -o-transition: all .6s;
+    transition: all .6s;
+}
+
+.banner_1 {
+    height: 90px;
+    overflow: hidden;
+    margin-top: 20px;
+
+    .banner_1_a {
+        display: block;
+        width: 1200px;
+    }
+
+    .banner_1_img {
+        display: block;
+        width: 1200px;
+    }
+}
+
+.index_1 {
+    margin-top: 30px;
+}
+
+.index_1_left {
+    float: left;
+    width: 720px;
+}
+
+.index_1_right {
+    float: right;
+    width: 450px;
+}
+
+.index_1_li:nth-of-type(1) .index_1_li_tag {
+    background: #004564;
+    color: #fff;
+}
+
+.index_1_li:nth-of-type(2) .index_1_li_tag {
+    background: #F6C12D;
+    color: #fff;
+}
+
+.index_1_li:nth-of-type(3) .index_1_li_tag {
+    background: #F3C57F;
+    color: #fff;
+}
+
+.index_1_li_a:hover {
+    color: #004564;
+}
+
+.index_2 {
+    margin-top: 11px;
+}
+
+.index_2_left {
+    float: left;
+    width: 720px;
+}
+
+.index_2_right {
+    float: right;
+    width: 450px;
+}
+
+.book_head_box {
+    border-bottom: solid 1px #D9D9D9;
+
+    .book_head_left {
+        float: left;
+    }
+
+    .book_head_a {
+        float: left;
+        height: 55px;
+        line-height: 55px;
+        color: #333;
+        font-weight: bold;
+        font-size: 22px;
+        border-bottom: solid 3px rgba(0, 0, 0, 0);
+        margin-right: 40px;
+    }
+
+    .book_head_only {
+        float: left;
+        height: 55px;
+        line-height: 55px;
+        color: #004564;
+        font-weight: bold;
+        font-size: 22px;
+        border-bottom: solid 3px #004564;
+    }
+
+    .book_head_a_more {
+        float: right;
+        height: 19px;
+        line-height: 19px;
+        margin-top: 20px;
+        color: #333;
+        font-size: 16px;
+    }
+
+    .book_head_a_more:hover {
+        color: #004564;
+    }
+
+    .book_head_right {
+        float: right;
+        margin-top: 11px;
+    }
+
+    .book_head_right_a {
+        float: left;
+        height: 31px;
+        line-height: 31px;
+        color: #fff;
+        font-size: 16px;
+        border-radius: 4px;
+        overflow: hidden;
+        padding: 0px 10px 0px 33px;
+    }
+}
+
+.book_1_img_ul {
+    height: 590px;
+
+    .book_1_img_li {
+        width: 350px;
+        margin: 30px 0px 10px 0px;
+    }
+
+    .book_1_img_li:nth-of-type(odd) {
+        float: left;
+    }
+
+    .book_1_img_li:nth-of-type(even) {
+        float: right;
+    }
+
+    .book_1_img_li_a {
+        width: 350px;
+        display: block;
+        overflow: hidden;
+    }
+
+    .book_1_img_li_a:hover .book_1_img_li_dot2 {
+        color: #004564;
+    }
+
+    .book_1_img_li_img {
+        float: left;
+        width: 140px;
+        height: 170px;
+        border-radius: 6px;
+    }
+
+    .book_1_img_li_right {
+        float: right;
+        width: 190px;
+    }
+
+    .book_1_img_li_dot2 {
+        width: 190px;
+        height: 46px;
+        line-height: 23px;
+        color: #333;
+        font-size: 18px;
+        margin-top: 12px;
+    }
+
+    .book_1_img_li_btn {
+        float: left;
+        border: solid 1px #004564;
+        margin-top: 74px;
+        height: 34px;
+        line-height: 34px;
+        color: #004564;
+        font-size: 14px;
+        padding: 0px 19px;
+        text-align: center;
+        box-sizing: border-box;
+    }
+}
+
+.book_num_1_ul {
+    .book_num_1_li {}
+
+    .book_num_1_li_a {
+        display: block;
+        width: 100%;
+        overflow: hidden;
+        position: relative;
+    }
+
+    .book_num_1_li_tag {
+        float: left;
+        height: 22px;
+        line-height: 22px;
+        color: #999;
+        font-size: 16px;
+        margin: 23px 0px 0px 0px;
+    }
+
+    .book_num_1_li_img {
+        width: 80px;
+        height: 120px;
+        border-radius: 4px;
+        margin: 29px 25px 0px 40px;
+        display: none;
+        float: left;
+    }
+
+    .book_num_1_li_dot1 {
+        float: right;
+        border-bottom: solid 1px #E6E6E6;
+        height: 66px;
+        line-height: 66px;
+        color: #333;
+        font-size: 16px;
+        margin-top: 0px;
+        width: 400px;
+        overflow: hidden;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        -webkit-line-clamp: 1;
+    }
+
+    // .book_num_1_li:nth-of-type(1) .book_num_1_li_tag {
+    //     font-weight: bold;
+    //     margin-top: 38px;
+    // }
+
+    .book_num_1_li:nth-of-type(-n+3) .book_num_1_li_tag {
+        color: #004564;
+    }
+
+    .book_num_1_li_a:hover .book_num_1_li_dot1 {
+        color: #004564;
+    }
+
+    //鼠标移入后的效果
+    .num_active {
+        font-weight: bold;
+        margin-top: 38px;
+    }
+
+    .img_active {
+        display: block;
+    }
+
+    .text_active {
+        width: 295px;
+        border: solid 0px #111;
+        color: #333;
+        font-size: 16px;
+        line-height: 22px;
+        height: 44px;
+        font-weight: bold;
+        margin-top: 39px;
+        overflow: hidden;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        -webkit-line-clamp: 2;
+    }
+
+    .text_active::after {
+        content: '';
+        display: block;
+        position: absolute;
+        width: 295px;
+        height: 1px;
+        background: #E6E6E6;
+        right: 0px;
+        bottom: 13px;
+    }
+}
+
+.index_3 {
+    margin-top: 11px;
+}
+
+.index_3_left {
+    float: left;
+    width: 720px;
+}
+
+.index_3_right {
+    float: right;
+    width: 450px;
+}
+
+.book_2_img_ul {
+    margin-top: 30px;
+    height: 530px;
+}
+
+.book_2_img_li {
+    float: left;
+    width: 170px;
+    margin: 0px 13px 30px 0px;
+}
+
+.book_2_img_li_a {
+    display: block;
+    width: 170px;
+}
+
+.book_2_img_li_img {
+    display: block;
+    width: 170px;
+    height: 230px;
+}
+
+.book_2_img_li_dot1 {
+    height: 21px;
+    line-height: 21px;
+    color: #333;
+    width: 96%;
+    font-size: 18px;
+    text-align: center;
+    margin: 17px auto 0;
+}
+
+.book_2_img_li:nth-of-type(4n) {
+    margin-right: 0px;
+}
+
+.book_2_img_li_a:hover .book_2_img_li_dot1 {
+    color: #004564;
+}
+
+.book_3_img_ul {
+    margin-top: 30px;
+    height: 156px;
+
+    .book_3_img_li {
+        float: left;
+        width: 108px;
+        margin: 0px 18px 0px;
+    }
+
+    .book_3_img_li_a {
+        display: block;
+        width: 108px;
+    }
+
+    .book_3_img_li_img {
+        display: block;
+        width: 80px;
+        height: 120px;
+        margin: 0px auto;
+    }
+
+    .book_3_img_li_dot1 {
+        height: 21px;
+        line-height: 21px;
+        text-align: center;
+        width: 108px;
+        margin: 17px auto 0px;
+        color: #333;
+        font-size: 16px;
+    }
+
+    .book_3_img_li_a:hover .book_3_img_li_dot1 {
+        color: #004564;
+    }
+}
+
+.book_2_ul {
+    .book_2_li {
+        border-bottom: solid 1px #E6E6E6;
+        height: 68px;
+        position: relative;
+        box-sizing: border-box;
+    }
+
+    .book_2_li_a {
+        height: 68px;
+        width: 400px;
+        float: left;
+        line-height: 77px;
+        color: #333;
+        font-size: 16px;
+    }
+
+    .book_2_li_tag {
+        float: right;
+        width: 16px;
+        line-height: 16px;
+        height: 16px;
+        color: #004564;
+        font-size: 14px;
+        background: #edf7f0;
+        margin-top: 30px;
+        text-align: center;
+    }
+
+    .book_2_li_a:hover {
+        color: #004564;
+    }
+
+    .book_2_li_a::after {
+        content: '';
+        display: block;
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0px;
+        top: 0px;
+    }
+}
+
+.banner_2 {
+    height: 90px;
+    overflow: hidden;
+    margin-top: 1px;
+
+    .banner_2_a {
+        display: block;
+        width: 1200px;
+    }
+
+    .banner_2_img {
+        display: block;
+        width: 1200px;
+    }
+}
+
+.index_4 {
+    margin-top: 11px;
+}
+
+.index_4_left {
+    float: left;
+    width: 720px;
+}
+
+.index_4_right {
+    float: right;
+    width: 450px;
+}
+
+.book_3_ul {
+    .book_3_li {
+        border-bottom: solid 1px #E6E6E6;
+        height: 68px;
+        position: relative;
+        box-sizing: border-box;
+    }
+
+    .book_3_li_a {
+        height: 68px;
+        width: 400px;
+        float: left;
+        line-height: 77px;
+        color: #333;
+        font-size: 16px;
+    }
+
+    .book_3_li_tag {
+        float: right;
+        width: 16px;
+        line-height: 16px;
+        height: 16px;
+        color: #004564;
+        font-size: 14px;
+        background: #edf7f0;
+        margin-top: 30px;
+        text-align: center;
+    }
+
+    .book_3_li_a:hover {
+        color: #004564;
+    }
+
+    .book_3_li_a::after {
+        content: '';
+        display: block;
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0px;
+        top: 0px;
+    }
+}
+
+.book_4_img_ul {
+    margin-top: 30px;
+    height: 156px;
+
+    .book_4_img_li {
+        float: left;
+        width: 108px;
+        margin: 0px 18px 0px;
+    }
+
+    .book_4_img_li_a {
+        display: block;
+        width: 108px;
+    }
+
+    .book_4_img_li_img {
+        display: block;
+        width: 80px;
+        height: 120px;
+        margin: 0px auto;
+    }
+
+    .book_4_img_li_dot1 {
+        height: 21px;
+        line-height: 21px;
+        text-align: center;
+        width: 108px;
+        margin: 17px auto 0px;
+        color: #333;
+        font-size: 16px;
+    }
+
+    .book_4_img_li_a:hover .book_4_img_li_dot1 {
+        color: #004564;
+    }
+
+}
+
+.book_5_img_ul {
+    margin-top: 30px;
+    height: 570px;
+
+    .book_5_img_li {
+        box-sizing: border-box;
+        background: #FBFBFB;
+        padding: 20px;
+        margin-bottom: 20px;
+    }
+
+    .book_5_img_li_a {
+        display: block;
+        width: 100%;
+        height: 100%;
+    }
+
+    .book_5_img_li_img {
+        float: left;
+        width: 100px;
+        height: 136px;
+    }
+
+    .book_5_img_li_right {
+        float: right;
+        width: 555px;
+    }
+
+    .book_5_img_li_dot2 {
+        height: 50px;
+        line-height: 25px;
+        color: #333;
+        font-size: 20px;
+        font-weight: bold;
+    }
+
+    .book_5_img_li_a:hover .book_5_img_li_dot2 {
+        color: #004564;
+    }
+
+    .book_5_img_li_foot {
+        margin-top: 38px;
+    }
+
+    .book_5_img_li_foot_red {
+        float: left;
+        height: 21px;
+        line-height: 21px;
+        color: #E52222;
+        font-size: 16px;
+        margin: 14px 5px 0px 0px;
+    }
+
+    .book_5_img_li_foot_num {
+        float: left;
+        height: 40px;
+        line-height: 40px;
+        color: #E52222;
+        font-size: 30px;
+        margin: 0px 10px 0px 0px;
+    }
+
+    .book_5_img_li_foot_text {
+        float: left;
+        height: 21px;
+        line-height: 21px;
+        color: #999;
+        font-size: 14px;
+        margin: 14px 0px 0px 0px;
+    }
+
+    .book_5_img_li_foot_price {
+        float: left;
+        height: 21px;
+        line-height: 21px;
+        color: #999;
+        font-size: 14px;
+        margin: 14px 0px 0px 0px;
+        position: relative;
+    }
+
+    .book_5_img_li_foot_price::after {
+        content: '';
+        display: block;
+        background: #999;
+        width: 100%;
+        height: 1px;
+        left: 0px;
+        top: 50%;
+        position: absolute;
+    }
+}
+
+@media screen and (min-width:1200px) {
+    /*pc_1440*/
+    @media screen and (max-width:1440px) {
+        /*1200*/
+    }
+
+    .pc_none {
+        display: none;
+    }
+}
+
+@media screen and (max-width:599px) {}
+
+@media screen and (max-width:320px) {}

+ 391 - 0
assets/css/shukanDetail.less

@@ -0,0 +1,391 @@
+.breadcrumb {
+    width: 100%;
+    height: 22px;
+    margin-bottom: 30px;
+    font-family: Microsoft YaHei, Microsoft YaHei;
+    font-weight: 400;
+    font-size: 20px;
+    color: #666666;
+    line-height: 23px;
+    text-align: left;
+    font-style: normal;
+    text-transform: none;
+
+    .el-breadcrumb::v-deep {
+        display: inline-block;
+        vertical-align: -4px;
+    }
+
+    /deep/.el-breadcrumb__inner a,
+    /deep/.el-breadcrumb__inner.is-link {
+        color: #666666;
+        font-weight: 400;
+        text-decoration: none;
+        transition: var(--el-transition-color);
+    }
+
+    span {
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        color: #666666;
+        line-height: 23px;
+        text-align: left;
+        font-style: normal;
+        text-transform: none;
+    }
+
+    span:hover {
+        color: #666666;
+    }
+
+    .location {
+        margin-right: 20px;
+        width: 100px;
+        height: 22px;
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        color: #666666;
+        line-height: 23px;
+        text-align: left;
+        font-style: normal;
+        text-transform: none;
+    }
+}
+
+.dot1 {
+    display: block;
+    word-break: keep-all;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.dot2 {
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+}
+
+.dot3 {
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 3;
+}
+
+.clearfix {
+    overflow: hidden;
+}
+
+// 资讯列表
+.newsDetail {
+    width: 100%;
+    // margin-bottom: 70px;
+
+    .inner {
+        width: 1200px;
+        font-size: 16px;
+
+        .innerLeft {
+            float: right;
+            width: 900px;
+            margin-right: 0;
+            margin-left: 20px;
+
+            .disclaimer {
+                width: 900px;
+                overflow: hidden;
+                border-top: 1px solid #e6e6e6;
+                padding: 30px 0px;
+                color: #999999;
+                font-size: 17px;
+
+                p {
+                    width: 900px;
+                    line-height: 30px;
+                }
+            }
+
+            // .dot1 {
+            //     display: block;
+            //     word-break: keep-all;
+            //     white-space: nowrap;
+            //     overflow: hidden;
+            //     text-overflow: ellipsis;
+            // }
+
+            // .dot2 {
+            //     overflow: hidden;
+            //     display: -webkit-box;
+            //     -webkit-box-orient: vertical;
+            //     -webkit-line-clamp: 2;
+            // }
+
+            // .dot3 {
+            //     overflow: hidden;
+            //     display: -webkit-box;
+            //     -webkit-box-orient: vertical;
+            //     -webkit-line-clamp: 3;
+            // }
+
+            // .clearfix {
+            //     overflow: hidden;
+            // }
+
+            .book_son_right {
+                float: right;
+                width: 900px;
+            }
+
+            .book_son_left_head {
+                height: 69px;
+                background-image: url(@/public/index/01.png);
+            }
+
+            .book_son_left_ul {
+                margin-top: 29px;
+
+                .book_son_left_li {
+                    display: block;
+                    width: 279px;
+                    background: #FBFBFB;
+                    height: 61px;
+                    line-height: 61px;
+                    box-sizing: border-box;
+                    margin-bottom: 15px;
+                    text-align: center;
+                    color: #333;
+                    font-size: 20px;
+                    border-left: solid 5px #004564;
+                }
+
+                .book_son_left_li_only {
+                    border: solid 1px #004564;
+                }
+            }
+
+            /* 三农资讯网-书刊信息-详情 */
+            .book_detail_box {
+                background: #FBFBFB;
+                padding: 40px 0px;
+
+                .book_detail_img_box {
+                    float: left;
+                    width: 220px;
+                    height: 300px;
+                    margin-left: 30px;
+                    border: 1px solid #ccc;
+                }
+
+                .book_detail_img {
+                    float: left;
+                    width: 220px;
+                    height: 300px;
+                    // margin-left: 30px;
+                    border: 1px solid #ccc;
+                }
+
+                .book_detail_right {
+                    float: right;
+                    width: 600px;
+                    margin-right: 20px;
+                }
+
+                .book_detail_right_h4 {
+                    line-height: 26px;
+                    color: #333;
+                    font-size: 22px;
+                    margin-top: 11px;
+                }
+
+                .book_detail_right_title {
+                    margin-top: 22px;
+                    color: #333;
+                    font-size: 14px;
+                }
+
+                .book_detail_right_ul {
+                    margin-top: 31px;
+                }
+
+                .book_detail_right_li {
+                    float: left;
+                    min-width: 150px;
+                    margin: 0px 48px 25px 0px;
+                    display: flex;
+                }
+
+                .book_detail_right_li_label {
+                    height: 18px;
+                    line-height: 18px;
+                    color: #999;
+                    font-size: 14px;
+                }
+
+                .book_detail_right_li_text {
+                    height: 18px;
+                    line-height: 18px;
+                    color: #333;
+                    font-size: 14px;
+                    flex: 1;
+                }
+
+                .book_detail_price_box {
+                    margin-top: 9px;
+                }
+
+                .book_detail_price_red {
+                    float: left;
+                    height: 21px;
+                    line-height: 21px;
+                    color: #E52222;
+                    font-size: 16px;
+                    margin: 14px 5px 0px 0px;
+                }
+
+                .book_detail_price_box_in {
+                    float: left;
+                    min-width: 110px;
+                    height: 40px;
+                }
+
+                .book_detail_price_num {
+                    float: left;
+                    height: 40px;
+                    line-height: 40px;
+                    color: #E52222;
+                    font-size: 30px;
+                    margin: 0px 10px 0px 0px;
+                }
+
+                .book_detail_price_text {
+                    float: left;
+                    height: 21px;
+                    line-height: 21px;
+                    color: #999;
+                    font-size: 14px;
+                    margin: 14px 0px 0px 0px;
+                }
+
+                .book_detail_price_delete {
+                    float: left;
+                    height: 21px;
+                    line-height: 21px;
+                    color: #999;
+                    font-size: 14px;
+                    margin: 14px 0px 0px 0px;
+                    position: relative;
+                }
+
+                .book_detail_price_delete::after {
+                    content: '';
+                    display: block;
+                    background: #999;
+                    width: 100%;
+                    height: 1px;
+                    left: 0px;
+                    top: 50%;
+                    position: absolute;
+                }
+            }
+
+            .book_detail_head_box {
+                border-bottom: solid 1px #D9D9D9;
+
+                .book_detail_head_left {
+                    float: left;
+                }
+
+                .book_detail_head_a {
+                    float: left;
+                    height: 55px;
+                    line-height: 55px;
+                    color: #333;
+                    font-weight: bold;
+                    font-size: 22px;
+                    border-bottom: solid 3px rgba(0, 0, 0, 0);
+                    margin-right: 40px;
+                }
+
+                .book_detail_head_only {
+                    float: left;
+                    height: 55px;
+                    line-height: 55px;
+                    color: #004564;
+                    font-weight: bold;
+                    font-size: 22px;
+                    border-bottom: solid 3px #004564;
+                }
+            }
+
+            .book_detail_article {
+                margin-top: 30px;
+                min-height: 240px;
+                margin-bottom: 30px;
+            }
+
+            @media screen and (min-width:1200px) {
+
+                /*pc_1440*/
+                @media screen and (max-width:1440px) {
+                    /*1200*/
+                }
+
+                .pc_none {
+                    display: none;
+                }
+            }
+
+            @media screen and (max-width:599px) {}
+
+            @media screen and (max-width:320px) {}
+
+        }
+
+
+        .innerRight {
+            width: 279px;
+
+            .rightMenuTitle {
+                width: 279px;
+                height: 69px;
+                font-size: 22px;
+                font-weight: bold;
+                line-height: 58px;
+                text-align: center;
+                color: #fff;
+                background: url("@/public/index/navtitle.png") no-repeat;
+                margin-bottom: 30px;
+
+                a {
+                    color: #fff;
+                }
+            }
+
+            ul {
+                li {
+                    a {
+                        border-left: 5px solid #004564;
+                        margin-bottom: 15px;
+                        font-size: 22px;
+                        display: block;
+                        height: 61px;
+                        line-height: 61px;
+                        color: #333333;
+                        text-align: center;
+                        background: #FBFBFB;
+                    }
+                }
+            }
+
+            .active {
+                border-left: 0;
+                border: 1px solid #004564;
+                background: #fff;
+            }
+        }
+    }
+}

+ 318 - 0
assets/css/shukanList.less

@@ -0,0 +1,318 @@
+.breadcrumb {
+    width: 100%;
+    height: 22px;
+    margin-bottom: 30px;
+    font-family: Microsoft YaHei, Microsoft YaHei;
+    font-weight: 400;
+    font-size: 20px;
+    color: #666666;
+    line-height: 23px;
+    text-align: left;
+    font-style: normal;
+    text-transform: none;
+
+    .el-breadcrumb::v-deep {
+        display: inline-block;
+        vertical-align: -4px;
+    }
+
+    /deep/.el-breadcrumb__inner a,
+    /deep/.el-breadcrumb__inner.is-link {
+        color: #666666;
+        font-weight: 400;
+        text-decoration: none;
+        transition: var(--el-transition-color);
+    }
+
+    span {
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        color: #666666;
+        line-height: 23px;
+        text-align: left;
+        font-style: normal;
+        text-transform: none;
+    }
+
+    span:hover {
+        color: #666666;
+    }
+
+    .location {
+        margin-right: 20px;
+        width: 100px;
+        height: 22px;
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        color: #666666;
+        line-height: 23px;
+        text-align: left;
+        font-style: normal;
+        text-transform: none;
+    }
+}
+
+.dot1 {
+    display: block;
+    word-break: keep-all;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.dot2 {
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+}
+
+.dot3 {
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 3;
+}
+
+.clearfix {
+    overflow: hidden;
+}
+
+// 资讯列表
+.newsDetail {
+    width: 100%;
+    //height: 1400px;
+    margin-bottom: 70px;
+
+    .inner {
+        width: 1200px;
+        //height: 1400px;
+        font-size: 16px;
+
+        .innerLeft {
+            //height: 1400px;
+            float: right;
+            width: 900px;
+            margin-right: 0;
+            margin-left: 20px;
+
+            .dot1 {
+                display: block;
+                word-break: keep-all;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+            }
+
+            .dot2 {
+                overflow: hidden;
+                display: -webkit-box;
+                -webkit-box-orient: vertical;
+                -webkit-line-clamp: 2;
+            }
+
+            .dot3 {
+                overflow: hidden;
+                display: -webkit-box;
+                -webkit-box-orient: vertical;
+                -webkit-line-clamp: 3;
+            }
+
+            .clearfix {
+                overflow: hidden;
+            }
+
+            .book_son_right {
+                float: right;
+                width: 900px;
+                overflow: hidden;
+                min-height: 600px;
+                margin-bottom: 60px;
+            }
+
+            .book_son_left_head {
+                height: 69px;
+                // background-image: url(../public/img/18.png);
+            }
+
+            .book_son_left_ul {
+                margin-top: 29px;
+
+                .book_son_left_li {
+                    display: block;
+                    width: 279px;
+                    height: 61px;
+                    line-height: 61px;
+                    box-sizing: border-box;
+                    margin-bottom: 15px;
+                    background: #FBFBFB;
+                    border: solid 0px #fff;
+                    border-left: solid 5px #004564;
+                    text-align: center;
+                    color: #333;
+                    font-size: 20px;
+                }
+
+                .book_son_left_li_only {
+                    border: solid 1px #004564;
+                }
+            }
+
+            .book_son_right_ul {
+
+                .book_son_right_li {
+                    margin-bottom: 20px;
+                    position: relative;
+                }
+
+                .book_son_right_li_img {
+                    border: solid 1px #ccc;
+                    float: left;
+                    width: 140px;
+                    height: 170px;
+                }
+
+                .book_son_right_li_in {
+                    float: right;
+                    width: 741px;
+                }
+
+                .book_son_right_li_h4 {
+                    height: 24px;
+                    line-height: 24px;
+                    font-weight: bold;
+                    font-size: 18px;
+                    color: #000;
+                    margin-top: 11px;
+                }
+
+                .book_son_right_li_dot3 {
+                    height: 63px;
+                    line-height: 21px;
+                    font-size: 16px;
+                    color: #999;
+                    margin-top: 9px;
+                }
+
+                .book_son_right_li_btn {
+                    float: left;
+                    border: solid 1px #004564;
+                    margin-top: 24px;
+                    height: 34px;
+                    line-height: 34px;
+                    color: #004564;
+                    font-size: 14px;
+                    padding: 0px 19px;
+                    text-align: center;
+                    box-sizing: border-box;
+                }
+
+                .book_son_right_li_btn::after {
+                    content: '';
+                    display: block;
+                    width: 100%;
+                    height: 100%;
+                    left: 0px;
+                    top: 0px;
+                    position: absolute;
+                }
+
+                .book_son_right_li:hover .book_son_right_li_dot3 {
+                    color: #004564;
+                }
+
+                .book_son_right_li:hover .book_son_right_li_h4 {
+                    color: #004564;
+                }
+
+                .book_son_right_li:nth-last-of-type(1) {
+                    margin-bottom: 0px;
+                }
+            }
+
+        }
+
+
+        .innerRight {
+            width: 279px;
+
+            .rightMenuTitle {
+                width: 279px;
+                height: 69px;
+                font-size: 22px;
+                font-weight: bold;
+                line-height: 58px;
+                text-align: center;
+                color: #fff;
+                background: url("@/public/index/navtitle.png") no-repeat;
+                margin-bottom: 30px;
+
+                a {
+                    color: #fff;
+                }
+            }
+
+            ul {
+                li {
+                    a {
+                        border-left: 5px solid #004564;
+                        margin-bottom: 15px;
+                        font-size: 22px;
+                        display: block;
+                        height: 61px;
+                        line-height: 61px;
+                        color: #333333;
+                        text-align: center;
+                        background: #FBFBFB;
+                    }
+                }
+            }
+
+            .active {
+                border-left: 0;
+                border: 1px solid #004564;
+                background: #fff;
+            }
+        }
+    }
+}
+
+.pagination {
+    width: 100%;
+    height: 34px;
+    // margin-left: 141px;
+    display: flex;
+    justify-content: center;
+    margin-top: 60px;
+
+    // 鼠标移入后字体颜色
+    .el-pagination::v-deep :hover {
+        color: #004564;
+    }
+
+    .el-pagination.is-background::v-deep .btn-next,
+    .el-pagination.is-background::v-deep .btn-prev {
+        width: 70px;
+        height: 34px;
+        margin: 0px 10px;
+        border-radius: 4px;
+    }
+
+    .el-pagination.is-background::v-deep .el-pager li {
+        margin: 0px 10px;
+        width: 38px;
+        height: 34px;
+        border-radius: 4px;
+    }
+
+    .el-pagination.is-background::v-deep .btn-next.is-active,
+    .el-pagination.is-background::v-deep .btn-prev.is-active,
+    .el-pagination.is-background::v-deep .el-pager li.is-active {
+        background-color: #004564;
+        color: #fff;
+    }
+
+
+}

+ 50 - 29
components/home/SecondaryHeading.vue

@@ -1,9 +1,11 @@
 <template>
 <template>
-    <nav class="channel_nav clearfix">
-        <a class="channel_nav_a" href="javascript:(void)" title="title">{{ title }}</a>
-        <span v-for="(item,index) in titleData">
-            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html`}" class="channel_nav_a" v-if="index<=7">{{ item.alias }}</NuxtLink>
-        </span>
+    <nav class="channel_nav">
+        <a class="channel_nav_head_name" href="javascript:(void)" title="title">{{ title }}</a>
+        <div class="channel_nav_a_box">
+            <NuxtLink v-for="(item, index) in titleData"
+                :to="{ path: `/${item.aLIas_pinyin}/list-1.html` }" class="channel_nav_a">{{ item.alias
+                }}</NuxtLink>
+        </div>
     </nav>
     </nav>
 </template>
 </template>
 
 
@@ -11,33 +13,33 @@
 //1.设置组件数据 start---------------------------------------->
 //1.设置组件数据 start---------------------------------------->
 //子导航
 //子导航
 const props = defineProps({
 const props = defineProps({
-    titleData:Array,
-    pinyinid:Number
+    titleData: Array,
+    pinyinid: Number
 });
 });
 
 
 //获取当前url路径
 //获取当前url路径
 const route = useRoute();
 const route = useRoute();
 //获得当前的完整路径
 //获得当前的完整路径
 const fullPath = route.path;
 const fullPath = route.path;
-const segments = fullPath.split('/'); 
-const targetSegment = segments[1]; 
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
 //1.设置组件数据 end---------------------------------------->
 //1.设置组件数据 end---------------------------------------->
 
 
 //2.设置组件标题 start ---------------------------------------->
 //2.设置组件标题 start ---------------------------------------->
 const title = ref("")
 const title = ref("")
 async function getPageData() {
 async function getPageData() {
-    const mkdata =  await requestDataPromise('/web/getOneWebsiteCategory', {
+    const mkdata = await requestDataPromise('/web/getOneWebsiteCategory', {
         method: 'GET',
         method: 'GET',
         query: {
         query: {
             'catid': props.pinyinid,
             'catid': props.pinyinid,
         },
         },
     });
     });
-    if(mkdata.code == 200){
+    if (mkdata.code == 200) {
         title.value = mkdata.data.alias;
         title.value = mkdata.data.alias;
-    }else{
+    } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("错误位置:获取二级标题")
         console.log("错误位置:获取二级标题")
-        console.log("后端错误反馈:",mkdata.message)
+        console.log("后端错误反馈:", mkdata.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
     }
 }
 }
@@ -47,33 +49,52 @@ getPageData();
 
 
 <style lang="less" scoped>
 <style lang="less" scoped>
 .channel_nav {
 .channel_nav {
-    height: 42px;
-    border-bottom: solid 3px #004564;
-    margin-top: 30px;
     width: 1200px;
     width: 1200px;
     margin: 0 auto;
     margin: 0 auto;
+    border-bottom: solid 3px #004564;
     margin-top: 30px;
     margin-top: 30px;
+    display: flex;
+    overflow: hidden;
+
+    .channel_nav_head_name {
+        margin: auto 2px 0px 0px;
+        height: 44px;
+        line-height: 44px;
+        font-size: 30px;
+        color: #fff;
+        font-weight: bold;
+        background: url(@/public/img/27.png) no-repeat right 0px;
+        background-size: 100% 102%;
+        padding: 0px 33px;
+        box-sizing: border-box;
+    }
+
+    .channel_nav_a_box {
+        flex: 1;
+        margin-top: auto;
+        overflow: hidden;
+    }
 
 
     .channel_nav_a {
     .channel_nav_a {
         float: left;
         float: left;
-        height: 42px;
-        line-height: 42px;
+        height: 24px;
+        line-height: 24px;
         color: #333;
         color: #333;
         font-size: 18px;
         font-size: 18px;
-        margin-left: 30px;
+        margin: 3px 10px 7px;
         font-weight: bold;
         font-weight: bold;
+        // width: 88px;
+        box-sizing: border-box;
+        text-align: center;
     }
     }
 
 
-    >.channel_nav_a:nth-of-type(1) {
-        height: 42px;
-        line-height: 42px;
-        font-size: 30px;
-        color: #fff;
-        font-weight: bold;
-        background: url(@/public/img/27.png) no-repeat right 0px;
-        background-size: 100% 100%;
-        padding: 0px 15px;
-        margin: 1px 0px 10px 0px;
+    .channel_nav_a:nth-of-type(10n) {
+        margin-right: 0px;
     }
     }
 }
 }
+
+.back100 {
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
 </style>
 </style>

+ 100 - 0
components/home/SecondaryHeading_shukan.vue

@@ -0,0 +1,100 @@
+<template>
+    <nav class="channel_nav">
+        <a class="channel_nav_head_name" href="javascript:(void)" title="title">{{ title }}</a>
+        <div class="channel_nav_a_box">
+            <NuxtLink v-for="(item, index) in titleData"
+                :to="{ path: `/${item.aLIas_pinyin}/list-1.html` }" class="channel_nav_a">{{ item.alias
+                }}</NuxtLink>
+        </div>
+    </nav>
+</template>
+
+<script setup>
+//1.设置组件数据 start---------------------------------------->
+//子导航
+const props = defineProps({
+    titleData: Array,
+    pinyinid: Number
+});
+
+//获取当前url路径
+const route = useRoute();
+//获得当前的完整路径
+const fullPath = route.path;
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+//1.设置组件数据 end---------------------------------------->
+
+//2.设置组件标题 start ---------------------------------------->
+const title = ref("")
+async function getPageData() {
+    const mkdata = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': props.pinyinid,
+        },
+    });
+    if (mkdata.code == 200) {
+        title.value = mkdata.data.alias;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取二级标题")
+        console.log("后端错误反馈:", mkdata.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+getPageData();
+//2.设置组件标题 end ---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+.channel_nav {
+    width: 1200px;
+    margin: 0 auto;
+    border-bottom: solid 3px #004564;
+    margin-top: 30px;
+    display: flex;
+    overflow: hidden;
+
+    .channel_nav_head_name {
+        margin: auto 2px 0px 0px;
+        height: 44px;
+        line-height: 44px;
+        font-size: 30px;
+        color: #fff;
+        font-weight: bold;
+        background: url(@/public/img/27.png) no-repeat right 0px;
+        background-size: 100% 102%;
+        padding: 0px 33px;
+        box-sizing: border-box;
+    }
+
+    .channel_nav_a_box {
+        flex: 1;
+        margin-top: auto;
+        overflow: hidden;
+    }
+
+    .channel_nav_a {
+        float: left;
+        height: 24px;
+        line-height: 24px;
+        color: #333;
+        font-size: 18px;
+        margin: 3px 10px 7px;
+        font-weight: bold;
+        // width: 88px;
+        box-sizing: border-box;
+        text-align: center;
+    }
+
+    .channel_nav_a:nth-of-type(10n) {
+        margin-right: 0px;
+    }
+}
+
+.back100 {
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+</style>

+ 2 - 2
components/home/foot.vue

@@ -73,8 +73,8 @@ async function getModelDataAll() {
     const mkdata =  await requestDataPromise('/web/getWebsiteFootAll', {
     const mkdata =  await requestDataPromise('/web/getWebsiteFootAll', {
         method: 'GET',
         method: 'GET',
         query: {
         query: {
-            'link_textnum':8,
-            'link_imgnum':12,
+            'link_textnum':24,
+            'link_imgnum':18,
             'link_footnum':4
             'link_footnum':4
         },
         },
     });
     });

+ 19 - 26
pages/[dir]/[dir]/[id].vue

@@ -17,12 +17,9 @@
                             <el-breadcrumb-item>
                             <el-breadcrumb-item>
                                 <NuxtLink to="/">首页</NuxtLink>
                                 <NuxtLink to="/">首页</NuxtLink>
                             </el-breadcrumb-item>
                             </el-breadcrumb-item>
-                            <el-breadcrumb-item v-if="parent_children_count > 0">
+                            <el-breadcrumb-item v-if="parent_name != ''">
                                 <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
                                 <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
                             </el-breadcrumb-item>
                             </el-breadcrumb-item>
-                            <el-breadcrumb-item>
-                                <NuxtLink :to="`/${parent_pinyin}/list-1.html`"> {{ parent_name }}</NuxtLink>
-                            </el-breadcrumb-item>
                             <el-breadcrumb-item>
                             <el-breadcrumb-item>
                                 <NuxtLink :to="`list-1.html`"> {{ routLevelTitle }}</NuxtLink>
                                 <NuxtLink :to="`list-1.html`"> {{ routLevelTitle }}</NuxtLink>
                             </el-breadcrumb-item>
                             </el-breadcrumb-item>
@@ -38,11 +35,7 @@
                         发布时间: <span>{{ time }}</span>
                         发布时间: <span>{{ time }}</span>
                     </p>
                     </p>
                 </div>
                 </div>
-                <div 
-                    class="leftBottom" 
-                    v-html="newsDetail.content" 
-                    v-if="newsDetail.content" 
-                    @click="openPreview">
+                <div class="leftBottom" v-html="newsDetail.content" v-if="newsDetail.content" @click="openPreview">
                 </div>
                 </div>
                 <div v-if="previewVisible" class="preview-modal" @click="closePreview">
                 <div v-if="previewVisible" class="preview-modal" @click="closePreview">
                     <img :src="selectedImage" alt="Preview">
                     <img :src="selectedImage" alt="Preview">
@@ -75,7 +68,7 @@
 <script setup>
 <script setup>
 //1.页面依赖 start ---------------------------------------->
 //1.页面依赖 start ---------------------------------------->
 import { onMounted } from 'vue'
 import { onMounted } from 'vue'
-import { ElBreadcrumb, ElBreadcrumbItem,ElRadio, ElRadioGroup,ElCheckbox,ElCheckboxGroup,ElMessage,ElInput } from 'element-plus'
+import { ElBreadcrumb, ElBreadcrumbItem, ElRadio, ElRadioGroup, ElCheckbox, ElCheckboxGroup, ElMessage, ElInput } from 'element-plus'
 import { ArrowRight } from '@element-plus/icons-vue'
 import { ArrowRight } from '@element-plus/icons-vue'
 //1.页面依赖 end ---------------------------------------->
 //1.页面依赖 end ---------------------------------------->
 
 
@@ -92,12 +85,12 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
         'pinyin': targetSegment,
         'pinyin': targetSegment,
     },
     },
 });
 });
-if(getRouteId.code == 200){
+if (getRouteId.code == 200) {
     routeId = getRouteId.data.category_id
     routeId = getRouteId.data.category_id
-}else{
+} else {
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("错误位置:通过url路径查询导航池id")
     console.log("错误位置:通过url路径查询导航池id")
-    console.log("后端错误反馈:",getRouteId.message)
+    console.log("后端错误反馈:", getRouteId.message)
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
 }
 //2.页面路径 end ---------------------------------------->
 //2.页面路径 end ---------------------------------------->
@@ -114,7 +107,7 @@ let getParentNav = async () => {
             'catid': routeId
             'catid': routeId
         },
         },
     });
     });
-    
+
     if (listData.code == 200) {
     if (listData.code == 200) {
         parent_name.value = listData.data.alias;
         parent_name.value = listData.data.alias;
         parent_id.value = listData.data.parent_id;
         parent_id.value = listData.data.parent_id;
@@ -144,15 +137,15 @@ const routLevelId = ref("");
 const articleChoice = ref(false);
 const articleChoice = ref(false);
 //4.5 获取详情
 //4.5 获取详情
 async function getPageData() {
 async function getPageData() {
-    const mkdata =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
+    const mkdata = await requestDataPromise('/web/selectWebsiteArticleInfo', {
         method: 'GET',
         method: 'GET',
         query: {
         query: {
             'articleid': articleId
             'articleid': articleId
         },
         },
     });
     });
-    if(mkdata.code==200){
+    if (mkdata.code == 200) {
         //判断是否显示投票
         //判断是否显示投票
-        if(mkdata.data.is_survey==1){
+        if (mkdata.data.is_survey == 1) {
             console.log("本篇文章含有投票!")
             console.log("本篇文章含有投票!")
             articleChoice.value = true;
             articleChoice.value = true;
         }
         }
@@ -169,10 +162,10 @@ async function getPageData() {
         } else {
         } else {
             routeNewsTtitle.value = newsDetail.value.title
             routeNewsTtitle.value = newsDetail.value.title
         }
         }
-    }else{
+    } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("错误位置:获取详情内容")
         console.log("错误位置:获取详情内容")
-        console.log("后端错误反馈:",mkdata.message)
+        console.log("后端错误反馈:", mkdata.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
     }
 }
 }
@@ -182,7 +175,7 @@ getPageData();
 
 
 //5.广告 start ---------------------------------------->
 //5.广告 start ---------------------------------------->
 let adImg1 = ref([]);
 let adImg1 = ref([]);
-onMounted(async ()  => {
+onMounted(async () => {
     const { $webUrl, $CwebUrl } = useNuxtApp();
     const { $webUrl, $CwebUrl } = useNuxtApp();
     //广告1
     //广告1
     let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0001`
     let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0001`
@@ -199,13 +192,13 @@ onMounted(async ()  => {
 //5.广告 end ---------------------------------------->
 //5.广告 end ---------------------------------------->
 
 
 //6.设置seo信息 start---------------------------------------->
 //6.设置seo信息 start---------------------------------------->
-const setData =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
+const setData = await requestDataPromise('/web/selectWebsiteArticleInfo', {
     method: 'GET',
     method: 'GET',
     query: {
     query: {
         'articleid': articleId
         'articleid': articleId
     },
     },
 });
 });
-if(setData.code==200){
+if (setData.code == 200) {
     let seoTitle = setData.data.title;
     let seoTitle = setData.data.title;
     let seoDescription = setData.data.introduce;
     let seoDescription = setData.data.introduce;
     let seoKeywords = setData.data.keyword;
     let seoKeywords = setData.data.keyword;
@@ -215,12 +208,12 @@ if(setData.code==200){
     useSeoMeta({
     useSeoMeta({
         title: seoTitle + "_" + seoName + "_" + seoSuffix,
         title: seoTitle + "_" + seoName + "_" + seoSuffix,
         meta: [
         meta: [
-            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix , tagPriority: 10 },
-            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
         ]
         ]
     });
     });
-}else{
-    console.log("获取广告数据失败!",setData.message)
+} else {
+    console.log("获取广告数据失败!", setData.message)
 }
 }
 //6.设置seo信息 end---------------------------------------->
 //6.设置seo信息 end---------------------------------------->
 
 

+ 1 - 1
pages/[dir]/[dir]/list-[id].vue

@@ -178,7 +178,7 @@ let getSecondNav = async () => {
         query: {
         query: {
             'placeid': 1,
             'placeid': 1,
             'pid': parent_id.value,
             'pid': parent_id.value,
-            'num': 8,
+            'num': 20,
         },
         },
     });
     });
     console.log('listData', listData);
     console.log('listData', listData);

+ 1 - 4
pages/[dir]/[id].vue

@@ -18,12 +18,9 @@
                             <el-breadcrumb-item>
                             <el-breadcrumb-item>
                                 <NuxtLink to="/">首页</NuxtLink>
                                 <NuxtLink to="/">首页</NuxtLink>
                             </el-breadcrumb-item>
                             </el-breadcrumb-item>
-                            <el-breadcrumb-item v-if="parent_children_count > 0">
+                            <el-breadcrumb-item v-if="parent_name != ''">
                                 <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
                                 <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
                             </el-breadcrumb-item>
                             </el-breadcrumb-item>
-                            <el-breadcrumb-item v-if="parent_children_count == 0">
-                                <NuxtLink :to="`/${parent_pinyin}/list-1.html`"> {{ parent_name }}</NuxtLink>
-                            </el-breadcrumb-item>
                             <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
                             <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
                         </el-breadcrumb>
                         </el-breadcrumb>
                     </div>
                     </div>

+ 1 - 1
pages/[dir]/index.html.vue

@@ -478,7 +478,7 @@ try {
         query: {
         query: {
             'placeid': 1,
             'placeid': 1,
             'pid': routeId,
             'pid': routeId,
-            'num': 8
+            'num': 20
         },
         },
     });
     });
     if (navigateData.code == 200) {
     if (navigateData.code == 200) {

+ 288 - 0
pages/nongfugongxiaoshukanyinxiang/[dir] copy/[id].vue

@@ -0,0 +1,288 @@
+<template>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation></HomePageNavigation>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <section class="book_son_right clearfix" v-if="newsDetail != ''">
+                    <div class="book_detail_box clearfix">
+                        <div class="book_detail_img_box">
+                            <img class="book_detail_img" :src="newsDetail.img_url" alt="" v-if="newsDetail.img_url">
+                        </div>
+                        <div class="book_detail_right clearfix">
+                            <h4 class="book_detail_right_h4">{{ newsDetail.title }}</h4>
+                            <div class="book_detail_right_title">现售价:</div>
+                            <div class="book_detail_price_box clearfix">
+                                <div class="book_detail_price_box_in clearfix">
+                                    <span class="book_detail_price_red">¥</span>
+                                    <span class="book_detail_price_num"
+                                        v-if="newsDetail.price == '' || newsDetail.price != 0">
+                                        {{ newsDetail.price }}
+                                    </span>
+                                </div>
+                                <span class="book_detail_price_text">市场价:</span>
+                                <span class="book_detail_price_delete"
+                                    v-if="newsDetail.market_price == '' || newsDetail.market_price != 0">
+                                    {{ newsDetail.market_price }}
+                                </span>
+                            </div>
+                            <div class="book_detail_right_ul clearfix">
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">页数:</label>
+                                    <span class="book_detail_right_li_text"
+                                        v-if="newsDetail.page == '' || newsDetail.page != 0">
+                                        {{ newsDetail.page }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">开本:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.format">
+                                        {{ newsDetail.format }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">纸张:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.paper">
+                                        {{ newsDetail.paper }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">包装:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.package">
+                                        {{ newsDetail.package }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">出版社:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.publishing_house">
+                                        {{ newsDetail.publishing_house }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">出版时间:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.publish_time">
+                                        {{ getTime(newsDetail.publish_time, 'year', 1) }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">ISBN:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.ISBN">
+                                        {{ newsDetail.ISBN }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">国内统一刊号CN:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.CN">
+                                        {{ newsDetail.CN }}
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="book_detail_head_box clearfix">
+                        <div class="book_detail_head_left">
+                            <a class="book_detail_head_a book_detail_head_only" href="" title="">内容简介</a>
+                        </div>
+                    </div>
+                    <!-- 内容简介 -->
+                    <article class="book_detail_article" v-html="newsDetail.detail"></article>
+                    <!-- 内容简介 -->
+                </section>
+                <!-- 免责声明: -->
+                <!-- v-if="newsDetail.copyfrom != '本网'" -->
+                <div class="disclaimer" v-if="newsDetail.source != '本网'">
+                    <p>原文链接:{{ newsDetail.source_url }}</p>
+                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
+                </div>
+            </div>
+            <div class="innerRight">
+                <div class="rightMenuTitle">
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                </div>
+                <ul>
+                    <li v-for="(item, index) in bottomMenu" :key="index">
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-if="item.category_id == pageId" class="active">
+                            {{ item.alias }}
+                        </NuxtLink>
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-else-if="item.category_id != pageId">
+                            {{ item.alias }}
+                        </NuxtLink>
+                    </li>
+                </ul>
+            </div>
+            <div style="clear: both;"></div>
+        </div>
+    </div>
+    <!-- 广告二 -->
+    <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
+</template>
+
+<script setup>
+//1.页面依赖 start ---------------------------------------->
+import { ref, onMounted } from 'vue';
+
+//获得跳转过来的id
+const route = useRoute();
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
+const targetSegment1 = segments[1];
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+
+let articleId;
+let pageId;
+let routeId
+let activeId = parseInt(route.params.id);
+console.log('activeId', activeId);
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+
+if (getRouteId.code == 200) {
+    articleId = getRouteId.data.id;
+    pageId = getRouteId.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//通过导航路径反向查询导航id
+const getRouteId1 = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment1,
+    },
+});
+
+if (getRouteId1.code == 200) {
+    routeId = getRouteId1.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId1.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//面包屑导航
+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.aLIas_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 ---------------------------------------->
+//广告列表
+let adImg1 = ref([]);
+let adImg2 = ref([]);
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+
+//获取页面信息
+const newsDetail = ref({})
+const bottomMenu = ref([]);
+
+async function getPageMenu() {
+    const mkdata = await requestDataPromise('/web/getWebsiteBookInfo', {
+        method: 'GET',
+        query: {
+            'id': activeId,
+        },
+    });
+    bottomMenu.value = mkdata.data.category;
+    newsDetail.value = mkdata.data.books;
+}
+getPageMenu();
+//2.页面数据 end ---------------------------------------->
+
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteFootInfo', {
+    method: 'GET',
+    query: {},
+});
+
+let seoTitle = setData.data.website_head.title;
+let seoDescription = setData.data.website_head.description;
+let seoKeywords = setData.data.website_head.keywords;
+let seoSuffix = setData.data.website_head.suffix;
+let seoName = setData.data.website_head.website_name;
+
+useSeoMeta({
+    title: seoTitle + "_" + seoSuffix,
+    meta: [
+        { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+        { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+    ]
+});
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukanDetail.less';
+</style>

+ 260 - 0
pages/nongfugongxiaoshukanyinxiang/[dir] copy/list-[id].vue

@@ -0,0 +1,260 @@
+<template>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation></HomePageNavigation>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <section class="book_son_right clearfix">
+                    <div class="book_son_right_ul clearfix">
+                        <div class="book_son_right_li clearfix" v-for="(item, index) in newsDetail" :key="index">
+                            <div class="book_son_right_li_img">
+                                <img class="book_son_right_li_img" :src="item.img_url" :title="item.title"
+                                    v-if="item.img_url">
+                            </div>
+                            <div class="book_son_right_li_in clearfix">
+                                <h4 class="book_son_right_li_h4 dot1">{{ item.title }}</h4>
+                                <div class="book_son_right_li_dot3 dot3">
+                                    {{ item.description }}
+                                </div>
+                                <NuxtLink :href="`/${item.pinyin}/${item.id}.html`" class="book_son_right_li_btn"
+                                    :title="item.name">
+                                    查看详情
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+                <!-- 分页器 -->
+                <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 class="innerRight">
+                <div class="rightMenuTitle">
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                </div>
+                <ul>
+                    <li v-for="(item, index) in bottomMenu" :key="index">
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-if="item.category_id == pageId" class="active">
+                            {{ item.alias }}
+                        </NuxtLink>
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-else-if="item.category_id != pageId">
+                            {{ item.alias }}
+                        </NuxtLink>
+                    </li>
+                </ul>
+            </div>
+            <div style="clear: both;"></div>
+        </div>
+    </div>
+    <!-- 广告二 -->
+    <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
+</template>
+
+<script setup>
+//1.页面依赖 start ---------------------------------------->
+import { ElPagination } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+import { ref, onMounted } from 'vue';
+
+//获得跳转过来的id
+const route = useRoute();
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
+const targetSegment1 = segments[1];
+
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+let articleId;
+let pageId;
+let routeId
+let activeId = parseInt(route.params.id);
+console.log('activeId', activeId);
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+
+if (getRouteId.code == 200) {
+    articleId = getRouteId.data.id;
+    pageId = getRouteId.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//通过导航路径反向查询导航id
+const getRouteId1 = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment1,
+    },
+});
+
+if (getRouteId1.code == 200) {
+    routeId = getRouteId1.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId1.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//面包屑导航
+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.aLIas_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 ---------------------------------------->
+//广告列表
+const adList = ref([]);
+let adImg1 = ref([]);
+let adImg2 = ref([]);
+async function getAdData() {
+    const adData = await requestDataPromise('/web/getWebsiteAdvertisement', { method: 'GET', query: { 'ad_tag': 'PAGE' } });
+    adList.value = adData.data;
+    if (adData.code == 200) {
+        for (let item of adData.data) {
+            if (item.ad_tag == 'PAGE_0001') {
+                adImg1.value = item;
+            }
+            if (item.ad_tag == 'PAGE_0002') {
+                adImg2.value = item;
+            }
+        }
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取详情页广告列表")
+        console.log("后端错误反馈:", adData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+getAdData();
+
+const newsDetail = ref({})
+const bottomMenu = ref([]);
+const total = ref(0);//总条数
+const page = ref(1);//当前页码
+const pageSize = ref(10); //每页显示的条数
+
+async function getPageMenu() {
+    const mkdata = await requestDataPromise('/web/getWebsiteBookList', {
+        method: 'GET',
+        query: {
+            'id': pageId,
+            'page': page.value,
+            'pageSize': pageSize.value,
+        },
+    });
+    bottomMenu.value = mkdata.data.category;
+    newsDetail.value = mkdata.data.books;
+    total.value = mkdata.data.count;
+}
+getPageMenu();
+//2.页面数据 end ---------------------------------------->
+
+//3.分页器 start ---------------------------------------->
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    page.value = value;
+    getPageMenu()
+}
+//3.分页器 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteFootInfo', {
+    method: 'GET',
+    query: {},
+});
+
+let seoTitle = setData.data.website_head.title;
+let seoDescription = setData.data.website_head.description;
+let seoKeywords = setData.data.website_head.keywords;
+let seoSuffix = setData.data.website_head.suffix;
+let seoName = setData.data.website_head.website_name;
+
+useSeoMeta({
+    title: seoTitle + "_" + seoSuffix,
+    meta: [
+        { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+        { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+    ]
+});
+//4.设置seo信息 end---------------------------------------->
+
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_list_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_list_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukanList.less';
+</style>

+ 563 - 0
pages/nongfugongxiaoshukanyinxiang/index.html.vue

@@ -0,0 +1,563 @@
+<template>
+    <div class="shukan">
+        <!-- {{ routeId }} -->
+        <HomePageHead></HomePageHead>
+        <HomePageNavigation></HomePageNavigation>
+        <HomeSecondaryHeading_shukan :titleData="pageData" :pinyinid="routeId"></HomeSecondaryHeading_shukan>
+
+        <!-- 三农资讯网-书刊信息snzx_book -->
+        <main class="index_main">
+            <section class="index_2 clearfix">
+                <div class="index_2_left">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a" :href="getLinkPath(pageData[0])" v-if="pageData[0]"
+                                :title="pageData[0].alias" @mouseenter="tabsData1 = 1"
+                                :class="{ book_head_only: tabsData1 == 1 }">
+                                {{ pageData[0].alias }}
+                            </NuxtLink>
+                            <NuxtLink class="book_head_a" :href="getLinkPath(pageData[1])" v-if="pageData[1]"
+                                :title="pageData[1].alias" @mouseenter="tabsData1 = 2"
+                                :class="{ book_head_only: tabsData1 == 2 }">
+                                {{ pageData[1].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[0])"
+                            v-if="pageData[0] && tabsData1 == 1" :title="pageData[0].title">
+                            栏目简介
+                        </NuxtLink>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[1])"
+                            v-if="pageData[1] && tabsData1 == 2" :title="pageData[1].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <!-- 模块1 -->
+                    <div class=" clearfix">
+                        <div class="book_1_img_ul clearfix" v-if="tabsData1 == 1">
+                            <div class="book_1_img_li" v-for="(item, index) in pageData[0].data" :key="index">
+                                <NuxtLink class="book_1_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_1_img_li_img" :src="item.img_url" :alt="item.title">
+                                    <div class="book_1_img_li_right clearfix">
+                                        <div class="book_1_img_li_dot2 dot2">
+                                            {{ item.title }}
+                                        </div>
+                                        <div class="book_1_img_li_btn clearfix">查看详情</div>
+                                    </div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 模块1 end -->
+                    <!-- 模块2 -->
+                    <div class=" clearfix">
+                        <div class="book_1_img_ul clearfix" v-if="tabsData1 == 2">
+                            <div class="book_1_img_li" v-for="(item, index) in pageData[1].data" :key="index">
+                                <NuxtLink class="book_1_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_1_img_li_img" :src="item.img_url" :alt="item.title">
+                                    <div class="book_1_img_li_right clearfix">
+                                        <div class="book_1_img_li_dot2 dot2">
+                                            {{ item.title }}
+                                        </div>
+                                        <div class="book_1_img_li_btn clearfix">查看详情</div>
+                                    </div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 模块2 end -->
+                </div>
+                <!-- 模块3 -->
+                <div class="index_2_right">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[2])"
+                                v-if="pageData[2]" :title="pageData[2].alias">
+                                {{ pageData[2].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[2])" v-if="pageData[2]"
+                            :title="pageData[2].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_num_1_ul clearfix">
+                        <div class="book_num_1_li clearfix" v-for="(item, index) in pageData[2].data" :key="index">
+                            <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <div class="book_num_1_li_tag" @mouseenter="showTabs = index + 1"
+                                    :class="{ num_active: showTabs == index + 1 }">
+                                    {{ index + 1 }}</div>
+                                <img class="book_num_1_li_img" @mouseenter="showTabs = index + 1"
+                                    :class="{ img_active: showTabs == index + 1 }" :src="item.img_url"
+                                    :alt="item.title">
+                                <div class="book_num_1_li_dot1  clearfix" @mouseenter="showTabs = index + 1"
+                                    :class="{ text_active: showTabs == index + 1 }">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块3 end-->
+            </section>
+            <HomeAdvertising :imgurl="adImg1"></HomeAdvertising>
+            <section class="index_3 clearfix">
+                <div class="index_3_left clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a " :href="getLinkPath(pageData[3])" v-if="pageData[3]"
+                                :title="pageData[3].alias" @mouseenter="tabsData2 = 1"
+                                :class="{ book_head_only: tabsData2 == 1 }">
+                                {{ pageData[3].alias }}
+                            </NuxtLink>
+                            <NuxtLink class="book_head_a " :href="getLinkPath(pageData[4])" v-if="pageData[4]"
+                                :title="pageData[4].alias" @mouseenter="tabsData2 = 2"
+                                :class="{ book_head_only: tabsData2 == 2 }">
+                                {{ pageData[4].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[3])"
+                            v-if="pageData[3] && tabsData2 == 1" :title="pageData[3].title">
+                            栏目简介
+                        </NuxtLink>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[4])"
+                            v-if="pageData[4] && tabsData2 == 2" :title="pageData[4].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class=" clearfix">
+                        <!-- 模块4  -->
+                        <div class="book_2_img_ul clearfix" v-if="tabsData2 == 1">
+                            <div class="book_2_img_li clearfix" v-for="(item, index) in pageData[3].data" :key="index">
+                                <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_2_img_li_img" :src="item.img_url" title="" alt="">
+                                    <div class="book_2_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                        <!-- 模块4 end  -->
+                        <!-- 模块5  -->
+                        <div class="book_2_img_ul clearfix" v-if="tabsData2 == 2">
+                            <div class="book_2_img_li clearfix" v-for="(item, index) in pageData[4].data" :key="index">
+                                <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_2_img_li_img" :src="item.img_url" :title="item.title">
+                                    <div class="book_2_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                        <!-- 模块5 end  -->
+                    </div>
+                </div>
+                <!-- 文化艺术 -->
+                <div class="index_3_right clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[5])"
+                                v-if="pageData[5]" :title="pageData[5].alias">
+                                {{ pageData[5].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[5])" v-if="pageData[5]"
+                            :title="pageData[5].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_3_img_ul clearfix">
+                        <div class="book_3_img_li clearfix" v-for="(item, index) in pageData[5].data" :key="index">
+                            <NuxtLink class="book_3_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_3_img_li_img" :src="item.img_url" title="" alt="">
+                                <div class="book_3_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="book_2_ul clearfix">
+                        <div class="book_2_li clearfix" v-for="(item, index) in pageData[5].data2" :key="index">
+                            <NuxtLink class="book_2_li_a dot1" :href="getLinkPathDetail(item)" :title="item.title">
+                                {{ item.title }}
+                            </NuxtLink>
+                            <div class="book_2_li_tag">详</div>
+                        </div>
+                    </div>
+                </div>
+                <!-- 文化艺术 -->
+            </section>
+            <HomeAdvertising :imgurl="adImg2"></HomeAdvertising>
+            <section class="index_4 clearfix">
+                <!-- 模块7 -->
+                <div class="index_4_left clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[6])"
+                                v-if="pageData[6]" :title="pageData[6].alias">
+                                {{ pageData[6].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[6])" v-if="pageData[6]"
+                            :title="pageData[6].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_5_img_ul clearfix">
+                        <div class="book_5_img_li clearfix" v-for="(item, index) in pageData[6].data" :key="index">
+                            <NuxtLink class="book_5_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_5_img_li_img" :src="item.img_url" :title="item.title">
+                                <div class="book_5_img_li_right clearfix">
+                                    <div class="book_5_img_li_dot2 dot2">{{ item.title }}</div>
+                                    <div class="book_5_img_li_foot clearfix">
+                                        <span class="book_5_img_li_foot_red">¥</span>
+                                        <span class="book_5_img_li_foot_num">{{ item.price }}</span>
+                                        <span class="book_5_img_li_foot_text">市场价:</span>
+                                        <span class="book_5_img_li_foot_price">¥{{ item.market_price }}</span>
+                                    </div>
+                                </div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块7 end -->
+                <!-- 模块8 -->
+                <div class="index_4_right clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[7])"
+                                v-if="pageData[7]" :title="pageData[7].alias">
+                                {{ pageData[7].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[7])" v-if="pageData[7]"
+                            :title="pageData[7].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_4_img_ul clearfix">
+                        <div class="book_4_img_li clearfix" v-for="(item, index) in pageData[7].data" :key="index">
+                            <NuxtLink class="book_4_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_4_img_li_img" :src="item.img_url" title="" alt="">
+                                <div class="book_4_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="book_3_ul clearfix">
+                        <div class="book_3_li clearfix" v-for="(item, index) in pageData[7].data2" :key="index">
+                            <NuxtLink class="book_3_li_a dot1" :href="getLinkPathDetail(item)" :title="item.title">
+                                {{ item.title }}
+                            </NuxtLink>
+                            <div class="book_3_li_tag">详</div>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块8 end -->
+            </section>
+        </main>
+
+        <!-- 页脚部分 -->
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+<script setup>
+//0.加载页面依赖 start ---------------------------------------->
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+
+//格式化跳转路径 - 标题
+//首页分类栏目标题,不需要考虑外链
+const getLinkPath = (item) => {
+    //return `/${item.url}/1.html`;
+    //return `/newsList/${item.cid}?page=1`;
+    return `/${item.aLIas_pinyin}/list-1.html`;
+}
+//首页跳转到详情,这里需要考虑外链
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/${item.id}.html`;
+    }
+}
+//0.加载页面依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+//let routeId = 11 //排除路径错误可以打开这个
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = numberPart;
+let routeId;
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if (getRouteId.code == 200) {
+    routeId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//1.获得路由id end ---------------------------------------->
+
+//2.页面交互效果 start ---------------------------------------->
+//2.1 新闻图片切换
+const hoverStatus = ref(0)
+const qhPic = function (num) {
+    console.log(num)
+    hoverStatus.value = num;
+}
+
+//2.2 选项卡切换
+let showTabs = ref(1)
+// let qhtabs = function (number) {
+//     console.log(number)
+//     showTabs.value = number
+// }
+
+//2.3 展示广告
+let adImg1 = ref({})
+let adImg2 = ref({})
+let adImg3 = ref({})
+let adImg4 = ref({})
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_category_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_category_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+    //广告3
+    let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0003`
+    const responseAd3 = await fetch(url3, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd3 = await responseAd3.json();
+    adImg3.value = resultAd3.data[0];
+
+    //广告4
+    let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0004`
+    const responseAd4 = await fetch(url4, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd4 = await responseAd4.json();
+    adImg4.value = resultAd4.data[0];
+
+})
+//2.页面交互效果 end ---------------------------------------->
+
+//3.渲染页面数据 start ---------------------------------------->
+//3.1 该页面上所有的导航池 转为动态数据
+const pageCategory = ref([]);
+//3.2 该页面上需要渲染的所有数据
+const pageData = ref([
+    // { id: 0, data: [], data2: [], title: "", cid: "" },
+    // { id: 1, data: [], title: "", cid: "" },
+    // { id: 2, data: [], title: "", cid: "" },
+    // { id: 3, data: [], title: "", cid: "" },
+    // { id: 4, data: [], title: "", cid: "" },
+    // { id: 5, data: [], title: "", cid: "" },
+    // { id: 6, data: [], title: "", cid: "" },
+    // { id: 7, data: [], title: "", cid: "" },
+    // { id: 8, data: [], title: "", cid: "" },
+    // { id: 9, data: [], title: "", cid: "" },
+    // { id: 10, data: [], title: "", cid: "" },
+    // { id: 10, data: [], title: "", cid: "" },
+    // {
+    //     id: 11,
+    //     title: "",
+    //     data: [],
+    //     data1: [],
+    //     data2: [],
+    //     data3: [],
+    //     data4: [],
+    //     category_id1: "",
+    //     category_id2: "",
+    //     category_id3: "",
+    //     category_id4: "",
+    //     title1: "",
+    //     title2: "",
+    //     title3: "",
+    //     title4: "",
+    //     cid: ""
+    // },
+    // { id: 12, data1: [], data2: [], data3: [], cid: "" },
+])
+
+const navSize = ref("");
+const tabsData1 = ref(1);
+const tabsData2 = ref(1);
+
+//3.3 获取所有导航
+try {
+    const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': routeId,
+            'num': 8
+        },
+    });
+    if (navigateData.code == 200) {
+        // 遍历可用的导航池放到页面中
+        for (let index in navigateData.data) {
+            let data = {
+                title: navigateData.data[index].name,
+                cid: navigateData.data[index].category_id,
+                children_count: navigateData.data[index].children_count,
+                alias: navigateData.data[index].alias,
+                aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
+                data: [],
+                data1: [],
+                data2: [],
+                data3: [],
+                data4: [],
+                category_id1: "",
+                category_id2: "",
+                category_id3: "",
+                category_id4: "",
+                title1: "",
+                title2: "",
+                title3: "",
+                title4: ""
+            };
+            if (navigateData.data[index].is_url == 1) {
+                // 处理 URL 的逻辑
+            } else {
+                //每个页面最多8个模块
+                pageData.value.push(data);
+            }
+        }
+        //导航池加载完毕,开始申请模块数据
+        let getJson = [
+            { "parent": routeId + ",0,0", "child": pageData.value[0].cid + ",6,0" },//模块1时政书讯
+            { "parent": routeId + ",0,0", "child": pageData.value[1].cid + ",6,0" },//模块2读书读报
+            { "parent": routeId + ",0,0", "child": pageData.value[2].cid + ",8,0" },//模块3文化艺术
+            { "parent": routeId + ",0,0", "child": pageData.value[3].cid + ",8,0" },//模块4生活百科
+            { "parent": routeId + ",0,0", "child": pageData.value[4].cid + ",8,0" },//模块5养生保健
+            { "parent": routeId + ",0,0", "child": pageData.value[5].cid + ",3,6" },//模块6典集史鉴
+            { "parent": routeId + ",0,0", "child": pageData.value[6].cid + ",3,0" },//模块7党政报刊
+            { "parent": routeId + ",0,0", "child": pageData.value[7].cid + ",3,6" },//模块8涉农报刊
+        ]
+
+        let jsonString = JSON.stringify(getJson);
+        getPageAllData(jsonString);
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:分类页导航池")
+        console.log("后端错误反馈:", navigateData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+} catch (error) {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:分类页导航渲染阶段")
+    console.log("错误:导航池渲染执行接口出错!请检查首页的14的模块的具体执行方法!")
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+
+async function getPageAllData(jsonString) {
+    const mkdata = await requestDataPromise('/web/getWebsiteBook', {
+        method: 'GET',
+        query: {
+            'id': jsonString
+        },
+    });
+
+    if (mkdata.code == 200) {
+        console.log(778899)
+        console.log(mkdata.data)
+        //模块1时政书讯
+        pageData.value[0].data = mkdata.data[0].child.imgnum;
+        //模块2读书读报
+        pageData.value[1].data = mkdata.data[1].child.imgnum;
+        //模块3文化艺术
+        pageData.value[2].data = mkdata.data[2].child.imgnum;
+        //模块4生活百科
+        pageData.value[3].data = mkdata.data[3].child.imgnum;
+        //模块5养生保健
+        pageData.value[4].data = mkdata.data[4].child.imgnum;
+        // 模块6
+        pageData.value[5].data = mkdata.data[5].child.imgnum;
+        pageData.value[5].data2 = mkdata.data[5].child.textnum;
+        //模块7党政报刊
+        pageData.value[6].data = mkdata.data[6].child.imgnum;
+        //模块8涉农报刊
+        pageData.value[7].data = mkdata.data[7].child.imgnum;
+        pageData.value[7].data2 = mkdata.data[7].child.textnum;
+
+    } else {
+        ElMessage.error(mkdata.message)
+    }
+}
+
+//3.渲染页面数据 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': routeId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置分类页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukan.less';
+</style>

+ 288 - 0
pages/shukanyinxiangnfcp/[dir]/[id].vue

@@ -0,0 +1,288 @@
+<template>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation></HomePageNavigation>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <section class="book_son_right clearfix" v-if="newsDetail != ''">
+                    <div class="book_detail_box clearfix">
+                        <div class="book_detail_img_box">
+                            <img class="book_detail_img" :src="newsDetail.img_url" alt="" v-if="newsDetail.img_url">
+                        </div>
+                        <div class="book_detail_right clearfix">
+                            <h4 class="book_detail_right_h4">{{ newsDetail.title }}</h4>
+                            <div class="book_detail_right_title">现售价:</div>
+                            <div class="book_detail_price_box clearfix">
+                                <div class="book_detail_price_box_in clearfix">
+                                    <span class="book_detail_price_red">¥</span>
+                                    <span class="book_detail_price_num"
+                                        v-if="newsDetail.price == '' || newsDetail.price != 0">
+                                        {{ newsDetail.price }}
+                                    </span>
+                                </div>
+                                <span class="book_detail_price_text">市场价:</span>
+                                <span class="book_detail_price_delete"
+                                    v-if="newsDetail.market_price == '' || newsDetail.market_price != 0">
+                                    {{ newsDetail.market_price }}
+                                </span>
+                            </div>
+                            <div class="book_detail_right_ul clearfix">
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">页数:</label>
+                                    <span class="book_detail_right_li_text"
+                                        v-if="newsDetail.page == '' || newsDetail.page != 0">
+                                        {{ newsDetail.page }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">开本:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.format">
+                                        {{ newsDetail.format }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">纸张:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.paper">
+                                        {{ newsDetail.paper }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">包装:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.package">
+                                        {{ newsDetail.package }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">出版社:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.publishing_house">
+                                        {{ newsDetail.publishing_house }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">出版时间:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.publish_time">
+                                        {{ getTime(newsDetail.publish_time, 'year', 1) }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">ISBN:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.ISBN">
+                                        {{ newsDetail.ISBN }}
+                                    </span>
+                                </div>
+                                <div class="book_detail_right_li clearfix">
+                                    <label class="book_detail_right_li_label">国内统一刊号CN:</label>
+                                    <span class="book_detail_right_li_text" v-if="newsDetail.CN">
+                                        {{ newsDetail.CN }}
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="book_detail_head_box clearfix">
+                        <div class="book_detail_head_left">
+                            <a class="book_detail_head_a book_detail_head_only" href="" title="">内容简介</a>
+                        </div>
+                    </div>
+                    <!-- 内容简介 -->
+                    <article class="book_detail_article" v-html="newsDetail.detail"></article>
+                    <!-- 内容简介 -->
+                </section>
+                <!-- 免责声明: -->
+                <!-- v-if="newsDetail.copyfrom != '本网'" -->
+                <div class="disclaimer" v-if="newsDetail.source != '本网'">
+                    <p>原文链接:{{ newsDetail.source_url }}</p>
+                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
+                </div>
+            </div>
+            <div class="innerRight">
+                <div class="rightMenuTitle">
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                </div>
+                <ul>
+                    <li v-for="(item, index) in bottomMenu" :key="index">
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-if="item.category_id == pageId" class="active">
+                            {{ item.alias }}
+                        </NuxtLink>
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-else-if="item.category_id != pageId">
+                            {{ item.alias }}
+                        </NuxtLink>
+                    </li>
+                </ul>
+            </div>
+            <div style="clear: both;"></div>
+        </div>
+    </div>
+    <!-- 广告二 -->
+    <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
+</template>
+
+<script setup>
+//1.页面依赖 start ---------------------------------------->
+import { ref, onMounted } from 'vue';
+
+//获得跳转过来的id
+const route = useRoute();
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
+const targetSegment1 = segments[1];
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+
+let articleId;
+let pageId;
+let routeId
+let activeId = parseInt(route.params.id);
+console.log('activeId', activeId);
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+
+if (getRouteId.code == 200) {
+    articleId = getRouteId.data.id;
+    pageId = getRouteId.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//通过导航路径反向查询导航id
+const getRouteId1 = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment1,
+    },
+});
+
+if (getRouteId1.code == 200) {
+    routeId = getRouteId1.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId1.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//面包屑导航
+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.aLIas_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 ---------------------------------------->
+//广告列表
+let adImg1 = ref([]);
+let adImg2 = ref([]);
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_detail_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+
+//获取页面信息
+const newsDetail = ref({})
+const bottomMenu = ref([]);
+
+async function getPageMenu() {
+    const mkdata = await requestDataPromise('/web/getWebsiteBookInfo', {
+        method: 'GET',
+        query: {
+            'id': activeId,
+        },
+    });
+    bottomMenu.value = mkdata.data.category;
+    newsDetail.value = mkdata.data.books;
+}
+getPageMenu();
+//2.页面数据 end ---------------------------------------->
+
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteFootInfo', {
+    method: 'GET',
+    query: {},
+});
+
+let seoTitle = setData.data.website_head.title;
+let seoDescription = setData.data.website_head.description;
+let seoKeywords = setData.data.website_head.keywords;
+let seoSuffix = setData.data.website_head.suffix;
+let seoName = setData.data.website_head.website_name;
+
+useSeoMeta({
+    title: seoTitle + "_" + seoSuffix,
+    meta: [
+        { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+        { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+    ]
+});
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukanDetail.less';
+</style>

+ 260 - 0
pages/shukanyinxiangnfcp/[dir]/list-[id].vue

@@ -0,0 +1,260 @@
+<template>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation></HomePageNavigation>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <section class="book_son_right clearfix">
+                    <div class="book_son_right_ul clearfix">
+                        <div class="book_son_right_li clearfix" v-for="(item, index) in newsDetail" :key="index">
+                            <div class="book_son_right_li_img">
+                                <img class="book_son_right_li_img" :src="item.img_url" :title="item.title"
+                                    v-if="item.img_url">
+                            </div>
+                            <div class="book_son_right_li_in clearfix">
+                                <h4 class="book_son_right_li_h4 dot1">{{ item.title }}</h4>
+                                <div class="book_son_right_li_dot3 dot3">
+                                    {{ item.description }}
+                                </div>
+                                <NuxtLink :href="`/${item.pinyin}/${item.id}.html`" class="book_son_right_li_btn"
+                                    :title="item.name">
+                                    查看详情
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+                <!-- 分页器 -->
+                <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 class="innerRight">
+                <div class="rightMenuTitle">
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                </div>
+                <ul>
+                    <li v-for="(item, index) in bottomMenu" :key="index">
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-if="item.category_id == pageId" class="active">
+                            {{ item.alias }}
+                        </NuxtLink>
+                        <NuxtLink :to="`/${item.pinyin}/list-1.html`" :title="item.name"
+                            v-else-if="item.category_id != pageId">
+                            {{ item.alias }}
+                        </NuxtLink>
+                    </li>
+                </ul>
+            </div>
+            <div style="clear: both;"></div>
+        </div>
+    </div>
+    <!-- 广告二 -->
+    <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
+</template>
+
+<script setup>
+//1.页面依赖 start ---------------------------------------->
+import { ElPagination } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+import { ref, onMounted } from 'vue';
+
+//获得跳转过来的id
+const route = useRoute();
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
+const targetSegment1 = segments[1];
+
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+let articleId;
+let pageId;
+let routeId
+let activeId = parseInt(route.params.id);
+console.log('activeId', activeId);
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+
+if (getRouteId.code == 200) {
+    articleId = getRouteId.data.id;
+    pageId = getRouteId.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//通过导航路径反向查询导航id
+const getRouteId1 = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment1,
+    },
+});
+
+if (getRouteId1.code == 200) {
+    routeId = getRouteId1.data.category_id;
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId1.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//面包屑导航
+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.aLIas_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 ---------------------------------------->
+//广告列表
+const adList = ref([]);
+let adImg1 = ref([]);
+let adImg2 = ref([]);
+async function getAdData() {
+    const adData = await requestDataPromise('/web/getWebsiteAdvertisement', { method: 'GET', query: { 'ad_tag': 'PAGE' } });
+    adList.value = adData.data;
+    if (adData.code == 200) {
+        for (let item of adData.data) {
+            if (item.ad_tag == 'PAGE_0001') {
+                adImg1.value = item;
+            }
+            if (item.ad_tag == 'PAGE_0002') {
+                adImg2.value = item;
+            }
+        }
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取详情页广告列表")
+        console.log("后端错误反馈:", adData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+getAdData();
+
+const newsDetail = ref({})
+const bottomMenu = ref([]);
+const total = ref(0);//总条数
+const page = ref(1);//当前页码
+const pageSize = ref(10); //每页显示的条数
+
+async function getPageMenu() {
+    const mkdata = await requestDataPromise('/web/getWebsiteBookList', {
+        method: 'GET',
+        query: {
+            'id': pageId,
+            'page': page.value,
+            'pageSize': pageSize.value,
+        },
+    });
+    bottomMenu.value = mkdata.data.category;
+    newsDetail.value = mkdata.data.books;
+    total.value = mkdata.data.count;
+}
+getPageMenu();
+//2.页面数据 end ---------------------------------------->
+
+//3.分页器 start ---------------------------------------->
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    page.value = value;
+    getPageMenu()
+}
+//3.分页器 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteFootInfo', {
+    method: 'GET',
+    query: {},
+});
+
+let seoTitle = setData.data.website_head.title;
+let seoDescription = setData.data.website_head.description;
+let seoKeywords = setData.data.website_head.keywords;
+let seoSuffix = setData.data.website_head.suffix;
+let seoName = setData.data.website_head.website_name;
+
+useSeoMeta({
+    title: seoTitle + "_" + seoSuffix,
+    meta: [
+        { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+        { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+    ]
+});
+//4.设置seo信息 end---------------------------------------->
+
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_list_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_list_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+})
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukanList.less';
+</style>

+ 563 - 0
pages/shukanyinxiangnfcp/index.html.vue

@@ -0,0 +1,563 @@
+<template>
+    <div class="shukan">
+        <!-- {{ routeId }} -->
+        <HomePageHead></HomePageHead>
+        <HomePageNavigation></HomePageNavigation>
+        <HomeSecondaryHeading_shukan :titleData="pageData" :pinyinid="routeId"></HomeSecondaryHeading_shukan>
+
+        <!-- 三农资讯网-书刊信息snzx_book -->
+        <main class="index_main">
+            <section class="index_2 clearfix">
+                <div class="index_2_left">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a" :href="getLinkPath(pageData[0])" v-if="pageData[0]"
+                                :title="pageData[0].alias" @mouseenter="tabsData1 = 1"
+                                :class="{ book_head_only: tabsData1 == 1 }">
+                                {{ pageData[0].alias }}
+                            </NuxtLink>
+                            <NuxtLink class="book_head_a" :href="getLinkPath(pageData[1])" v-if="pageData[1]"
+                                :title="pageData[1].alias" @mouseenter="tabsData1 = 2"
+                                :class="{ book_head_only: tabsData1 == 2 }">
+                                {{ pageData[1].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[0])"
+                            v-if="pageData[0] && tabsData1 == 1" :title="pageData[0].title">
+                            栏目简介
+                        </NuxtLink>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[1])"
+                            v-if="pageData[1] && tabsData1 == 2" :title="pageData[1].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <!-- 模块1 -->
+                    <div class=" clearfix">
+                        <div class="book_1_img_ul clearfix" v-if="tabsData1 == 1">
+                            <div class="book_1_img_li" v-for="(item, index) in pageData[0].data" :key="index">
+                                <NuxtLink class="book_1_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_1_img_li_img" :src="item.img_url" :alt="item.title">
+                                    <div class="book_1_img_li_right clearfix">
+                                        <div class="book_1_img_li_dot2 dot2">
+                                            {{ item.title }}
+                                        </div>
+                                        <div class="book_1_img_li_btn clearfix">查看详情</div>
+                                    </div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 模块1 end -->
+                    <!-- 模块2 -->
+                    <div class=" clearfix">
+                        <div class="book_1_img_ul clearfix" v-if="tabsData1 == 2">
+                            <div class="book_1_img_li" v-for="(item, index) in pageData[1].data" :key="index">
+                                <NuxtLink class="book_1_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_1_img_li_img" :src="item.img_url" :alt="item.title">
+                                    <div class="book_1_img_li_right clearfix">
+                                        <div class="book_1_img_li_dot2 dot2">
+                                            {{ item.title }}
+                                        </div>
+                                        <div class="book_1_img_li_btn clearfix">查看详情</div>
+                                    </div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 模块2 end -->
+                </div>
+                <!-- 模块3 -->
+                <div class="index_2_right">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[2])"
+                                v-if="pageData[2]" :title="pageData[2].alias">
+                                {{ pageData[2].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[2])" v-if="pageData[2]"
+                            :title="pageData[2].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_num_1_ul clearfix">
+                        <div class="book_num_1_li clearfix" v-for="(item, index) in pageData[2].data" :key="index">
+                            <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <div class="book_num_1_li_tag" @mouseenter="showTabs = index + 1"
+                                    :class="{ num_active: showTabs == index + 1 }">
+                                    {{ index + 1 }}</div>
+                                <img class="book_num_1_li_img" @mouseenter="showTabs = index + 1"
+                                    :class="{ img_active: showTabs == index + 1 }" :src="item.img_url"
+                                    :alt="item.title">
+                                <div class="book_num_1_li_dot1  clearfix" @mouseenter="showTabs = index + 1"
+                                    :class="{ text_active: showTabs == index + 1 }">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块3 end-->
+            </section>
+            <HomeAdvertising :imgurl="adImg1"></HomeAdvertising>
+            <section class="index_3 clearfix">
+                <div class="index_3_left clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a " :href="getLinkPath(pageData[3])" v-if="pageData[3]"
+                                :title="pageData[3].alias" @mouseenter="tabsData2 = 1"
+                                :class="{ book_head_only: tabsData2 == 1 }">
+                                {{ pageData[3].alias }}
+                            </NuxtLink>
+                            <NuxtLink class="book_head_a " :href="getLinkPath(pageData[4])" v-if="pageData[4]"
+                                :title="pageData[4].alias" @mouseenter="tabsData2 = 2"
+                                :class="{ book_head_only: tabsData2 == 2 }">
+                                {{ pageData[4].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[3])"
+                            v-if="pageData[3] && tabsData2 == 1" :title="pageData[3].title">
+                            栏目简介
+                        </NuxtLink>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[4])"
+                            v-if="pageData[4] && tabsData2 == 2" :title="pageData[4].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class=" clearfix">
+                        <!-- 模块4  -->
+                        <div class="book_2_img_ul clearfix" v-if="tabsData2 == 1">
+                            <div class="book_2_img_li clearfix" v-for="(item, index) in pageData[3].data" :key="index">
+                                <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_2_img_li_img" :src="item.img_url" title="" alt="">
+                                    <div class="book_2_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                        <!-- 模块4 end  -->
+                        <!-- 模块5  -->
+                        <div class="book_2_img_ul clearfix" v-if="tabsData2 == 2">
+                            <div class="book_2_img_li clearfix" v-for="(item, index) in pageData[4].data" :key="index">
+                                <NuxtLink class="book_num_1_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                    <img class="book_2_img_li_img" :src="item.img_url" :title="item.title">
+                                    <div class="book_2_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                                </NuxtLink>
+                            </div>
+                        </div>
+                        <!-- 模块5 end  -->
+                    </div>
+                </div>
+                <!-- 文化艺术 -->
+                <div class="index_3_right clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[5])"
+                                v-if="pageData[5]" :title="pageData[5].alias">
+                                {{ pageData[5].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[5])" v-if="pageData[5]"
+                            :title="pageData[5].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_3_img_ul clearfix">
+                        <div class="book_3_img_li clearfix" v-for="(item, index) in pageData[5].data" :key="index">
+                            <NuxtLink class="book_3_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_3_img_li_img" :src="item.img_url" title="" alt="">
+                                <div class="book_3_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="book_2_ul clearfix">
+                        <div class="book_2_li clearfix" v-for="(item, index) in pageData[5].data2" :key="index">
+                            <NuxtLink class="book_2_li_a dot1" :href="getLinkPathDetail(item)" :title="item.title">
+                                {{ item.title }}
+                            </NuxtLink>
+                            <div class="book_2_li_tag">详</div>
+                        </div>
+                    </div>
+                </div>
+                <!-- 文化艺术 -->
+            </section>
+            <HomeAdvertising :imgurl="adImg2"></HomeAdvertising>
+            <section class="index_4 clearfix">
+                <!-- 模块7 -->
+                <div class="index_4_left clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[6])"
+                                v-if="pageData[6]" :title="pageData[6].alias">
+                                {{ pageData[6].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[6])" v-if="pageData[6]"
+                            :title="pageData[6].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_5_img_ul clearfix">
+                        <div class="book_5_img_li clearfix" v-for="(item, index) in pageData[6].data" :key="index">
+                            <NuxtLink class="book_5_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_5_img_li_img" :src="item.img_url" :title="item.title">
+                                <div class="book_5_img_li_right clearfix">
+                                    <div class="book_5_img_li_dot2 dot2">{{ item.title }}</div>
+                                    <div class="book_5_img_li_foot clearfix">
+                                        <span class="book_5_img_li_foot_red">¥</span>
+                                        <span class="book_5_img_li_foot_num">{{ item.price }}</span>
+                                        <span class="book_5_img_li_foot_text">市场价:</span>
+                                        <span class="book_5_img_li_foot_price">¥{{ item.market_price }}</span>
+                                    </div>
+                                </div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块7 end -->
+                <!-- 模块8 -->
+                <div class="index_4_right clearfix">
+                    <div class="book_head_box clearfix">
+                        <div class="book_head_left">
+                            <NuxtLink class="book_head_a book_head_only" :href="getLinkPath(pageData[7])"
+                                v-if="pageData[7]" :title="pageData[7].alias">
+                                {{ pageData[7].alias }}
+                            </NuxtLink>
+                        </div>
+                        <NuxtLink class="book_head_a_more" :href="getLinkPath(pageData[7])" v-if="pageData[7]"
+                            :title="pageData[7].title">
+                            栏目简介
+                        </NuxtLink>
+                    </div>
+                    <div class="book_4_img_ul clearfix">
+                        <div class="book_4_img_li clearfix" v-for="(item, index) in pageData[7].data" :key="index">
+                            <NuxtLink class="book_4_img_li_a" :href="getLinkPathDetail(item)" :title="item.title">
+                                <img class="book_4_img_li_img" :src="item.img_url" title="" alt="">
+                                <div class="book_4_img_li_dot1 dot1 clearfix">{{ item.title }}</div>
+                            </NuxtLink>
+                        </div>
+                    </div>
+                    <div class="book_3_ul clearfix">
+                        <div class="book_3_li clearfix" v-for="(item, index) in pageData[7].data2" :key="index">
+                            <NuxtLink class="book_3_li_a dot1" :href="getLinkPathDetail(item)" :title="item.title">
+                                {{ item.title }}
+                            </NuxtLink>
+                            <div class="book_3_li_tag">详</div>
+                        </div>
+                    </div>
+                </div>
+                <!-- 模块8 end -->
+            </section>
+        </main>
+
+        <!-- 页脚部分 -->
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+<script setup>
+//0.加载页面依赖 start ---------------------------------------->
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+
+//格式化跳转路径 - 标题
+//首页分类栏目标题,不需要考虑外链
+const getLinkPath = (item) => {
+    //return `/${item.url}/1.html`;
+    //return `/newsList/${item.cid}?page=1`;
+    return `/${item.aLIas_pinyin}/list-1.html`;
+}
+//首页跳转到详情,这里需要考虑外链
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/${item.id}.html`;
+    }
+}
+//0.加载页面依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/');
+const targetSegment = segments[1];
+//let routeId = 11 //排除路径错误可以打开这个
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = numberPart;
+let routeId;
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if (getRouteId.code == 200) {
+    routeId = getRouteId.data.category_id
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:", getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//1.获得路由id end ---------------------------------------->
+
+//2.页面交互效果 start ---------------------------------------->
+//2.1 新闻图片切换
+const hoverStatus = ref(0)
+const qhPic = function (num) {
+    console.log(num)
+    hoverStatus.value = num;
+}
+
+//2.2 选项卡切换
+let showTabs = ref(1)
+// let qhtabs = function (number) {
+//     console.log(number)
+//     showTabs.value = number
+// }
+
+//2.3 展示广告
+let adImg1 = ref({})
+let adImg2 = ref({})
+let adImg3 = ref({})
+let adImg4 = ref({})
+onMounted(async () => {
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_category_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nfcpgxw_category_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+    //广告3
+    let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0003`
+    const responseAd3 = await fetch(url3, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd3 = await responseAd3.json();
+    adImg3.value = resultAd3.data[0];
+
+    //广告4
+    let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nmgw_category_0004`
+    const responseAd4 = await fetch(url4, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd4 = await responseAd4.json();
+    adImg4.value = resultAd4.data[0];
+
+})
+//2.页面交互效果 end ---------------------------------------->
+
+//3.渲染页面数据 start ---------------------------------------->
+//3.1 该页面上所有的导航池 转为动态数据
+const pageCategory = ref([]);
+//3.2 该页面上需要渲染的所有数据
+const pageData = ref([
+    // { id: 0, data: [], data2: [], title: "", cid: "" },
+    // { id: 1, data: [], title: "", cid: "" },
+    // { id: 2, data: [], title: "", cid: "" },
+    // { id: 3, data: [], title: "", cid: "" },
+    // { id: 4, data: [], title: "", cid: "" },
+    // { id: 5, data: [], title: "", cid: "" },
+    // { id: 6, data: [], title: "", cid: "" },
+    // { id: 7, data: [], title: "", cid: "" },
+    // { id: 8, data: [], title: "", cid: "" },
+    // { id: 9, data: [], title: "", cid: "" },
+    // { id: 10, data: [], title: "", cid: "" },
+    // { id: 10, data: [], title: "", cid: "" },
+    // {
+    //     id: 11,
+    //     title: "",
+    //     data: [],
+    //     data1: [],
+    //     data2: [],
+    //     data3: [],
+    //     data4: [],
+    //     category_id1: "",
+    //     category_id2: "",
+    //     category_id3: "",
+    //     category_id4: "",
+    //     title1: "",
+    //     title2: "",
+    //     title3: "",
+    //     title4: "",
+    //     cid: ""
+    // },
+    // { id: 12, data1: [], data2: [], data3: [], cid: "" },
+])
+
+const navSize = ref("");
+const tabsData1 = ref(1);
+const tabsData2 = ref(1);
+
+//3.3 获取所有导航
+try {
+    const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': routeId,
+            'num': 8
+        },
+    });
+    if (navigateData.code == 200) {
+        // 遍历可用的导航池放到页面中
+        for (let index in navigateData.data) {
+            let data = {
+                title: navigateData.data[index].name,
+                cid: navigateData.data[index].category_id,
+                children_count: navigateData.data[index].children_count,
+                alias: navigateData.data[index].alias,
+                aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
+                data: [],
+                data1: [],
+                data2: [],
+                data3: [],
+                data4: [],
+                category_id1: "",
+                category_id2: "",
+                category_id3: "",
+                category_id4: "",
+                title1: "",
+                title2: "",
+                title3: "",
+                title4: ""
+            };
+            if (navigateData.data[index].is_url == 1) {
+                // 处理 URL 的逻辑
+            } else {
+                //每个页面最多8个模块
+                pageData.value.push(data);
+            }
+        }
+        //导航池加载完毕,开始申请模块数据
+        let getJson = [
+            { "parent": routeId + ",0,0", "child": pageData.value[0].cid + ",6,0" },//模块1时政书讯
+            { "parent": routeId + ",0,0", "child": pageData.value[1].cid + ",6,0" },//模块2读书读报
+            { "parent": routeId + ",0,0", "child": pageData.value[2].cid + ",8,0" },//模块3文化艺术
+            { "parent": routeId + ",0,0", "child": pageData.value[3].cid + ",8,0" },//模块4生活百科
+            { "parent": routeId + ",0,0", "child": pageData.value[4].cid + ",8,0" },//模块5养生保健
+            { "parent": routeId + ",0,0", "child": pageData.value[5].cid + ",3,6" },//模块6典集史鉴
+            { "parent": routeId + ",0,0", "child": pageData.value[6].cid + ",3,0" },//模块7党政报刊
+            { "parent": routeId + ",0,0", "child": pageData.value[7].cid + ",3,6" },//模块8涉农报刊
+        ]
+
+        let jsonString = JSON.stringify(getJson);
+        getPageAllData(jsonString);
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:分类页导航池")
+        console.log("后端错误反馈:", navigateData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+} catch (error) {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:分类页导航渲染阶段")
+    console.log("错误:导航池渲染执行接口出错!请检查首页的14的模块的具体执行方法!")
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+
+async function getPageAllData(jsonString) {
+    const mkdata = await requestDataPromise('/web/getWebsiteBook', {
+        method: 'GET',
+        query: {
+            'id': jsonString
+        },
+    });
+
+    if (mkdata.code == 200) {
+        console.log(778899)
+        console.log(mkdata.data)
+        //模块1时政书讯
+        pageData.value[0].data = mkdata.data[0].child.imgnum;
+        //模块2读书读报
+        pageData.value[1].data = mkdata.data[1].child.imgnum;
+        //模块3文化艺术
+        pageData.value[2].data = mkdata.data[2].child.imgnum;
+        //模块4生活百科
+        pageData.value[3].data = mkdata.data[3].child.imgnum;
+        //模块5养生保健
+        pageData.value[4].data = mkdata.data[4].child.imgnum;
+        // 模块6
+        pageData.value[5].data = mkdata.data[5].child.imgnum;
+        pageData.value[5].data2 = mkdata.data[5].child.textnum;
+        //模块7党政报刊
+        pageData.value[6].data = mkdata.data[6].child.imgnum;
+        //模块8涉农报刊
+        pageData.value[7].data = mkdata.data[7].child.imgnum;
+        pageData.value[7].data2 = mkdata.data[7].child.textnum;
+
+    } else {
+        ElMessage.error(mkdata.message)
+    }
+}
+
+//3.渲染页面数据 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': routeId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置分类页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import '@/assets/css/shukan.less';
+</style>

+ 1 - 1
plugins/category.ts

@@ -30,7 +30,7 @@ const navPre: number[] = [
 
 
 export default defineNuxtPlugin((nuxtApp) => {
 export default defineNuxtPlugin((nuxtApp) => {
     //master 环境
     //master 环境
-    //nuxtApp.provide('pageNav', navMaster)
+    // nuxtApp.provide('pageNav', navMaster)
     //pre 环境
     //pre 环境
     nuxtApp.provide('pageNav', navPre)
     nuxtApp.provide('pageNav', navPre)
 })
 })

+ 5 - 5
plugins/globals.ts

@@ -7,10 +7,10 @@ export default defineNuxtPlugin((nuxtApp) => {
   nuxtApp.provide('userUrl', 'http://localhost:3005')
   nuxtApp.provide('userUrl', 'http://localhost:3005')
 
 
   // 农副产品供销网正式环境
   // 农副产品供销网正式环境
-//   nuxtApp.provide('webUrl', 'https://flzxw.bjzxtw.org.cn')
-//   nuxtApp.provide('CwebUrl', 'http://nw.nfcpgx.org.cn')
-//   nuxtApp.provide('BwebUrl', 'https://admin.bjzxtw.org.cn')
-//   nuxtApp.provide('LoginWebUrl', 'http://admin.bjzxtw.org.cn/adminapi')
-//   nuxtApp.provide('userUrl', 'http://localhost:3005')
+  // nuxtApp.provide('webUrl', 'https://flzxw.bjzxtw.org.cn')
+  // nuxtApp.provide('CwebUrl', 'http://nw.nfcpgx.org.cn')
+  // nuxtApp.provide('BwebUrl', 'https://admin.bjzxtw.org.cn')
+  // nuxtApp.provide('LoginWebUrl', 'http://admin.bjzxtw.org.cn/adminapi')
+  // nuxtApp.provide('userUrl', 'http://localhost:3005')
 
 
 })
 })

BIN=BIN
public/index/navtitle.png