Jing 2 өдөр өмнө
parent
commit
a66bed8981

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

@@ -13,6 +13,7 @@ interface _GlobalComponents {
     'HomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'HomePagination': typeof import("../components/home/Pagination.vue")['default']
     'HomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
+    'HomeSecondaryHeadingShukan': typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
     'HomeSlider': typeof import("../components/home/Slider.vue")['default']
     'HomeTopTen': typeof import("../components/home/TopTen.vue")['default']
     'HomeFoot': typeof import("../components/home/foot.vue")['default']
@@ -54,6 +55,7 @@ interface _GlobalComponents {
     'LazyHomePageMessage': typeof import("../components/home/PageMessage.vue")['default']
     'LazyHomePagination': typeof import("../components/home/Pagination.vue")['default']
     'LazyHomeSecondaryHeading': typeof import("../components/home/SecondaryHeading.vue")['default']
+    'LazyHomeSecondaryHeadingShukan': typeof import("../components/home/SecondaryHeading_shukan.vue")['default']
     'LazyHomeSlider': typeof import("../components/home/Slider.vue")['default']
     'LazyHomeTopTen': typeof import("../components/home/TopTen.vue")['default']
     'LazyHomeFoot': typeof import("../components/home/foot.vue")['default']
@@ -101,6 +103,7 @@ export const HomeMoreService: typeof import("../components/home/MoreService.vue"
 export const HomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const HomePagination: typeof import("../components/home/Pagination.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 HomeSlider: typeof import("../components/home/Slider.vue")['default']
 export const HomeTopTen: typeof import("../components/home/TopTen.vue")['default']
 export const HomeFoot: typeof import("../components/home/foot.vue")['default']
@@ -142,6 +145,7 @@ export const LazyHomeMoreService: typeof import("../components/home/MoreService.
 export const LazyHomePageMessage: typeof import("../components/home/PageMessage.vue")['default']
 export const LazyHomePagination: typeof import("../components/home/Pagination.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 LazyHomeSlider: typeof import("../components/home/Slider.vue")['default']
 export const LazyHomeTopTen: typeof import("../components/home/TopTen.vue")['default']
 export const LazyHomeFoot: typeof import("../components/home/foot.vue")['default']

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

@@ -1 +1 @@
-{"id":"59a3c18d-46f3-44d0-a614-38bdb527a102","timestamp":1745810460715}
+{"id":"e7d0b7c7-565e-498c-81fd-919f10e85ade","timestamp":1746692516941}

+ 0 - 1
.nuxt/manifest/meta/59a3c18d-46f3-44d0-a614-38bdb527a102.json

@@ -1 +0,0 @@
-{"id":"59a3c18d-46f3-44d0-a614-38bdb527a102","timestamp":1745810460715,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 1 - 0
.nuxt/manifest/meta/e7d0b7c7-565e-498c-81fd-919f10e85ade.json

@@ -0,0 +1 @@
+{"id":"e7d0b7c7-565e-498c-81fd-919f10e85ade","timestamp":1746692516941,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 1 - 1
.nuxt/tsconfig.json

@@ -102,7 +102,7 @@
         "./imports"
       ],
       "#app-manifest": [
-        "./manifest/meta/59a3c18d-46f3-44d0-a614-38bdb527a102.json"
+        "./manifest/meta/e7d0b7c7-565e-498c-81fd-919f10e85ade.json"
       ],
       "#components": [
         "./components"

+ 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: #49A769;
+    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: #49A769;
+}
+
+.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: #49A769;
+        font-weight: bold;
+        font-size: 22px;
+        border-bottom: solid 3px #49A769;
+    }
+
+    .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: #49A769;
+    }
+
+    .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: #49A769;
+    }
+
+    .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 #49A769;
+        margin-top: 74px;
+        height: 34px;
+        line-height: 34px;
+        color: #49A769;
+        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: #49A769;
+    }
+
+    .book_num_1_li_a:hover .book_num_1_li_dot1 {
+        color: #49A769;
+    }
+
+    //鼠标移入后的效果
+    .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: #49A769;
+}
+
+.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: #49A769;
+    }
+}
+
+.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: #49A769;
+        font-size: 14px;
+        background: #edf7f0;
+        margin-top: 30px;
+        text-align: center;
+    }
+
+    .book_2_li_a:hover {
+        color: #49A769;
+    }
+
+    .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: #49A769;
+        font-size: 14px;
+        background: #edf7f0;
+        margin-top: 30px;
+        text-align: center;
+    }
+
+    .book_3_li_a:hover {
+        color: #49A769;
+    }
+
+    .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: #49A769;
+    }
+
+}
+
+.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: #49A769;
+    }
+
+    .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) {}

