|
@@ -1,105 +1,37 @@
|
|
|
<script setup>
|
|
|
-import {ref,reactive,computed} from 'vue'
|
|
|
+import {ref,reactive, onMounted} from 'vue'
|
|
|
+import { useRoute, useRouter } from "vue-router";
|
|
|
+import {apiReportClassifyList,apiReportList} from '@/api/report'
|
|
|
|
|
|
-const demoArr=[
|
|
|
- {
|
|
|
- "Id": 0,
|
|
|
- "ClassifyName": "ABOUT US",
|
|
|
- "Sort": 0,
|
|
|
- "ParentId": 0,
|
|
|
- "CreateTime": "2022-11-01T17:44:20+08:00",
|
|
|
- "ModifyTime": "2022-11-01T17:44:20+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1,
|
|
|
- "Child": []
|
|
|
- },
|
|
|
- {
|
|
|
- "Id": 8,
|
|
|
- "ClassifyName": "PVC1",
|
|
|
- "Sort": 0,
|
|
|
- "ParentId": 0,
|
|
|
- "CreateTime": "2022-11-01T17:04:22+08:00",
|
|
|
- "ModifyTime": "2022-11-01T17:04:22+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1,
|
|
|
- "Child": [
|
|
|
- {
|
|
|
- "Id": 9,
|
|
|
- "ClassifyName": "PVC(shandong)",
|
|
|
- "Sort": 2,
|
|
|
- "ParentId": 8,
|
|
|
- "CreateTime": "2022-11-01T16:48:37+08:00",
|
|
|
- "ModifyTime": "2022-11-01T16:48:37+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
+const router=useRouter()
|
|
|
+const route=useRoute()
|
|
|
+
|
|
|
+//分类
|
|
|
+let navList=ref([])
|
|
|
+async function getReportClassify(){
|
|
|
+ const res=await apiReportClassifyList()
|
|
|
+ if(res.code===200){
|
|
|
+ const arr=res.data.list||[]
|
|
|
+ navList.value=[
|
|
|
{
|
|
|
- "Id": 12,
|
|
|
- "ClassifyName": "test",
|
|
|
- "Sort": 1,
|
|
|
- "ParentId": 0,
|
|
|
- "CreateTime": "2022-11-01T13:59:54+08:00",
|
|
|
- "ModifyTime": "2022-11-01T13:59:54+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1,
|
|
|
- "Child": [
|
|
|
- {
|
|
|
- "Id": 19,
|
|
|
- "ClassifyName": "二级test",
|
|
|
- "Sort": 12,
|
|
|
- "ParentId": 12,
|
|
|
- "CreateTime": "2022-11-01T16:56:12+08:00",
|
|
|
- "ModifyTime": "2022-11-01T16:56:12+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1
|
|
|
- }
|
|
|
- ]
|
|
|
+ id: 0,
|
|
|
+ classify_name: "ABOUT US",
|
|
|
+ child: []
|
|
|
},
|
|
|
- {
|
|
|
- "Id": 1,
|
|
|
- "ClassifyName": "Macro",
|
|
|
- "Sort": 4,
|
|
|
- "ParentId": 0,
|
|
|
- "CreateTime": "2022-11-01T16:46:49+08:00",
|
|
|
- "ModifyTime": "2022-11-01T16:46:49+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1,
|
|
|
- "Child": [
|
|
|
- {
|
|
|
- "Id": 4,
|
|
|
- "ClassifyName": "China Macro and Commodity",
|
|
|
- "Sort": 0,
|
|
|
- "ParentId": 1,
|
|
|
- "CreateTime": "2022-10-20T17:45:52+08:00",
|
|
|
- "ModifyTime": "2022-10-20T17:45:52+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1
|
|
|
- },
|
|
|
- {
|
|
|
- "Id": 3,
|
|
|
- "ClassifyName": "China Macro Weekly",
|
|
|
- "Sort": 0,
|
|
|
- "ParentId": 1,
|
|
|
- "CreateTime": "2022-10-24T17:43:48+08:00",
|
|
|
- "ModifyTime": "2022-10-24T17:43:48+08:00",
|
|
|
- "ClassifyLabel": "",
|
|
|
- "ShowType": 0,
|
|
|
- "IsShow": 1
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
+ ...arr
|
|
|
]
|
|
|
|
|
|
-let navList=ref(demoArr)
|
|
|
+ if(route.query.firstclassifyid){
|
|
|
+ arr.forEach(item => {
|
|
|
+ if(item.Id==route.query.firstclassifyid){
|
|
|
+ handleChangeFirstClassify(item)
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+getReportClassify()
|
|
|
+
|
|
|
|
|
|
let listState = reactive({
|
|
|
firstClassifyId:0,
|
|
@@ -116,42 +48,54 @@ let listState = reactive({
|
|
|
// 切换一级分类
|
|
|
function handleChangeFirstClassify(item){
|
|
|
showFilter.value=false
|
|
|
- if(listState.firstClassifyId===item.Id) return
|
|
|
- listState.firstClassifyId=item.Id
|
|
|
- listState.firstClassifyName=item.ClassifyName
|
|
|
+ if(listState.firstClassifyId===item.id) return
|
|
|
+ listState.firstClassifyId=item.id
|
|
|
+ listState.firstClassifyName=item.classify_name
|
|
|
listState.secClassifyId=0
|
|
|
- listState.secClassifyOpt=item.Child||[]
|
|
|
+ listState.secClassifyOpt=item.child||[]
|
|
|
+ initList()
|
|
|
}
|
|
|
// 切换二级分类
|
|
|
function handleChangeSecClassify(item,fitem){
|
|
|
showFilter.value=false
|
|
|
- if(listState.secClassifyId===item.Id) return
|
|
|
- listState.secClassifyId=item.Id
|
|
|
+ if(listState.secClassifyId===item.id) return
|
|
|
+ listState.secClassifyId=item.id
|
|
|
if(fitem){
|
|
|
- listState.firstClassifyId=fitem.Id
|
|
|
- listState.firstClassifyName=fitem.ClassifyName
|
|
|
+ listState.firstClassifyId=fitem.id
|
|
|
+ listState.firstClassifyName=fitem.classify_name
|
|
|
+ listState.secClassifyOpt=fitem.child||[]
|
|
|
}
|
|
|
-
|
|
|
+ initList()
|
|
|
+}
|
|
|
|
|
|
-
|
|
|
+//初始化列表
|
|
|
+function initList(){
|
|
|
+ listState.page=1
|
|
|
+ listState.finished=false
|
|
|
+ listState.list=[]
|
|
|
getList()
|
|
|
}
|
|
|
|
|
|
// 获取列表数据
|
|
|
-function getList(){
|
|
|
+async function getList(){
|
|
|
listState.loading=true
|
|
|
- let arr=[]
|
|
|
- if(listState.page<5){
|
|
|
- for (let index = 0; index < 20; index++) {
|
|
|
- arr.push('a')
|
|
|
- }
|
|
|
- listState.list=[...listState.list,...arr]
|
|
|
- }else{
|
|
|
- listState.finished=true
|
|
|
- }
|
|
|
+ const res=await apiReportList({
|
|
|
+ page_size:listState.pageSize,
|
|
|
+ current:listState.page,
|
|
|
+ classify_id_first:listState.firstClassifyId,
|
|
|
+ classify_id_second:listState.secClassifyId
|
|
|
+ })
|
|
|
setTimeout(() => {
|
|
|
listState.loading=false
|
|
|
- }, 300);
|
|
|
+ }, 100);
|
|
|
+ if(res.code===200){
|
|
|
+ const arr=res.data.list||[]
|
|
|
+ listState.list=[...listState.list,...arr]
|
|
|
+ if(arr.length<listState.pageSize){
|
|
|
+ listState.finished=true
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 监听页面滚动
|
|
@@ -171,9 +115,21 @@ function listenScroll(){
|
|
|
}
|
|
|
listenScroll()
|
|
|
|
|
|
+//跳转详情
|
|
|
+function goReportDetail(item){
|
|
|
+ const url=router.resolve({
|
|
|
+ path:'/report/detail',
|
|
|
+ query:{
|
|
|
+ code:item.report_code
|
|
|
+ }
|
|
|
+ })
|
|
|
+ window.open(url.href,'_blank')
|
|
|
+}
|
|
|
+
|
|
|
// 弹窗筛选
|
|
|
let showFilter=ref(false)
|
|
|
let filterSize=ref('30%')
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -190,73 +146,64 @@ let filterSize=ref('30%')
|
|
|
<div class="nav-wrap">
|
|
|
<img class="menu-icon" @click="showFilter=true;filterSize='30%'" src="@/assets/menu.svg" alt="">
|
|
|
<span
|
|
|
- :class="['nav-item',item.Id===listState.firstClassifyId?'active':'']"
|
|
|
+ :class="['nav-item',item.id===listState.firstClassifyId?'active':'']"
|
|
|
v-for="item in navList"
|
|
|
:key="item.Id"
|
|
|
@click="handleChangeFirstClassify(item)"
|
|
|
- >{{item.ClassifyName}}</span>
|
|
|
+ >{{item.classify_name}}</span>
|
|
|
</div>
|
|
|
<div class="sub-nav-wrap">
|
|
|
<h2 class="label">{{listState.firstClassifyName}}</h2>
|
|
|
<div class="sub-nav-list">
|
|
|
<span
|
|
|
- :class="['item',item.Id===listState.secClassifyId?'active':'']"
|
|
|
+ :class="['item',item.id===listState.secClassifyId?'active':'']"
|
|
|
v-for="item in listState.secClassifyOpt"
|
|
|
:key="item.Id"
|
|
|
@click="handleChangeSecClassify(item)"
|
|
|
- >{{item.ClassifyName}}</span>
|
|
|
+ >{{item.classify_name}}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 固定展示的报告区域 -->
|
|
|
<div class="fix-report-wrap" v-show="listState.firstClassifyId!=0&&listState.secClassifyId===0">
|
|
|
<div class="left-wrap">
|
|
|
- <div class="report-item-normal">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
- </div>
|
|
|
- <div class="report-item-normal">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
+ <div class="report-item-normal" v-for="item in listState.list.slice(0,3)" :key="item.id" @click="goReportDetail(item)">
|
|
|
+ <div class="title">{{item.title}}</div>
|
|
|
+ <div class="intro">{{item.abstract}}</div>
|
|
|
+ <div class="time">{{item.publish_time}}</div>
|
|
|
</div>
|
|
|
- <div class="report-item-normal">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
- </div>
|
|
|
- <img class="img" src="@/assets/bg-2.png" alt="">
|
|
|
+
|
|
|
+ <img class="img" src="https://hzstatic.hzinsights.com/static/yb_en/bg-2.png" alt="">
|
|
|
</div>
|
|
|
<div class="center-wrap">
|
|
|
- <img class="img-top" src="@/assets/bg-3.png" alt="">
|
|
|
- <div class="report-item-normal">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
+ <img class="img-top" src="https://hzstatic.hzinsights.com/static/yb_en/bg-3.png" alt="">
|
|
|
+ <div class="report-item-normal" @click="goReportDetail(listState.list[3])">
|
|
|
+ <div class="title">{{listState.list[3]&&listState.list[3].title}}</div>
|
|
|
+ <div class="intro">{{listState.list[3]&&listState.list[3].abstract}}</div>
|
|
|
+ <div class="time">{{listState.list[3]&&listState.list[3].publish_time}}</div>
|
|
|
</div>
|
|
|
<div class="bot-box">
|
|
|
- <div class="report-item-small">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern EasternEasternEastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
+ <div class="report-item-small" @click="goReportDetail(listState.list[4])">
|
|
|
+ <div class="title">{{listState.list[4]&&listState.list[4].title}}</div>
|
|
|
+ <div class="intro">{{listState.list[4]&&listState.list[4].abstract}}</div>
|
|
|
+ <div class="time">{{listState.list[4]&&listState.list[4].publish_time}}</div>
|
|
|
</div>
|
|
|
- <img class="img-bot" src="@/assets/bg-4.png" alt="">
|
|
|
+ <img class="img-bot" src="https://hzstatic.hzinsights.com/static/yb_en/bg-4.png" alt="">
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="right-wrap">
|
|
|
- <div class="report-item-normal" v-for="item in 4" :key="item">
|
|
|
- <div class="title">China Iron Ore Express</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
+ <div class="report-item-normal" v-for="item in listState.list.slice(5,9)" :key="item.id" @click="goReportDetail(item)">
|
|
|
+ <div class="title">{{item.title}}</div>
|
|
|
+ <div class="intro">{{item.abstract}}</div>
|
|
|
+ <div class="time">{{item.publish_time}}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 报告列表 -->
|
|
|
- <div class="report-list-wrap" v-show="listState.firstClassifyId!=0">
|
|
|
- <div class="item" v-for="item,index in listState.list" :key="index">
|
|
|
- <div class="title">title</div>
|
|
|
- <div class="intro">PLA Eastern Theater Command’s J-10C fighters hold interception exercise in far sea, show growing skills, confidence</div>
|
|
|
- <div class="time">23, 2022 09:49 PM </div>
|
|
|
+ <div class="report-list-wrap" v-show="listState.secClassifyId!=0">
|
|
|
+ <div class="item" v-for="item in listState.list" :key="item.id" @click="goReportDetail(item)">
|
|
|
+ <div class="title">{{item.title}}</div>
|
|
|
+ <div class="intro">{{item.abstract}}</div>
|
|
|
+ <div class="time">{{item.publish_time}}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -264,7 +211,7 @@ let filterSize=ref('30%')
|
|
|
<div class="about-us-box" v-show="listState.firstClassifyId==0">
|
|
|
<div class="flex box top-box">
|
|
|
<div class="left">
|
|
|
- <video controls autoplay src="https://hongze.oss-cn-shanghai.aliyuncs.com/static/video_03.mp4"></video>
|
|
|
+ <video controls autoplay loop src="https://hongze.oss-cn-shanghai.aliyuncs.com/static/video_03.mp4"></video>
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<div class="con">
|
|
@@ -288,7 +235,7 @@ let filterSize=ref('30%')
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
- <img src="@/assets/bg-1.png" alt="">
|
|
|
+ <img src="https://hzstatic.hzinsights.com/static/yb_en/bg-1.png" alt="">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -302,9 +249,9 @@ let filterSize=ref('30%')
|
|
|
class="self-drawer-box"
|
|
|
>
|
|
|
<div class="filter-wrap">
|
|
|
- <div class="item" v-for="item in navList" :key="item.Id">
|
|
|
- <span class="title" @click="handleChangeFirstClassify(item)">{{item.ClassifyName}}</span>
|
|
|
- <div class="text" v-for="_item in item.Child" :key="_item.Id" @click="handleChangeSecClassify(_item,item)">{{_item.ClassifyName}}</div>
|
|
|
+ <div class="item" v-for="item in navList" :key="item.id">
|
|
|
+ <span class="title" @click="handleChangeFirstClassify(item)">{{item.classify_name}}</span>
|
|
|
+ <div class="text" v-for="_item in item.child" :key="_item.id" @click="handleChangeSecClassify(_item,item)">{{_item.classify_name}}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
@@ -591,6 +538,8 @@ let filterSize=ref('30%')
|
|
|
overflow: hidden;
|
|
|
white-space: nowrap;
|
|
|
text-overflow: ellipsis;
|
|
|
+ cursor: pointer;
|
|
|
+ word-break: break-word;
|
|
|
}
|
|
|
.intro{
|
|
|
font-size: 14px;
|
|
@@ -603,6 +552,7 @@ let filterSize=ref('30%')
|
|
|
text-overflow: ellipsis;
|
|
|
-webkit-line-clamp: 2;
|
|
|
-webkit-box-orient: vertical;
|
|
|
+ word-break: break-word;
|
|
|
}
|
|
|
.time{
|
|
|
font-size: 14px;
|
|
@@ -658,6 +608,7 @@ let filterSize=ref('30%')
|
|
|
text-overflow: ellipsis;
|
|
|
-webkit-line-clamp: 2;
|
|
|
-webkit-box-orient: vertical;
|
|
|
+ word-break: break-word;
|
|
|
}
|
|
|
.intro{
|
|
|
font-size: 14px;
|
|
@@ -670,6 +621,7 @@ let filterSize=ref('30%')
|
|
|
text-overflow: ellipsis;
|
|
|
-webkit-line-clamp: 6;
|
|
|
-webkit-box-orient: vertical;
|
|
|
+ word-break: break-word;
|
|
|
}
|
|
|
.time{
|
|
|
font-size: 14px;
|
|
@@ -691,12 +643,14 @@ let filterSize=ref('30%')
|
|
|
}
|
|
|
|
|
|
.report-list-wrap{
|
|
|
+ padding-bottom: 50px;
|
|
|
.item{
|
|
|
padding: 20px 0;
|
|
|
border-top: 1px solid #E6E6E6;
|
|
|
.title{
|
|
|
font-size: 20px;
|
|
|
font-weight: 600;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
.intro{
|
|
|
font-size: 14px;
|