ming 11 ماه پیش
والد
کامیت
67278d3abd

+ 1 - 0
src/assets/img/news/arrow.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1712633201030" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2402" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M256 0 768 512 256 1024Z" p-id="2403" fill="#409EFF"></path></svg>

+ 52 - 1
src/assets/styles/common/style.css

@@ -6865,4 +6865,55 @@
                     opacity:1
                 }
             }
-            /* 移动端导航样式 end */
+            /* 移动端导航样式 end */
+
+
+
+            .news2-box>div{
+                     box-shadow: 0px 2px 17px 4px rgb(158 158 158 / 15%);
+                     padding:10px;
+
+            }
+            .news2-box .news-right-list{
+                padding:10px 20px 0 20px
+
+            }
+            .news2-box .news-right-list li:last-child{
+                border-bottom: 0px dashed #D5D5D5;
+
+            }
+            .news-left-list{
+                margin-right:30px
+            }
+            .news-left-list .active{
+                color:#409EFF;
+                cursor: pointer;
+            }
+            .news2-box>div ul li{
+                border-bottom: 1px dashed #D5D5D5;
+                line-height:56px;
+                color:#666666;
+                
+
+            }
+            .news2-box>div ul li:hover{
+                color:#409EFF;
+                cursor: pointer;
+            }
+            .news2-box>div .title{
+                font-size:18px;
+                font-weight: 400;
+                line-height:56px;
+                color: #333333;
+                border-bottom: 1px dashed #D5D5D5;
+            }
+
+
+            @media(min-width:768px) {
+                .news-left-list {
+                    width:218px!important
+                }
+                .news-right-list {
+                    width:calc(100% - 218px)!important
+                }
+            }

+ 1 - 1
src/utils/request.ts