+ 390 - 0
assets/css/shukanDetail.less

@@ -0,0 +1,390 @@
+.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/16.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 #028E21;
+                }
+
+                .book_son_left_li_only {
+                    border: solid 1px #028E21;
+                }
+            }
+
+            /* 三农资讯网-书刊信息-详情 */
+            .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: #49A769;
+                    font-weight: bold;
+                    font-size: 22px;
+                    border-bottom: solid 3px #49A769;
+                }
+            }
+
+            .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("http://img.bjzxtw.org.cn/master/bjzxtw/public/special/projectMoreTitle.png") no-repeat;
+                margin-bottom: 30px;
+                a{
+                    color: #fff;
+                }
+            }
+
+            ul {
+                li {
+                    a {
+                        border-left: 5px solid #028E21;
+                        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 #028E21;
+                background: #fff;
+            }
+        }
+    }
+}

+ 317 - 0
assets/css/shukanList.less

@@ -0,0 +1,317 @@
+.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 #028E21;
+                    text-align: center;
+                    color: #333;
+                    font-size: 20px;
+                }
+
+                .book_son_left_li_only {
+                    border: solid 1px #028E21;
+                }
+            }
+
+            .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 #49A769;
+                    margin-top: 24px;
+                    height: 34px;
+                    line-height: 34px;
+                    color: #49A769;
+                    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: #49A769;
+                }
+
+                .book_son_right_li:hover .book_son_right_li_h4 {
+                    color: #49A769;
+                }
+
+                .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("http://img.bjzxtw.org.cn/master/bjzxtw/public/special/projectMoreTitle.png") no-repeat;
+                margin-bottom: 30px;
+                a{
+                    color: #fff;
+                }
+            }
+
+            ul {
+                li {
+                    a {
+                        border-left: 5px solid #028E21;
+                        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 #028E21;
+                background: #fff;
+            }
+        }
+    }
+}
+
+.pagination {
+    width: 100%;
+    height: 34px;
+    // margin-left: 141px;
+    display: flex;
+    justify-content: center;
+    margin-top: 60px;
+
+    // 鼠标移入后字体颜色
+    .el-pagination::v-deep :hover {
+        color: #139609;
+    }
+
+    .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: #028e21;
+        color: #fff;
+    }
+
+
+}

+ 162 - 0
components/home/SecondaryHeading_shukan.vue