@@ -3,7 +3,7 @@ import { tansParams } from './common.ts'
 // 创建axios实例
 const service: any = axios.create({
     // axios中请求配置有baseURL选项,表示请求URL公共部分
-    baseURL: import.meta.env.PROD ? 'http://gateWay.usky.cn/' : "http://localhost:13213",
+    baseURL: import.meta.env.PROD ? 'http://gateWay.usky.cn/' : "http://gateWay.usky.cn/",
     // baseURL: import.meta.env.PROD ? 'http://172.16.120.165:13200/' : "http://localhost:13213",
     // 超时
     timeout: 300000

+ 150 - 0
src/views/news-online/index.vue

@@ -0,0 +1,150 @@
+<script lang="ts">
+import { ref, reactive, defineComponent } from 'vue'
+import { useStore  } from 'vuex'
+import { useRouter } from "vue-router";
+import banner from '@/components/layout/banner.vue'
+import pagination from '@/components/layout/pagination.vue'
+export default defineComponent({
+    setup(){
+        const store = useStore()
+        const router = useRouter()
+        let requestParams:any = reactive({})//active类型
+        let paramsData = reactive({
+            params:{
+                categoryid: 0,
+                pageNum:1,
+                pageSize:10,
+                order:"sortindex",
+                acitve:true
+            },
+            index:"",
+            sub:0
+        })
+        const pageStatus = ref(false)
+        let oldCategoryId= ref(store.state.columnTypes[0].id)
+        //类型切换
+        function facilityClick(item:any){
+            //防抖
+            if(item.id != oldCategoryId.value){
+                requestParams = item
+                paramsData = {
+                    params:{
+                        categoryid: item.id,
+                        pageNum:1,
+                        pageSize:10,
+                        order:"sortindex",
+                        acitve:true,
+                    },
+                    index:store.state.currentPagePath,
+                    sub:store.state.sub
+                }
+                oldCategoryId.value = item.id
+                store.dispatch('getPageData',paramsData)
+            }
+        }
+        //详情页
+        function details(item:any){
+            let params = {
+                path: `/news_Read`,
+                query: {
+                    categoryid: item.categoryid,
+                    id: item.id,
+                    isUrlId: 1
+                }
+            }
+            store.commit("setRoute",params)
+            router.push(params)
+        }
+        //分页
+        function handleCurrentChange(val:number){
+            paramsData.params.pageNum = val
+            store.dispatch('getPageData',paramsData)
+        }
+        setTimeout(()=>{
+            pageStatus.value = true
+        },300)
+        return { store, facilityClick, handleCurrentChange, details, pageStatus }
+    },
+    components:{
+        banner,
+        pagination
+    },
+    asyncData({ store,route } :any){
+        let params = reactive(route.value) //路由参数
+        //获取菜单列表
+        return store.dispatch('getMenuList',params).then(()=>{
+            const data = reactive(store.state.menuList)
+            let paramsData:any = reactive({})//页面主题内容请求参数
+            let str = ref("")
+            if(params.path.indexOf("_")>-1){
+                str.value = params.path.split("_")[0]
+            }
+            for(let i=0;i<data.length;i++){
+                if(!data[i].sname && params.path == data[i].path || data[i].path == str.value){
+                    paramsData = {
+                        params:{
+                            categoryid: data[i].id,
+                            pageNum:1,
+                            pageSize:100,
+                        //   order:"sortindex",
+                        },
+                        index:params.path,
+                        sub:i
+                    }
+                    if(!params.query?.categoryid){
+                        paramsData.params.categoryid = data[i].children[0].id
+                    }else{
+                        paramsData.params.categoryid = params.query.categoryid
+                    }
+                    return store.dispatch('getPageData',paramsData).then(()=>{
+                        store.commit("setColumnTypes",store.state.menuList[store.state.sub].children)
+                    })
+                }
+            }
+        })
+    }
+})
+</script>
+<template>
+    <div class="pageContain">
+        <section class="common-bradcrumb-section">
+            <banner />
+        </section>
+        <section style=" background:#F7F7F7">
+            <div class="container">
+                <div class="row newTypeBox">
+                    <div class="col-lg-6 col-md-6"  v-for="(item,index) in store.state.columnTypes" :key="index">
+                        <div class="titleOne" :class="item.id == store.state.acitveId  ? 'active' : ''" v-on:mouseover="facilityClick(item)">{{item.categoryName}} </div>
+                    </div>
+                </div>
+            </div>
+        </section>
+        <section class="news-content-section pt-70" v-show="pageStatus">
+                <div class="container">
+                    <div class="row">
+                        <div class="col-lg-12 col-md-12 content">
+                            <ul>
+                                <!-- 新闻列表主题start -->
+                                <div class="row">
+                                    <div class="col-md-4 newItemOne lazyContainer" v-for="(item,index) in store.state.pageContent" :key="index" >
+                                        <div class="oneInnerBox" @click="details(item)">
+                                            <div class="img" style="overflow:hidden">
+                                                <el-image  :src="item.image" alt="" :data-src="item.image" fit="contain"  style="display:block"  />   
+                                            </div>
+                                            <a class="line-two">{{item.title}}</a>
+                                            <span>{{ item.createdate }}</span>
+                                        </div>
+                                    </div>
+                                </div>
+                            </ul>
+                            <pagination :data="store.state.pagination" @pagination="handleCurrentChange" />
+                        </div>
+                    </div>
+                </div>
+            </section>
+    </div>
+            
+</template>
+<style lang="scss" scoped>
+
+</style>

+ 105 - 0
src/views/news-online/read.vue

@@ -0,0 +1,105 @@
+<script lang="ts">
+    import { ref, reactive, defineComponent } from 'vue'
+    import { useStore  } from 'vuex'
+    import { useRoute } from "vue-router"
+    import banner from '@/components/layout/banner.vue'
+    import recomMendation from '@/components/layout/recomMendation.vue'
+    export default defineComponent({
+    setup(){
+        const store = useStore()
+        const route = useRoute()
+        const pageStatus = ref(false)
+        const recomMendationList:any = reactive(recomMendationFilter(store.state.recomMendation)) //推荐内容
+        //推荐内容过滤
+        function recomMendationFilter(data:any){
+            let array = []
+            for(let i =0;i<data.length;i++){
+                if(data[i].id != route.query?.id){
+                    array.push(data[i])
+                }
+            }
+            return array
+        }
+        setTimeout(()=>{
+            pageStatus.value = true
+        })
+        return { store, recomMendationList,pageStatus }
+    },
+    components:{
+        banner,
+        recomMendation
+    },
+    asyncData({ store,route }:any){
+        //获取菜单列表
+        let params:any = reactive({}) //路由参数
+        if(route.value.query?.id){
+            params = route.value
+        }else{
+            params = store.state.route
+        }
+        //获取菜单列表
+        return store.dispatch('getMenuList',params).then(()=>{
+            const data = reactive(store.state.menuList)
+            let str = ref("")
+            let sub = ref()
+            let paramsData = reactive({})
+            if(params.path.indexOf("_")){
+                str.value = params.path.split("_")[0]
+            }
+            for(let i=0;i<data.length;i++){
+                if(params.path == data[i].path || str.value == data[i].path){
+                    if(params.query?.categoryid  && !data[i].sname){
+                        sub.value = i
+                        if(params.query?.id  && !params.query.dup){
+                            paramsData = {
+                                params:{
+                                    categoryid: params.query?.categoryid,
+                                    pageNum:1,
+                                    pageSize:1,
+                                    order:"sortindex",
+                                    articleid: params.query?.id,
+                                    id: params.query?.id,
+                                    details:true
+                                },
+                                index:params.path,
+                                sub:sub.value
+                            }
+                            return store.dispatch('getPageData',paramsData)
+                        }
+                    }
+                }
+            }
+           
+        })
+    }
+})
+</script>
+<template>
+    <div class="pageContain">
+        <section class="common-bradcrumb-section" >
+            <banner />
+        </section>
+        <section class="news-content-section pt-60" v-show="pageStatus">
+            <div class="container" v-if="store.state.pageContent.length>0">
+                <div class="row">
+                    <div class="col-lg-12 col-md-12 content">
+                        <div  class="read_content mb-60">
+                            <div class="section-title text-left both-border mb-60 d-flex justify-content-between">
+                                <div >
+                                    <span class="title-tag2">{{store.state.pageContent[0].title}}</span>
+                                    <div class="new-read-title2">
+                                        <span>{{ store.state.pageContent[0].createdate.split(" ")[0] }}</span>
+                                        <span style="margin-left:10px">点击量:{{store.state.pageContent[0].hits}}</span>
+                                    </div>
+                                </div>
+                                <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
+                            </div>                            
+                            <div v-html="store.state.pageContent[0].content" class="new-read-body"></div>
+                        </div>
+                        <recomMendation :data="recomMendationList"  v-if="recomMendationList.length>0"/>
+                    </div>
+                </div>
+            </div>
+        </section>
+    </div>
+</template>

+ 51 - 1
src/views/news/index.vue

@@ -22,8 +22,22 @@ export default defineComponent({
         })
         const pageStatus = ref(false)
         let oldCategoryId= ref(store.state.columnTypes[0].id)
+
+
+        const columnActive=ref({})
+        var columnOne= store.state.columnTypes.filter((item:any) => {
+            return item.id == store.state.acitveId;
+        });
+        columnActive.value=columnOne[0]
+        console.log(store.state.columnTypes)
+        console.log(store.state.acitveId)
+        console.log(columnOne)
+
+
         //类型切换
         function facilityClick(item:any){
+            console.log(item)
+            columnActive.value=item
             //防抖
             if(item.id != oldCategoryId.value){
                 requestParams = item
@@ -63,7 +77,7 @@ export default defineComponent({
         setTimeout(()=>{
             pageStatus.value = true
         },300)
-        return { store, facilityClick, handleCurrentChange, details, pageStatus }
+        return { store, facilityClick, handleCurrentChange, details, pageStatus,columnActive }
     },
     components:{
         banner,
@@ -110,6 +124,42 @@ export default defineComponent({
         <section class="common-bradcrumb-section">
             <banner />
         </section>
+
+        <section class="news-content-section pt-70" >
+            <div class="container">
+                <div style="display:flex" class="news2-box">
+                    <div class=" news-left-list">
+                        <div class="title">新闻动态</div>
+                        <ul>
+                            <li  v-for="(item,index) in store.state.columnTypes" :key="index" style="display:flex">
+                                <img src="@/assets/img/news/arrow.svg" alt="" :style="{'opacity':item.id == store.state.acitveId?'1':'0'}" style="width:12px;margin-right:5px">
+                                <div  :class="item.id == store.state.acitveId  ? 'active' : ''" v-on:mouseover="facilityClick(item)">{{item.categoryName}} </div>
+                            </li>
+                        </ul>
+                        
+                    </div>
+                    <div class="news-right-list" >
+                        <div class="title">{{columnActive.categoryName}}</div>
+                        <ul>
+                            <li class="" v-for="(item,index) in store.state.pageContent" :key="index" >
+                                <div  @click="details(item)">
+                                    <span style="width: 8px;height: 8px;background: #B7B7B7;border-radius: 50%;margin-right:10px"></span>
+                                    <a class="">{{item.title}}</a>
+                                    <span style="float:right">{{ item.createdate }}</span>
+                                </div>
+                            </li>
+
+
+                        </ul>
+                    </div>
+                </div>
+                
+                
+            </div>
+
+        </section>
+        <br>
+        <br>
         <section style=" background:#F7F7F7">
             <div class="container">
                 <div class="row newTypeBox">