@@ -0,0 +1,162 @@
+<template>
+    <div class="sannongzhichuang">
+        <div class="inner">
+            <h2>
+                {{ title }}
+                <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
+            </h2>
+            <div class="introduction">
+                <strong>频道介绍</strong>
+                <div v-for="(item, index) in titleData">
+                    <span v-if="index <= 7">
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html` }">{{ item.alias }}</NuxtLink>
+                    </span>
+                    <b v-else></b>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script setup>
+//1.设置组件数据 start---------------------------------------->
+//子导航
+const props = defineProps({
+    titleData: Array,
+    pinyinid: Number
+});
+//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>
+// 三农之窗
+.sannongzhichuang {
+    margin: 30px 0 40px;
+
+    .inner {
+        width: 1200px;
+        height: 67px;
+        position: relative;
+    }
+
+    h2 {
+        display: inline-block;
+        //background-image: url("../../public/image/bg1.png");
+        background: #139602;
+        width: 156px;
+        height: 43px;
+        padding: 14px 31px 10px 25px;
+        font-family: STXingkai, STXingkai;
+        font-weight: 400;
+        font-size: 39px;
+        color: #FFFFFF;
+        line-height: 46px;
+        text-align: center;
+        font-style: normal;
+        text-transform: none;
+        -webkit-text-stroke: 1px #3C6C47;
+        position: absolute;
+        top: 0;
+        left: 0;
+        z-index: 99;
+
+        em {
+            position: absolute;
+            top: -16px;
+            right: -12px;
+            color: #185410;
+            display: inline-block;
+            width: 13px;
+            height: 13px;
+        }
+    }
+
+    div.introduction {
+        display: inline-block;
+        width: 1003px;
+        height: 56px;
+        line-height: 56px;
+        background-color: #fafafa;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+        display: flex;
+
+        >strong:first-child {
+            margin-left: 40px;
+            display: inline-block;
+            vertical-align: middle;
+            width: 32px;
+            height: 36px;
+            padding: 3px 7px;
+            border: 0.5px solid #129502;
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: bold;
+            font-size: 14px;
+            color: #139602;
+            line-height: 18px;
+            text-align: center;
+            font-style: normal;
+            text-transform: none;
+
+        }
+
+        div {
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+
+            >span {
+                width: 64px;
+                height: 21px;
+                font-family: Microsoft YaHei, Microsoft YaHei;
+                font-weight: 400;
+                font-size: 16px;
+                color: #000000;
+                line-height: 21px;
+                text-align: left;
+                font-style: normal;
+                text-transform: none;
+                margin-top: 17px;
+                padding: 0 24px;
+                border-right: 1px solid #ccc;
+
+                a {
+                    color: #000;
+                }
+            }
+
+            >span:hover a {
+                color: #139602;
+            }
+
+            >span:last-child {
+                border: none;
+            }
+        }
+
+    }
+}
+</style>

+ 1 - 1
components/home/Slider.vue

@@ -3,7 +3,7 @@
         <div class="scienceTitle" v-if="message">
             <h5 v-if="message.cid">
                 <NuxtLink v-if="message.cid" :href="getLinkPath(message)" class="active" :title="message.alias">
-                    {{ message.title }}
+                    {{ message.alias }}
                 </NuxtLink>
             </h5>
             <NuxtLink v-if="message.cid" :href="getLinkPath(message)" :title="message.alias">

+ 23 - 16
components/home/pageNavigation.vue

@@ -13,7 +13,8 @@
                 </div>
                 <ul class="navigationOne">
                     <li v-for="(item, index) in navigation1" :key="index">
-                        <NuxtLink :href="getLinkPath(item)" :title="item.alias" v-if="index<=23" :target="item.is_url == 1 ? '_blank' : '_self'">
+                        <NuxtLink :href="getLinkPath(item)" :title="item.alias" v-if="index <= 23"
+                            :target="item.is_url == 1 ? '_blank' : '_self'">
                             <span class="active" v-if="item.category_id == routeId">{{ item.alias }}</span>
                             <span v-else>{{ item.alias }}</span>
                         </NuxtLink>
@@ -27,7 +28,7 @@
                 <div class="cityTitle">地方频道</div>
                 <ul class="cityList" v-if="provinceList.length > 0">
                     <li v-for="item in provinceList">
-                        <NuxtLink :to="{ path: `/search/${item.id}`}">{{item.abbreviation}}</NuxtLink>
+                        <NuxtLink :to="{ path: `/search/${item.id}` }">{{ item.abbreviation }}</NuxtLink>
                     </li>
                 </ul>
             </div>
@@ -39,7 +40,8 @@
                     <div class="title">行政职能查询</div>
                     <div class="searchRole">
                         <el-select v-model="depValue" placeholder="职能部门" filterable size="large" style="width: 330px">
-                            <el-option v-for="(item, index) in department" :key="index" :label="item.name" :value="item.id" />
+                            <el-option v-for="(item, index) in department" :key="index" :label="item.name"
+                                :value="item.id" />
                         </el-select>
                         <em @click="goToPrimary"></em>
                     </div>
@@ -48,14 +50,18 @@
                     <div class="title">行政区划查询</div>
                     <div class="searchRole" v-if="provinceList.length > 0">
                         <el-select v-model="province" placeholder="请选择省" size="large" style="width: 80px">
-                            <el-option v-for="item in provinceList" :key="item.id" :label="item.name" @click="change(item.id)" :value="item.id" />
+                            <el-option v-for="item in provinceList" :key="item.id" :label="item.name"
+                                @click="change(item.id)" :value="item.id" />
                         </el-select>
                         <i></i>
-                        <el-select v-model="city" placeholder="请选择市" no-data-text="请先选择省份" size="large" style="width: 80px">
-                            <el-option v-for="(item, index) in cityList" :key="item.id" :label="item.name" @click="change1(item.id)" :value="item.id" />
+                        <el-select v-model="city" placeholder="请选择市" no-data-text="请先选择省份" size="large"
+                            style="width: 80px">
+                            <el-option v-for="(item, index) in cityList" :key="item.id" :label="item.name"
+                                @click="change1(item.id)" :value="item.id" />
                         </el-select>
                         <i></i>
-                        <el-select v-model="region" placeholder="请选择区/县" no-data-text="请先选择市" size="large" style="width: 100px">
+                        <el-select v-model="region" placeholder="请选择区/县" no-data-text="请先选择市" size="large"
+                            style="width: 100px">
                             <el-option v-for="item in regionList" :key="item.id" :label="item.name" :value="item.id" />
                         </el-select>
                         <em @click="goToPrimary"></em>
@@ -83,7 +89,7 @@ const routeId = route.params.id; //获得该页面的id
 //2.加载模块数据 start ---------------------------------------->
 const navigation1 = ref("");
 async function getPageData2() {
-    const mkdata =  await requestDataPromise('/web/getWebsiteModelCategory', {
+    const mkdata = await requestDataPromise('/web/getWebsiteModelCategory', {
         method: 'GET',
         query: {
             'placeid': 1,
@@ -108,12 +114,13 @@ getPageData2();
 //     }
 // }
 const getLinkPath = (item) => {
-    if(item.is_url==1){
+    console.log('item', item);
+    if (item.is_url == 1) {
         return `${item.web_url}`;
-    }else if(item.children_count == 0){
+    } else if (item.children_count == 0) {
         //return `/newsList/${item.category_id}?page=1`;
         return `/${item.aLIas_pinyin}/list-1.html`;
-    }else{
+    }  else {
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
         return `/${item.aLIas_pinyin}/index.html`;
     }
@@ -180,7 +187,7 @@ let regionList = ref("")
 //选择市
 let change = async (id) => {
     provinceid.value = id;
-    const shengData =  await requestDataPromise('/web/selectWebsiteArea', {
+    const shengData = await requestDataPromise('/web/selectWebsiteArea', {
         method: 'GET',
         query: {
             'pid': id,
@@ -192,7 +199,7 @@ let change = async (id) => {
 //选择县
 let change1 = async (id) => {
     cityid.value = id;
-    const xianData =  await requestDataPromise('/web/selectWebsiteArea', {
+    const xianData = await requestDataPromise('/web/selectWebsiteArea', {
         method: 'GET',
         query: {
             'pid': id,
@@ -217,9 +224,9 @@ let goToPrimary = async () => {
     if (city.value != "") { getcityid.value = city.value }
     if (region.value != "") { getcityid.value = region.value }
 
-    if (province.value == ""&&city.value == ""&&region.value == ""&&depValue.value=="") {
+    if (province.value == "" && city.value == "" && region.value == "" && depValue.value == "") {
         ElMessage.error('请选择行政区划或者职能部门!')
-    }else{
+    } else {
 
         // const responseStatus =  await requestDataPromise('/web/selectWebsiteCategory', {
         // method: 'GET',
@@ -249,7 +256,7 @@ let goToPrimary = async () => {
 //5.执行搜索 end ---------------------------------------->
 
 
-onMounted(async ()  => {
+onMounted(async () => {
     //从客户端获取行政职能部门 加快打开速度
     try {
         const { $webUrl, $CwebUrl } = useNuxtApp();

+ 16 - 15
components/home/pageNavigation1.vue

@@ -4,7 +4,7 @@
             <div class="inner">
                 <div class="navLeft">
                     <div class="navIndex">
-                        <NuxtLink :to="'/'">首页</NuxtLink> 
+                        <NuxtLink :to="'/'">首页</NuxtLink>
                     </div>
                     <div class="navClass">
                         <div>主题资讯</div>
@@ -13,7 +13,8 @@
                 </div>
                 <ul class="navigationOne">
                     <li v-for="(item, index) in navigation1" :key="index">
-                        <NuxtLink :href="getLinkPath(item)" :title="item.alias" v-if="index<=23" :target="item.is_url == 1 ? '_blank' : '_self'">
+                        <NuxtLink :href="getLinkPath(item)" :title="item.alias" v-if="index <= 23"
+                            :target="item.is_url == 1 ? '_blank' : '_self'">
                             <span class="active" v-if="item.category_id == routeId">{{ item.alias }}</span>
                             <span v-else>{{ item.alias }}</span>
                         </NuxtLink>
@@ -27,7 +28,7 @@
                 <div class="cityTitle">地方频道</div>
                 <ul class="cityList">
                     <li v-for="item in provinceList">
-                        <NuxtLink :to="{ path: `/search/${item.id}`}">{{item.abbreviation}}</NuxtLink>
+                        <NuxtLink :to="{ path: `/search/${item.id}` }">{{ item.abbreviation }}</NuxtLink>
                     </li>
                 </ul>
             </div>
@@ -39,7 +40,7 @@
 <script setup>
 //1.加载依赖 start ---------------------------------------->
 import { ElMessage } from 'element-plus'
-import { ref,onMounted } from 'vue';
+import { ref, onMounted } from 'vue';
 import { ElSelect, ElOption } from 'element-plus'
 
 const nuxtApp = useNuxtApp();
@@ -52,7 +53,7 @@ const routeId = route.params.id; //获得该页面的id
 //2.加载模块数据 start ---------------------------------------->
 const navigation1 = ref("");
 async function getPageData2() {
-    const mkdata =  await requestDataPromise('/web/getWebsiteModelCategory', {
+    const mkdata = await requestDataPromise('/web/getWebsiteModelCategory', {
         method: 'GET',
         query: {
             'placeid': 1,
@@ -66,12 +67,12 @@ getPageData2();
 
 //格式化跳转路径
 const getLinkPath = (item) => {
-    if(item.is_url==1){
+    if (item.is_url == 1) {
         return `${item.web_url}`;
-    }else if(item.children_count == 0){
+    } else if (item.children_count == 0) {
         //return `/newsList/${item.category_id}?page=1`;
         return `/${item.aLIas_pinyin}/list-1.html`;
-    }else{
+    } else {
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
         return `/${item.aLIas_pinyin}/index.html`;
     }
@@ -135,7 +136,7 @@ let regionList = ref("")
 // //一开始只需要获取一下省
 // areaArrList();
 
-onMounted(async ()  => {
+onMounted(async () => {
     //从客户端获取行政区划
     try {
         const { $webUrl, $CwebUrl } = useNuxtApp();
@@ -159,7 +160,7 @@ onMounted(async ()  => {
 //选择市
 let change = async (id) => {
     provinceid.value = id;
-    const shengData =  await requestDataPromise('/web/selectWebsiteArea', {
+    const shengData = await requestDataPromise('/web/selectWebsiteArea', {
         method: 'GET',
         query: {
             'province': id,
@@ -172,7 +173,7 @@ let change = async (id) => {
 //选择县
 let change1 = async (id) => {
     cityid.value = id;
-    const xianData =  await requestDataPromise('/web/selectWebsiteArea', {
+    const xianData = await requestDataPromise('/web/selectWebsiteArea', {
         method: 'GET',
         query: {
             'province': provinceid.value,
@@ -198,12 +199,12 @@ let goToPrimary = async () => {
     if (city.value != "") { getcityid.value = city.value }
     if (region.value != "") { getcityid.value = region.value }
 
-    if (province.value == ""&&city.value == ""&&region.value == ""&&depValue.value=="") {
+    if (province.value == "" && city.value == "" && region.value == "" && depValue.value == "") {
         ElMessage.error('请选择行政区划或者职能部门!')
-    }else{
+    } else {
 
-        const responseStatus =  await requestDataPromise('/web/selectWebsiteCategory', {
-        method: 'GET',
+        const responseStatus = await requestDataPromise('/web/selectWebsiteCategory', {
+            method: 'GET',
             query: {
                 'cityid': getcityid.value,
                 'department_id': depValue.value

+ 25 - 42
pages/about/[dir]/list-[id].vue

@@ -18,23 +18,24 @@
                 </el-breadcrumb>
             </div>
         </div>
-        
+
         <!-- 资讯列表 -->
         <div class="newsList">
             <div class="inner">
                 <div class="innerLeft">
-                    <div class="projectMoreBox">
+                    <!-- <div class="projectMoreBox">
                         <div class="projectMoreTitle">社会保障在线网</div>
                         <div class="projectMoreText">
                             <p><b>政讯通·全国文化旅游项目</b>网络平台由<b>政讯通-全国政务信息一体化办公室</b>主管,联合30多家企事业单位组成,由北京政讯通文化传播有限公司对外牵头运营。</p>
                             <p><b>政讯通·全国文化旅游项目</b>网络平台有政务、行业独立域名网站各<b>100</b>个和<b>4</b>个综合管理网站共<b>204</b>个网站,按照不同的行业和功能分类为用户提供大体系、广领域、全方位、全过程,有针对性的全国性文化旅游法制综合服务平台。</p>
                             <p><b>政讯通·全国旅游资讯发布中心</b>是<b>政讯通·全国文化旅游项目</b>网络平台的4个综合管理网站之一,目前开设了栏目上千个,地市中心可全面覆盖我国334个地级市,<b>业务范围</b>涵盖旅游资讯、與情监测、法律咨询、旅游调研、法律宣传、群众监督、旅游安全等领域,日均会员访问量超过万次,累计完成文化旅游领域法制调研课题千余件,网络信息化会员遍布全国各地,实施<b>行业、区域</b>全覆盖,是我国具有广泛传播力、影响力的新型主流媒体。</p>
                         </div>
-                    </div>
+                    </div> -->
                     <div class="innerTitle">本网招聘</div>
                     <ul class="list">
                         <li v-for="(item, index) in newsList" :key="index">
-                            <NuxtLink :to="{ path: `zhaopin/${item.id}.html` }" :title="item.con_title">{{item.con_title}}</NuxtLink>
+                            <NuxtLink :to="{ path: `zhaopin/${item.id}.html` }" :title="item.con_title">
+                                {{ item.con_title }}</NuxtLink>
                         </li>
                     </ul>
                 </div>
@@ -52,10 +53,11 @@
                             </NuxtLink>
                             <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name"
                                 v-if="item.id == 7 && pageId == 7" class="active">
-                                {{item.name }}
+                                {{ item.name }}
                             </NuxtLink>
-                            <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name" v-else-if="item.id == 7">
-                                {{ item.name}}
+                            <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name"
+                                v-else-if="item.id == 7">
+                                {{ item.name }}
                             </NuxtLink>
                         </li>
                     </ul>
@@ -81,8 +83,8 @@ const route = useRoute();
 //获得当前的完整路径
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
-const segments = fullPath.split('/'); 
-const targetSegment = segments[2]; 
+const segments = fullPath.split('/');
+const targetSegment = segments[2];
 //const numberPart = targetSegment.match(/\d+$/)?.[0]; 
 
 let articleId;
@@ -94,13 +96,13 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
         'foot_pinyin': targetSegment,
     },
 });
-if(getRouteId.code == 200){
+if (getRouteId.code == 200) {
     articleId = getRouteId.data.id;
     pageId = getRouteId.data.id;
-}else{
+} else {
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("错误位置:通过url路径查询导航池id")
-    console.log("后端错误反馈:",getRouteId.message)
+    console.log("后端错误反馈:", getRouteId.message)
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
 
@@ -110,26 +112,7 @@ if(getRouteId.code == 200){
 //广告
 let adImg1 = ref([]);
 let adImg2 = ref([]);
-// async function getAdData(){
-//     const adData = await requestDataPromise('/web/getWebsiteAdvertisement',{method:'GET',query:{'ad_tag':'PAGE'}});
-//     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();
-onMounted(async ()  => {
+onMounted(async () => {
     //从客户端获取行政职能部门 加快打开速度
     const { $webUrl, $CwebUrl } = useNuxtApp();
     //广告1
@@ -143,7 +126,7 @@ onMounted(async ()  => {
     });
     const resultAd1 = await responseAd1.json();
     adImg1.value = resultAd1.data[0];
-    
+
     //广告2
     let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_page_0002`
     const responseAd2 = await fetch(url2, {
@@ -160,7 +143,7 @@ onMounted(async ()  => {
 //左侧导航
 const bottomMenu = ref([]);
 async function getPageMenu() {
-    const mkdata =  await requestDataPromise('/web/getWebsiteFooterCategory', {
+    const mkdata = await requestDataPromise('/web/getWebsiteFooterCategory', {
         method: 'GET',
         query: {},
     });
@@ -171,10 +154,10 @@ getPageMenu();
 //列表
 const newsList = ref([]);
 let newslists = async () => {
-    const listData =  await requestDataPromise('/web/getWebsiteFooterCategoryList', {
+    const listData = await requestDataPromise('/web/getWebsiteFooterCategoryList', {
         method: 'GET',
         query: {
-            'fcat_id':pageId,
+            'fcat_id': pageId,
         },
     });
     newsList.value = listData.data;
@@ -184,7 +167,7 @@ newslists();
 //2.页面数据 end ---------------------------------------->
 
 //3 设置seo信息
-const setData =  await requestDataPromise('/web/getWebsiteFootInfo', {
+const setData = await requestDataPromise('/web/getWebsiteFootInfo', {
     method: 'GET',
     query: {},
 });
@@ -198,8 +181,8 @@ 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  }
+        { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
+        { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
     ]
 });
 //3.设置seo信息 end---------------------------------------->
@@ -270,16 +253,16 @@ useSeoMeta({
 
     .inner {
         width: 1200px;
-        height: 1300px;
+
         .innerLeft {
-            height: 65px;
-            line-height: 65px;
             font-size: 22px;
             color: #028E21;
             font-weight: bold;
         }
 
         .innerTitle {
+            height: 65px;
+            line-height: 65px;
             font-size: 24px;
         }
 

+ 288 - 0
pages/shukanxinxi/[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=snzxw_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=snzxw_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/shukanxinxi/[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=snzxw_page_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=snzxw_page_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/shukanxinxi/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=snzxw_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=snzxw_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=snzxw_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=snzxw_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/shukanxinxisnzx/[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=snzxw_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=snzxw_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/shukanxinxisnzx/[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=snzxw_page_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=snzxw_page_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/shukanxinxisnzx/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=snzxw_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=snzxw_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=snzxw_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=snzxw_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>

+ 5 - 5
plugins/globals.js

@@ -7,9 +7,9 @@ export default defineNuxtPlugin((nuxtApp) => {
   nuxtApp.provide('userUrl', 'http://localhost:3000')
 
   //正式环境
-//   nuxtApp.provide('webUrl', 'https://flzxw.bjzxtw.org.cn')
-//   nuxtApp.provide('CwebUrl', 'http://nw.bjzxtw.org.cn')
-//   nuxtApp.provide('BwebUrl', 'https://admin.bjzxtw.org.cn')
-//   nuxtApp.provide('LoginWebUrl', 'http://admin.bjzxtw.org.cn/adminapi')
-//   nuxtApp.provide('userUrl', 'http://localhost:3000')
+  // nuxtApp.provide('webUrl', 'https://flzxw.bjzxtw.org.cn')
+  // nuxtApp.provide('CwebUrl', 'http://nw.bjzxtw.org.cn')
+  // nuxtApp.provide('BwebUrl', 'https://admin.bjzxtw.org.cn')
+  // nuxtApp.provide('LoginWebUrl', 'http://admin.bjzxtw.org.cn/adminapi')
+  // nuxtApp.provide('userUrl', 'http://localhost:3000')
 })

BIN
public/ad/new1.png


BIN
public/ad/new2.png


BIN
public/index/16.png