提交 2dda3480 authored 作者: coderBryanFu's avatar coderBryanFu

update

上级 c5add0d2
<template> <template>
<div id="app"> <div id="app">
<el-container class="wrapper"> <div class="wrapper">
<el-header> <div class="navbar">
<nav class="navbar"> <div class="nav-brand">
<div class="nav-brand"> <div class="brand-icon">
<div class="brand-icon"> <img src="@/assets/icons/header-logo.png" alt="" />
<img src="@/assets/icons/header-logo.png" alt="" />
</div>
<div class="brand-text" @click="handleToHome">
<div class="text-ch">某方向风险监测预警系统</div>
</div>
</div> </div>
<div class="user-info"> <div class="brand-text" @click="handleToHome">
<div class="email"> <div class="text-ch">某方向风险监测预警系统</div>
<img src="@/assets/icons/header-icon.png" alt="" />
</div>
<div class="avator">
<img src="@/assets/icons/header-avator.png" alt="" />
</div>
<span class="user">管理员</span>
</div> </div>
</nav> </div>
</el-header> <div class="user-info">
<div class="email">
<el-main class="main-container"> <img src="@/assets/icons/header-icon.png" alt="" />
<router-view /> </div>
</el-main> <div class="avator">
<div class="ai-btn" @click="openAiBox"> <img src="@/assets/icons/header-avator.png" alt="" />
<div class="icon">
<img src="@/assets/icons/ai-icon.png" alt="" />
</div> </div>
<div class="text">智能问答</div> <span class="user">管理员</span>
</div> </div>
</div>
<div class="main-container">
<router-view />
</div>
<div class="ai-btn" @click="openAiBox">
<div class="icon">
<img src="@/assets/icons/ai-icon.png" alt="" />
</div>
<div class="text">智能问答</div>
</div>
<div class="ai-dialog" v-if="isShowAiBox"> <div class="ai-dialog" v-if="isShowAiBox">
<AiBox @close="closeAiBox" /> <AiBox @close="closeAiBox" />
</div> </div>
</el-container> </div>
</div> </div>
</template> </template>
...@@ -46,7 +43,7 @@ import { Monitor, House, User, Location, Document, Bell, Message, ArrowDown } fr ...@@ -46,7 +43,7 @@ import { Monitor, House, User, Location, Document, Bell, Message, ArrowDown } fr
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import Breadcrumb from "@/components/BreadCrumb/index.vue"; import Breadcrumb from "@/components/BreadCrumb/index.vue";
import AiBox from "./components/AiBox.vue"; import AiBox from "./components/AiBox.vue";
import {getPersonType} from '@/api/common/index' import { getPersonType } from "@/api/common/index";
// import { useDraggable } from "@vueuse/core"; // import { useDraggable } from "@vueuse/core";
const router = useRouter(); const router = useRouter();
...@@ -86,29 +83,25 @@ const handleHomeCommand = command => { ...@@ -86,29 +83,25 @@ const handleHomeCommand = command => {
router.push(command); router.push(command);
}; };
const personTypeList = ref([]) const personTypeList = ref([]);
// 获取人物类别 // 获取人物类别
const handleGetPersonType = async() => { const handleGetPersonType = async () => {
try { try {
const res = await getPersonType() const res = await getPersonType();
console.log('res', res); console.log("res", res);
if(res.code === 200) { if (res.code === 200) {
personTypeList.value = res.data personTypeList.value = res.data;
} else { } else {
personTypeList.value = [] personTypeList.value = [];
} }
window.sessionStorage.setItem('personTypeList', JSON.stringify(personTypeList.value)) window.sessionStorage.setItem("personTypeList", JSON.stringify(personTypeList.value));
} catch (error) {}
} catch (error) { };
}
}
onMounted(() => { onMounted(() => {
handleGetPersonType() handleGetPersonType();
}) });
</script> </script>
<style> <style>
...@@ -141,7 +134,7 @@ body { ...@@ -141,7 +134,7 @@ body {
text-align: justify; text-align: justify;
} }
.el-popper[data-popper-placement^=top]>.el-popper__arrow:before { .el-popper[data-popper-placement^="top"] > .el-popper__arrow:before {
display: none; display: none;
} }
</style> </style>
...@@ -164,20 +157,19 @@ body { ...@@ -164,20 +157,19 @@ body {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
background: white; background: #fff;
color: #333; color: rgba(10, 18, 30, 1);
height: 100%;
border-bottom: 1px solid #e5e7eb; border-bottom: 1px solid #e5e7eb;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
height: 96px; height: 72px;
} }
.main-container { .main-container {
/* 移除宽度限制,让子页面自己控制布局 */ /* 移除宽度限制,让子页面自己控制布局 */
width: 100%; width: 100%;
height: 984px; height: 1008px;
position: relative; position: relative;
} }
...@@ -191,7 +183,6 @@ body { ...@@ -191,7 +183,6 @@ body {
.brand-icon { .brand-icon {
width: 48px; width: 48px;
height: 48px; height: 48px;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
...@@ -309,13 +300,6 @@ body { ...@@ -309,13 +300,6 @@ body {
.wrapper { .wrapper {
position: relative; position: relative;
.target {
// position: absolute;
// bottom: 20%;
// right: 46px;
z-index: 9999;
}
.ai-btn { .ai-btn {
position: absolute; position: absolute;
bottom: 240px; bottom: 240px;
...@@ -344,7 +328,6 @@ body { ...@@ -344,7 +328,6 @@ body {
text-align: center; text-align: center;
} }
} }
.ai-dialog { .ai-dialog {
position: absolute; position: absolute;
right: 100px; right: 100px;
...@@ -353,18 +336,4 @@ body { ...@@ -353,18 +336,4 @@ body {
} }
} }
.el-header {
padding: 0;
height: 96px;
position: relative;
z-index: 1;
}
.el-main {
padding: 0;
height: calc(100vh - 96px);
overflow: hidden;
overflow-y: auto;
background-color: rgba(246, 251, 255, 1);
}
</style> </style>
<template>
<div class="info-wrapper">
<div class="header-item">国家科技安全</div>
<div class="header-item">></div>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div>
<div class="header-item">></div>
<div class="header-item">{{ curTitleName }}</div>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import router from "@/router";
const props = defineProps({
curTitleName: {
type: String,
required: true
}
});
// 返回首页
const handleBackHome = () => {
router.push({
path: "/overview"
});
};
</script>
<style lang="scss" scoped>
.info-wrapper {
height: 64px;
line-height: 64px;
display: flex;
justify-content: flex-end;
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
color: #fff;
.header-item {
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="menu-wrapper">
<div class="menu-item">
<div class="menu-item-icon">
<img src="@/assets/icons/home-header-icon1.png" alt="" />
</div>
<div class="menu-item-text">{{ "首页" }}</div>
</div>
<div class="menu-item">
<div class="menu-item-icon1">
<img src="@/assets/icons/home-header-icon2.png" alt="" />
</div>
<div class="menu-item-text">{{ "国家" }}</div>
</div>
<div class="menu-item">
<div class="menu-item-icon2">
<img src="@/assets/icons/home-header-icon3.png" alt="" />
</div>
<div class="menu-item-text">{{ "领域" }}</div>
</div>
<div class="menu-item">
<div class="menu-item-icon3">
<img src="@/assets/icons/home-header-icon4.png" alt="" />
</div>
<div class="menu-item-text">{{ "要素" }}</div>
</div>
<div class="menu-item">
<div class="menu-item-icon4">
<img src="@/assets/icons/home-header-icon5.png" alt="" />
</div>
<div class="menu-item-text">{{ "事件" }}</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.menu-wrapper {
width: 644px;
height: 64px;
display: flex;
justify-content: space-between;
.menu-item {
display: flex;
gap: 11px;
width: 112px;
height: 64px;
justify-content: center;
align-items: center;
.menu-item-icon {
// margin-top: 2px;
width: 22px;
height: 22px;
img {
width: 100%;
height: 100%;
}
}
.menu-item-icon1 {
// margin-top: 4px;
width: 24px;
height: 24px;
img {
width: 100%;
height: 100%;
}
}
.menu-item-icon2 {
// margin-top: 4px;
width: 24px;
height: 22px;
img {
width: 100%;
height: 100%;
}
}
.menu-item-icon3 {
// margin-top: 2px;
width: 20px;
height: 20px;
img {
width: 100%;
height: 100%;
}
}
.menu-item-icon4 {
width: 22px;
height: 20px;
img {
width: 100%;
height: 100%;
}
}
.menu-item-text {
// margin-top: 16px;
height: 32px;
color: rgba(255, 255, 255, 1);
font-family: Microsoft YaHei;
font-style: Bold;
font-size: 24px;
font-weight: 700;
line-height: 32px;
letter-spacing: 0px;
text-align: left;
}
}
}
</style>
\ No newline at end of file
...@@ -39,11 +39,12 @@ ...@@ -39,11 +39,12 @@
</div> </div>
<div class="home-box" :class="{ scrollHomeBox: isShow }" ref="containerRef"> <div class="home-box" :class="{ scrollHomeBox: isShow }" ref="containerRef">
<div class="home-header" v-show="!isShow"> <div class="home-header" v-show="!isShow">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">科技法案</div> <headerInfo curTitleName="科技法案"></headerInfo>
</div>
</div> </div>
<div class="home-main"> <div class="home-main">
<div class="home-main-header" v-show="!isShow"> <div class="home-main-header" v-show="!isShow">
...@@ -198,12 +199,12 @@ ...@@ -198,12 +199,12 @@
<div class="inner-box-title"> <div class="inner-box-title">
{{ bill.news?.newsTitle }} {{ bill.news?.newsTitle }}
</div> </div>
<div class="inner-box-time">{{ bill.news?.newsTime.replace('T', ' ') }}</div> <div class="inner-box-time">
{{ bill.news?.newsTime.replace("T", " ") }}
</div>
</div> </div>
<div class="inner-box-content"> <div class="inner-box-content">
{{ {{ bill.news?.newsContent }}
bill.news?.newsContent
}}
</div> </div>
</div> </div>
</div> </div>
...@@ -223,7 +224,12 @@ ...@@ -223,7 +224,12 @@
</div> </div>
</div> </div>
<div class="box2-main"> <div class="box2-main">
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index" @click="handleClickToDetailO(item)"> <div
class="box2-main-item"
v-for="(item, index) in warningList"
:key="index"
@click="handleClickToDetailO(item)"
>
<div <div
class="item-left" class="item-left"
:class="{ :class="{
...@@ -333,24 +339,23 @@ ...@@ -333,24 +339,23 @@
<img src="./assets/images/tips-icon.png" alt="" /> <img src="./assets/images/tips-icon.png" alt="" />
</div> </div>
<div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> --> <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> -->
<div class="box5-select"> <div class="box5-select">
<el-select <el-select
v-model="box5Select" v-model="box5Select"
placeholder="选择领域" placeholder="选择领域"
@change="handleBox5Change" @change="handleBox5Change"
style="width: 150px" style="width: 150px"
> >
<el-option label="全部领域" value="全部领域" /> <el-option label="全部领域" value="全部领域" />
<el-option <el-option
v-for="item in categoryList" v-for="item in categoryList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
</div> </div>
</div> </div>
</div> </div>
<div <div
...@@ -395,14 +400,14 @@ ...@@ -395,14 +400,14 @@
<img src="./assets/images/tips-icon.png" alt="" /> <img src="./assets/images/tips-icon.png" alt="" />
</div> --> </div> -->
<!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> --> <!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> -->
<el-select v-model="box7selectetedTime" placeholder="选择时间" style="width: 90px"> <el-select v-model="box7selectetedTime" placeholder="选择时间" style="width: 90px">
<el-option <el-option
v-for="item in box7YearList" v-for="item in box7YearList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</div> </div>
</div> </div>
<!-- <div class="box-center"> <!-- <div class="box-center">
...@@ -440,14 +445,14 @@ ...@@ -440,14 +445,14 @@
<img src="./assets/images/tips-icon.png" alt="" /> <img src="./assets/images/tips-icon.png" alt="" />
</div> --> </div> -->
<!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> --> <!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> -->
<el-select v-model="box8selectetedTime" placeholder="选择时间" style="width: 90px"> <el-select v-model="box8selectetedTime" placeholder="选择时间" style="width: 90px">
<el-option <el-option
v-for="item in box8YearList" v-for="item in box8YearList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</div> </div>
</div> </div>
<!-- <div class="box-center"> <!-- <div class="box-center">
...@@ -508,14 +513,14 @@ ...@@ -508,14 +513,14 @@
<img src="./assets/images/tips-icon.png" alt="" /> <img src="./assets/images/tips-icon.png" alt="" />
</div> --> </div> -->
<!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> --> <!-- <div class="header-right-text">{{ "数据来源:美国国会官方网站" }}</div> -->
<el-select v-model="box9selectetedTime" placeholder="选择时间" style="width: 90px"> <el-select v-model="box9selectetedTime" placeholder="选择时间" style="width: 90px">
<el-option <el-option
v-for="item in box9YearList" v-for="item in box9YearList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</div> </div>
</div> </div>
<!-- <div class="box-center"> <!-- <div class="box-center">
...@@ -755,7 +760,8 @@ ...@@ -755,7 +760,8 @@
import { onMounted, ref, computed, onUnmounted, nextTick, watch } from "vue"; import { onMounted, ref, computed, onUnmounted, nextTick, watch } from "vue";
import router from "@/router/index"; import router from "@/router/index";
import setChart from "@/utils/setChart"; import setChart from "@/utils/setChart";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import { import {
getBillIndustry, getBillIndustry,
getHotBills, getHotBills,
...@@ -840,7 +846,7 @@ const formatMessageTime = timeStr => { ...@@ -840,7 +846,7 @@ const formatMessageTime = timeStr => {
}; };
// 跳转人物主页 // 跳转人物主页
const handleClcikToCharacter = async (id) => { const handleClcikToCharacter = async id => {
const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList")); const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList"));
let type = 0; let type = 0;
...@@ -943,18 +949,14 @@ const curBill = ref({ ...@@ -943,18 +949,14 @@ const curBill = ref({
// 查看详情 // 查看详情
const handleClickToDetail = () => { const handleClickToDetail = () => {
window.sessionStorage.setItem("billId", curBill.value.billId); window.sessionStorage.setItem("billId", curBill.value.billId);
const route = router.resolve( const route = router.resolve({
{ path: "/billLayout",
path: "/billLayout", query: {
query: { billId: curBill.value.billId
billId: curBill.value.billId,
},
} }
});
);
console.log(route); console.log(route);
window.open(route.href, "_blank"); window.open(route.href, "_blank");
}; };
// 查看详情 传递参数 // 查看详情 传递参数
...@@ -990,7 +992,6 @@ const handleToMoreNews = () => { ...@@ -990,7 +992,6 @@ const handleToMoreNews = () => {
// 风险信号 // 风险信号
const warningList = ref([]); const warningList = ref([]);
const box7selectetedTime = ref("2025"); const box7selectetedTime = ref("2025");
const box7YearList = ref([ const box7YearList = ref([
{ {
...@@ -1848,25 +1849,11 @@ onUnmounted(() => {}); ...@@ -1848,25 +1849,11 @@ onUnmounted(() => {});
overflow-y: auto; overflow-y: auto;
.home-header { .home-header {
height: 64px; height: 64px;
color: #fff;
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
line-height: 26px;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
box-sizing: border-box; box-sizing: border-box;
padding-left: 160px; padding: 0 160px;
display: flex; display: flex;
.header-item { justify-content: space-between;
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main { .home-main {
width: 1600px; width: 1600px;
......
...@@ -41,12 +41,11 @@ ...@@ -41,12 +41,11 @@
<!-- 面包屑 --> <!-- 面包屑 -->
<div class="breadcrumb" v-show="!isShow"> <div class="breadcrumb" v-show="!isShow">
<div class="breadcrumb-box"> <div class="header-left">
<div class="breadcrumb-item">国家科技安全</div> <HeaderMenu></HeaderMenu>
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> </div>
<div class="breadcrumb-item back-item" @click="handleBackHome">中美博弈概览</div> <div class="header-right">
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> <headerInfo curTitleName="合作限制"></headerInfo>
<div class="breadcrumb-item">合作限制</div>
</div> </div>
</div> </div>
<!-- 主页面 --> <!-- 主页面 -->
...@@ -136,6 +135,8 @@ ...@@ -136,6 +135,8 @@
<script setup> <script setup>
import { ref, onMounted, nextTick } from "vue"; import { ref, onMounted, nextTick } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import comTitle from "./common/comTitle.vue"; import comTitle from "./common/comTitle.vue";
import newData from "./components/dataNew/index.vue"; import newData from "./components/dataNew/index.vue";
import askPage from "./components/askPage/index.vue"; import askPage from "./components/askPage/index.vue";
...@@ -201,25 +202,9 @@ const handleBackHome = () => { ...@@ -201,25 +202,9 @@ const handleBackHome = () => {
height: 64px; height: 64px;
background-image: url("./assets/images/bread-bg.png"); background-image: url("./assets/images/bread-bg.png");
background-size: cover; background-size: cover;
padding: 17px 0px 21px 0px; padding: 0 160px;
.breadcrumb-box { display: flex;
margin-left: 160px; justify-content: space-between;
display: flex;
// align-items: center;
.breadcrumb-item {
font-size: 20px;
font-weight: 700;
font-family: "Microsoft YaHei";
line-height: 30px;
color: #fff;
}
.back-item {
cursor: pointer;
&:hover {
color: #999;
}
}
}
} }
.main-content { .main-content {
position: relative; position: relative;
......
...@@ -2,7 +2,12 @@ ...@@ -2,7 +2,12 @@
<div class="home-wrapper"> <div class="home-wrapper">
<div class="search-header" v-show="isShow"> <div class="search-header" v-show="isShow">
<div class="home-main-header-center"> <div class="home-main-header-center">
<el-input v-model="searchDecreeText" @keyup.enter="handleSearch" style="width: 680px; height: 100%" placeholder="搜索科技政令" /> <el-input
v-model="searchDecreeText"
@keyup.enter="handleSearch"
style="width: 680px; height: 100%"
placeholder="搜索科技政令"
/>
<div class="search"> <div class="search">
<div class="search-icon"> <div class="search-icon">
<img src="./assets/images/search-icon.png" alt="" /> <img src="./assets/images/search-icon.png" alt="" />
...@@ -40,14 +45,20 @@ ...@@ -40,14 +45,20 @@
<div class="home-main" :class="{ scrollHomeMain: isShow }" ref="containerRef"> <div class="home-main" :class="{ scrollHomeMain: isShow }" ref="containerRef">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-top" v-show="!isShow"> <div class="home-main-header-top" v-show="!isShow">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">行政令</div> <headerInfo curTitleName="行政令"></headerInfo>
</div>
</div> </div>
<div class="home-main-header-center" v-show="!isShow"> <div class="home-main-header-center" v-show="!isShow">
<el-input v-model="searchDecreeText" @keyup.enter="handleSearch" style="width: 838px; height: 100%" placeholder="搜索科技政令" /> <el-input
v-model="searchDecreeText"
@keyup.enter="handleSearch"
style="width: 838px; height: 100%"
placeholder="搜索科技政令"
/>
<div class="search"> <div class="search">
<div class="search-icon"> <div class="search-icon">
<img src="./assets/images/search-icon.png" alt="" /> <img src="./assets/images/search-icon.png" alt="" />
...@@ -539,8 +550,9 @@ ...@@ -539,8 +550,9 @@
<script setup> <script setup>
import { onMounted, ref, computed, watch } from "vue"; import { onMounted, ref, computed, watch } from "vue";
import * as echarts from "echarts";
import router from "@/router"; import router from "@/router";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import { import {
getDepartmentList, getDepartmentList,
getLatestDecree, getLatestDecree,
...@@ -763,7 +775,6 @@ const warningList = ref([ ...@@ -763,7 +775,6 @@ const warningList = ref([
// postDate: "一天前", // postDate: "一天前",
// riskLevel: "特别重大" // riskLevel: "特别重大"
// } // }
]); ]);
const handlegetDecreeRiskSignal = async () => { const handlegetDecreeRiskSignal = async () => {
try { try {
...@@ -1164,7 +1175,7 @@ const pubTime = ref([ ...@@ -1164,7 +1175,7 @@ const pubTime = ref([
{ id: "2023", name: "2023年" }, { id: "2023", name: "2023年" },
{ id: "2022", name: "2022年" }, { id: "2022", name: "2022年" },
{ id: "2021", name: "2021年" }, { id: "2021", name: "2021年" },
{ id: "2020", name: "2020年" }, { id: "2020", name: "2020年" }
// { id: "更早时间", name: "更早时间" } // { id: "更早时间", name: "更早时间" }
]); ]);
const activePubTime = ref(["2025"]); const activePubTime = ref(["2025"]);
...@@ -1213,7 +1224,7 @@ const handleGetDecreeOrderList = async () => { ...@@ -1213,7 +1224,7 @@ const handleGetDecreeOrderList = async () => {
return { return {
id: item.id, id: item.id,
time: item.postDate, time: item.postDate,
title: item.proposeOrgName+ ': '+ item.name, title: item.proposeOrgName + ": " + item.name,
desc: item.describe, desc: item.describe,
img: item.orgImage, img: item.orgImage,
tagList: item.industryList tagList: item.industryList
...@@ -1274,18 +1285,17 @@ const handleSwithCurDecree = name => { ...@@ -1274,18 +1285,17 @@ const handleSwithCurDecree = name => {
}; };
// 搜索 // 搜索
const searchDecreeText = ref('') const searchDecreeText = ref("");
const handleSearch = () => { const handleSearch = () => {
const curRoute = router.resolve({ const curRoute = router.resolve({
path: "/searchResults", path: "/searchResults",
query: { query: {
searchText: searchDecreeText.value, searchText: searchDecreeText.value,
areaName: '政令' areaName: "政令"
} }
}); });
window.open(curRoute.href, "_blank"); window.open(curRoute.href, "_blank");
};
}
onMounted(async () => { onMounted(async () => {
handleGetAreaList(); handleGetAreaList();
...@@ -1419,28 +1429,11 @@ onMounted(async () => { ...@@ -1419,28 +1429,11 @@ onMounted(async () => {
.home-main-header-top { .home-main-header-top {
width: 100%; width: 100%;
height: 64px; height: 64px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
color: #fff;
box-sizing: border-box; box-sizing: border-box;
padding-left: 160px;
display: flex; display: flex;
.header-item { justify-content: space-between;
margin: 0 3px; padding: 0 160px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main-header-center { .home-main-header-center {
margin-top: 48px; margin-top: 48px;
......
...@@ -38,15 +38,16 @@ ...@@ -38,15 +38,16 @@
</div> </div>
</div> </div>
<div class="home-header" v-show="!isShow"> <div class="home-header" v-show="!isShow">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">出口管制</div> <headerInfo curTitleName="出口管制"></headerInfo>
</div>
</div> </div>
<div class="home-main" ref="homeMainRef" :class="{ 'scroll-main': isShow }"> <div class="home-main" ref="homeMainRef" :class="{ 'scroll-main': isShow }">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-center" v-show="!isShow"> <div class="home-main-header-center" v-show="!isShow">
<el-input v-model="searchExportControlText" style="width: 800px; height: 100%" placeholder="搜索出口管制" /> <el-input v-model="searchExportControlText" style="width: 800px; height: 100%" placeholder="搜索出口管制" />
<div class="search"> <div class="search">
<div class="search-icon"> <div class="search-icon">
...@@ -55,7 +56,7 @@ ...@@ -55,7 +56,7 @@
<div class="search-text" @click="handleSearch">搜索</div> <div class="search-text" @click="handleSearch">搜索</div>
</div> </div>
</div> </div>
<div class="home-main-header-btn-box" v-show="!isShow"> <div class="home-main-header-btn-box" v-show="!isShow">
<div class="btn" @click="handleToPosi('position1')"> <div class="btn" @click="handleToPosi('position1')">
<div class="btn-text">{{ "最新动态" }}</div> <div class="btn-text">{{ "最新动态" }}</div>
<div class="btn-icon"> <div class="btn-icon">
...@@ -82,9 +83,17 @@ ...@@ -82,9 +83,17 @@
</div> </div>
</div> </div>
<div class="home-main-header-footer-info"> <div class="home-main-header-footer-info">
<InfoCard v-for="(item, index) in infoList" :key="item.id" :title="item.nameZh" :subtitle="item.nameAbbr" <InfoCard
:description="item.description" :quantity="item.postCount" unit="次" :color="infoListColor[index]" v-for="(item, index) in infoList"
@click="handleToEntityListNoId(item)" /> :key="item.id"
:title="item.nameZh"
:subtitle="item.nameAbbr"
:description="item.description"
:quantity="item.postCount"
unit="次"
:color="infoListColor[index]"
@click="handleToEntityListNoId(item)"
/>
</div> </div>
</div> </div>
...@@ -110,8 +119,15 @@ ...@@ -110,8 +119,15 @@
<img src="./assets/images/box1-right.png" alt="" /> <img src="./assets/images/box1-right.png" alt="" />
</div> </div>
</div> </div>
<el-carousel ref="carouselRef" height="350px" :autoplay="true" :interval="3000" arrow="never" <el-carousel
indicator-position="none" @change="handleCarouselChange"> ref="carouselRef"
height="350px"
:autoplay="true"
:interval="3000"
arrow="never"
indicator-position="none"
@change="handleCarouselChange"
>
<el-carousel-item v-for="(item, index) in entitiesDataInfoList" :key="item.id + index"> <el-carousel-item v-for="(item, index) in entitiesDataInfoList" :key="item.id + index">
<div> <div>
<div class="box1-top"> <div class="box1-top">
...@@ -129,8 +145,11 @@ ...@@ -129,8 +145,11 @@
</div> </div>
<div class="box1-top-content-item"> <div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 涉及领域:</span> <span class="box1-top-content-item-title">· 涉及领域:</span>
<div class="box1-top-content-item-tags" v-for="(domainItem, index) in item.domains" <div
:key="index"> class="box1-top-content-item-tags"
v-for="(domainItem, index) in item.domains"
:key="index"
>
<el-tag :type="getTagType(domainItem)">{{ domainItem }}</el-tag> <el-tag :type="getTagType(domainItem)">{{ domainItem }}</el-tag>
</div> </div>
</div> </div>
...@@ -139,10 +158,18 @@ ...@@ -139,10 +158,18 @@
<div class="box1-bottom"> <div class="box1-bottom">
<div class="box1-bottom-title">· 涉及主要实体:</div> <div class="box1-bottom-title">· 涉及主要实体:</div>
<div class="box1-bottom-content"> <div class="box1-bottom-content">
<div class="box1-bottom-content-item" v-for="(ett, index) in item.sanEntities" :key="index" <div
@click="handleEntityClick(ett)"> class="box1-bottom-content-item"
<el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img" v-for="(ett, index) in item.sanEntities"
alt=""></el-image> :key="index"
@click="handleEntityClick(ett)"
>
<el-image
v-if="ett.img"
class="box1-bottom-content-item-img"
:src="ett.img"
alt=""
></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined"> <div v-else class="box1-bottom-content-item-imgUndefined">
{{ {{
(ett.entityNameZh || ett.enName)?.match( (ett.entityNameZh || ett.enName)?.match(
...@@ -173,16 +200,28 @@ ...@@ -173,16 +200,28 @@
</custom-container> </custom-container>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<custom-container titleType="danger" title="风险信号" :headerNum="warningList.length" :titleIcon="dangerIcon" <custom-container
height="450px"> titleType="danger"
title="风险信号"
:headerNum="warningList.length"
:titleIcon="dangerIcon"
height="450px"
>
<template #default> <template #default>
<div class="box2-main"> <div class="box2-main">
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index" <div
@click="handleToRiskSignalDetail(item)"> class="box2-main-item"
<div class="item-left" :class="{ v-for="(item, index) in warningList"
itemLeftStatus1: item.status === '一般风险', :key="index"
itemLeftStatus2: item.status === '重大风险' @click="handleToRiskSignalDetail(item)"
}"> >
<div
class="item-left"
:class="{
itemLeftStatus1: item.status === '一般风险',
itemLeftStatus2: item.status === '重大风险'
}"
>
{{ item.status }} {{ item.status }}
</div> </div>
<div class="item-right"> <div class="item-right">
...@@ -227,9 +266,17 @@ ...@@ -227,9 +266,17 @@
<custom-container title="社交媒体" :titleIcon="dialogIcon" height="450px"> <custom-container title="社交媒体" :titleIcon="dialogIcon" height="450px">
<template #default> <template #default>
<div class="dialog-list"> <div class="dialog-list">
<MessageBubble v-for="(item, index) in socialMediaList" @click="handlePerClick(item)" <MessageBubble
@info-click="handleMediaClick(item)" :key="index" :avatar="item.avatar" :name="item.name" v-for="(item, index) in socialMediaList"
:time="item.time" :source="item.source" :content="item.content" /> @click="handlePerClick(item)"
@info-click="handleMediaClick(item)"
:key="index"
:avatar="item.avatar"
:name="item.name"
:time="item.time"
:source="item.source"
:content="item.content"
/>
<!-- <MessageBubble <!-- <MessageBubble
:avatar="customMessage.avatar" :avatar="customMessage.avatar"
:name="customMessage.name" :name="customMessage.name"
...@@ -281,14 +328,19 @@ ...@@ -281,14 +328,19 @@
<template #default="scope"> <template #default="scope">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span> <span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false" <el-progress
:status="getStatus(scope.row.percent)" /> :percentage="scope.row.percent * 100"
:show-text="false"
:status="getStatus(scope.row.percent)"
/>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重点领域" width="280" align="center"> <el-table-column label="重点领域" width="280" align="center">
<template #default="scope"> <template #default="scope">
<div style="display: flex; justify-content: center; align-items: center; gap: 5px"> <div
style="display: flex; justify-content: center; align-items: center; gap: 5px"
>
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{ <el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
tag tag
}}</el-tag> }}</el-tag>
...@@ -305,14 +357,19 @@ ...@@ -305,14 +357,19 @@
<template #default="scope"> <template #default="scope">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span> <span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false" <el-progress
:status="getStatus(scope.row.percent)" /> :percentage="scope.row.percent * 100"
:show-text="false"
:status="getStatus(scope.row.percent)"
/>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重点领域" width="280" align="center"> <el-table-column label="重点领域" width="280" align="center">
<template #default="scope"> <template #default="scope">
<div style="display: flex; justify-content: center; align-items: center; gap: 5px"> <div
style="display: flex; justify-content: center; align-items: center; gap: 5px"
>
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{ <el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
tag tag
}}</el-tag> }}</el-tag>
...@@ -329,8 +386,11 @@ ...@@ -329,8 +386,11 @@
<template #default="scope"> <template #default="scope">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span> <span style="margin-right: 10px; width: 40px">{{ scope.row.num }}</span>
<el-progress :percentage="scope.row.percent * 100" :show-text="false" <el-progress
:status="getStatus(scope.row.percent)" /> :percentage="scope.row.percent * 100"
:show-text="false"
:status="getStatus(scope.row.percent)"
/>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -377,9 +437,13 @@ ...@@ -377,9 +437,13 @@
<el-row :gutter="20" style="width: 1600px; margin: 0 auto"> <el-row :gutter="20" style="width: 1600px; margin: 0 auto">
<CustomTitle id="position4" title="资源库" style="margin-top: 54px" /> <CustomTitle id="position4" title="资源库" style="margin-top: 54px" />
<div class="resource-tabs"> <div class="resource-tabs">
<div v-for="tab in resourceTabs" :key="tab.value" class="resource-tab-item" <div
v-for="tab in resourceTabs"
:key="tab.value"
class="resource-tab-item"
:class="{ active: activeResourceTab === tab.value, disabled: tab.disabled }" :class="{ active: activeResourceTab === tab.value, disabled: tab.disabled }"
@click="handleResourceTabClick(tab)"> @click="handleResourceTabClick(tab)"
>
{{ tab.label }} {{ tab.label }}
</div> </div>
</div> </div>
...@@ -392,15 +456,25 @@ ...@@ -392,15 +456,25 @@
<div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title"> <div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title">
<div class="box4-item-left"> <div class="box4-item-left">
<el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" /> <el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" />
<div class="box4-item-left-line" v-if="idx + 1 != sanctionProcessList.length"></div> <div
class="box4-item-left-line"
v-if="idx + 1 != sanctionProcessList.length"
></div>
</div> </div>
<div class="box4-item-right"> <div class="box4-item-right">
<div class="box4-item-right-header" @click="handleSanc(item)"> <div class="box4-item-right-header" @click="handleSanc(item)">
<span class="box4-item-right-header-title">{{ item.postDate }}{{ item.title }}</span> <span class="box4-item-right-header-title"
>{{ item.postDate }}{{ item.title }}</span
>
<span class="box4-item-right-header-desc">{{ item.desc }}</span> <span class="box4-item-right-header-desc">{{ item.desc }}</span>
</div> </div>
<el-tooltip effect="dark" :content="item.content" popper-class="common-prompt-popper" <el-tooltip
placement="top" :show-after="500"> effect="dark"
:content="item.content"
popper-class="common-prompt-popper"
placement="top"
:show-after="500"
>
<div class="box4-item-right-content"> <div class="box4-item-right-content">
{{ item.content }} {{ item.content }}
</div> </div>
...@@ -408,8 +482,12 @@ ...@@ -408,8 +482,12 @@
</div> </div>
</div> </div>
</div> </div>
<div class="box4-footer" :style="{ marginTop: sanctionProcessList.length > 0 ? '0px' : 'auto' }"> <div
<el-button type="primary" link @click="handleGetMore">查看更多 class="box4-footer"
:style="{ marginTop: sanctionProcessList.length > 0 ? '0px' : 'auto' }"
>
<el-button type="primary" link @click="handleGetMore"
>查看更多
<el-icon> <el-icon>
<DArrowRight /> <DArrowRight />
</el-icon> </el-icon>
...@@ -426,8 +504,15 @@ ...@@ -426,8 +504,15 @@
</template> </template>
<template #default> <template #default>
<div class="box5"> <div class="box5">
<el-table :data="entitiesList" class="sanction-table" stripe empty-text="暂无数据" height="700px" <el-table
header-row-class-name="table-header" row-class-name="table-row"> :data="entitiesList"
class="sanction-table"
stripe
empty-text="暂无数据"
height="700px"
header-row-class-name="table-header"
row-class-name="table-row"
>
<!-- <el-table-column prop="index" label="序号" width="80" align="center"> <!-- <el-table-column prop="index" label="序号" width="80" align="center">
<template #default="scope"> <template #default="scope">
{{ scope.$index + 1 + (currentPage - 1) * pageSize }} {{ scope.$index + 1 + (currentPage - 1) * pageSize }}
...@@ -437,8 +522,12 @@ ...@@ -437,8 +522,12 @@
<el-table-column prop="name" label="实体名称" min-width="200"> <el-table-column prop="name" label="实体名称" min-width="200">
<template #default="scope"> <template #default="scope">
<div class="tableName" @click="handleCompClick(scope.row)"> <div class="tableName" @click="handleCompClick(scope.row)">
<el-image v-if="scope.row.img" class="box1-bottom-content-item-img" :src="scope.row.img" <el-image
alt=""></el-image> v-if="scope.row.img"
class="box1-bottom-content-item-img"
:src="scope.row.img"
alt=""
></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined"> <div v-else class="box1-bottom-content-item-imgUndefined">
{{ {{
(scope.row.name || scope.row.enName)?.match( (scope.row.name || scope.row.enName)?.match(
...@@ -489,13 +578,19 @@ ...@@ -489,13 +578,19 @@
<el-table-column prop="revenue" label="50%规则子企业" width="280" align="right"> <el-table-column prop="revenue" label="50%规则子企业" width="280" align="right">
<template #default="scope"> <template #default="scope">
<div class="num-item" v-if="scope.row.ruleOrgCount > 0"> <div class="num-item" v-if="scope.row.ruleOrgCount > 0">
<div class="name-item" :class="[ <div
'revenue-cell', class="name-item"
scope.row.revenue === '无营收数据' ? 'no-revenue' : '' :class="[
]"> 'revenue-cell',
scope.row.revenue === '无营收数据' ? 'no-revenue' : ''
]"
>
{{ scope.row.ruleOrgList[0].orgName }}...等 {{ scope.row.ruleOrgList[0].orgName }}...等
</div> </div>
<div style="width: 50px; color: #409eff; cursor: pointer" @click="handleOrgClick(scope.row)"> <div
style="width: 50px; color: #409eff; cursor: pointer"
@click="handleOrgClick(scope.row)"
>
{{ scope.row.ruleOrgCount }}家> {{ scope.row.ruleOrgCount }}家>
</div> </div>
</div> </div>
...@@ -507,8 +602,15 @@ ...@@ -507,8 +602,15 @@
<!-- <div class="pagination-info"> <!-- <div class="pagination-info">
第{{ currentPage }}页,共{{ totalPages }}页 第{{ currentPage }}页,共{{ totalPages }}页
</div> --> </div> -->
<el-pagination v-model:current-page="currentPage" :page-size="pageSize" :total="total" <el-pagination
:pager-count="5" layout="prev, pager, next" background @current-change="handlePageChange" /> v-model:current-page="currentPage"
:page-size="pageSize"
:total="total"
:pager-count="5"
layout="prev, pager, next"
background
@current-change="handlePageChange"
/>
</div> </div>
</div> </div>
</template> </template>
...@@ -594,8 +696,12 @@ ...@@ -594,8 +696,12 @@
<div class="dialog-title">50%规则子企业</div> <div class="dialog-title">50%规则子企业</div>
</template> </template>
<div class="dialog-ett-wrpper"> <div class="dialog-ett-wrpper">
<div class="box1-bottom-content-item" v-for="(ett, index) in currentOrgList" :key="index" <div
@click="handleEntityClick(ett)"> class="box1-bottom-content-item"
v-for="(ett, index) in currentOrgList"
:key="index"
@click="handleEntityClick(ett)"
>
<el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img" alt=""></el-image> <el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img" alt=""></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined"> <div v-else class="box1-bottom-content-item-imgUndefined">
{{ (ett.orgName || ett.enName)?.match(/[\u4e00-\u9fa5a-zA-Z0-9]/)?.[0] }} {{ (ett.orgName || ett.enName)?.match(/[\u4e00-\u9fa5a-zA-Z0-9]/)?.[0] }}
...@@ -629,6 +735,8 @@ ...@@ -629,6 +735,8 @@
<script setup> <script setup>
import { onMounted, ref, computed, reactive, shallowRef, watch, nextTick } from "vue"; import { onMounted, ref, computed, reactive, shallowRef, watch, nextTick } from "vue";
import { useContainerScroll } from "@/hooks/useScrollShow"; import { useContainerScroll } from "@/hooks/useScrollShow";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
const homeMainRef = ref(null); const homeMainRef = ref(null);
const { isShow } = useContainerScroll(homeMainRef); const { isShow } = useContainerScroll(homeMainRef);
import * as echarts from "echarts"; import * as echarts from "echarts";
...@@ -736,7 +844,34 @@ const techOptions = [ ...@@ -736,7 +844,34 @@ const techOptions = [
{ label: "太空", value: 13 }, { label: "太空", value: 13 },
{ label: "核", value: 14 } { label: "核", value: 14 }
]; ];
const timeOptions = ["全部时间", "2025年", "2024年", "2023年", "2022年", "2021年", "2020年", "2019年", "2018年", "2017年", "2016年", "2015年", "2014年", "2013年", "2012年", "2011年", "2010年", "2009年", "2008年", "2007年", "2006年", "2005年", "2004年", "2003年", "2002年", "2001年"]; const timeOptions = [
"全部时间",
"2025年",
"2024年",
"2023年",
"2022年",
"2021年",
"2020年",
"2019年",
"2018年",
"2017年",
"2016年",
"2015年",
"2014年",
"2013年",
"2012年",
"2011年",
"2010年",
"2009年",
"2008年",
"2007年",
"2006年",
"2005年",
"2004年",
"2003年",
"2002年",
"2001年"
];
const checkedTech = ref([0]); const checkedTech = ref([0]);
const checkedTime = ref(["全部时间"]); const checkedTime = ref(["全部时间"]);
...@@ -1196,9 +1331,15 @@ const fetchSanctionList = async () => { ...@@ -1196,9 +1331,15 @@ const fetchSanctionList = async () => {
const res = await getExportControlList(params); const res = await getExportControlList(params);
if (res && res.content) { if (res && res.content) {
sanctionList.value = res.content.map(item => { sanctionList.value = res.content.map(item => {
const tags = Array.isArray(item.techDomains) ? item.techDomains : item.techDomain ? [item.techDomain] : item.techDomainList || []; const tags = Array.isArray(item.techDomains)
? item.techDomains
const fullTime = item.startTime ? formatAnyDateToChinese(item.startTime) : item.postDate || item.publishDate || item.date; : item.techDomain
? [item.techDomain]
: item.techDomainList || [];
const fullTime = item.startTime
? formatAnyDateToChinese(item.startTime)
: item.postDate || item.publishDate || item.date;
let year = ""; let year = "";
let dateStr = fullTime; let dateStr = fullTime;
if (typeof fullTime === "string") { if (typeof fullTime === "string") {
...@@ -1221,12 +1362,16 @@ const fetchSanctionList = async () => { ...@@ -1221,12 +1362,16 @@ const fetchSanctionList = async () => {
title: item.entityNameZh || item.entityName || item.title || item.name, title: item.entityNameZh || item.entityName || item.title || item.name,
desc: item.sanReason || item.description || item.summary || item.content, desc: item.sanReason || item.description || item.summary || item.content,
tags: tags, tags: tags,
countTag: item.cnEntityCount ? `${item.cnEntityCount}家中国实体` : item.ruleOrgCount ? `${item.ruleOrgCount}家关联实体` : item.countTag || "" countTag: item.cnEntityCount
? `${item.cnEntityCount}家中国实体`
: item.ruleOrgCount
? `${item.ruleOrgCount}家关联实体`
: item.countTag || ""
}; };
}); });
totalAll.value = res.totalElements; totalAll.value = res.totalElements;
} }
} catch (error) { } } catch (error) {}
}; };
const handlePageChangeAll = val => { const handlePageChangeAll = val => {
...@@ -1363,7 +1508,7 @@ const searchKeyword = ref(""); ...@@ -1363,7 +1508,7 @@ const searchKeyword = ref("");
const resourceTabs = [ const resourceTabs = [
{ label: "全部制裁", value: "all", disabled: false }, { label: "全部制裁", value: "all", disabled: false },
{ label: "实体清单", value: "entity", disabled: false }, { label: "实体清单", value: "entity", disabled: false },
{ label: "商业管制清单", value: "commerce", disabled: true }, { label: "商业管制清单", value: "commerce", disabled: true }
// { label: "关键与新兴技术清单", value: "tech", disabled: true }, // { label: "关键与新兴技术清单", value: "tech", disabled: true },
// { label: "军事最终用户清单", value: "military", disabled: true } // { label: "军事最终用户清单", value: "military", disabled: true }
]; ];
...@@ -1498,7 +1643,7 @@ const handleGetHylyList = async () => { ...@@ -1498,7 +1643,7 @@ const handleGetHylyList = async () => {
hylymc: "全部分类" hylymc: "全部分类"
}; };
categoryList.value = [obj, ...categoryList.value]; categoryList.value = [obj, ...categoryList.value];
} catch (error) { } } catch (error) {}
}; };
const chart1Data = ref({ const chart1Data = ref({
...@@ -1607,13 +1752,11 @@ const handleSearch = () => { ...@@ -1607,13 +1752,11 @@ const handleSearch = () => {
path: "/searchResults", path: "/searchResults",
query: { query: {
searchText: searchExportControlText.value, searchText: searchExportControlText.value,
areaName: '实体清单' areaName: "实体清单"
} }
}); });
window.open(curRoute.href, "_blank"); window.open(curRoute.href, "_blank");
};
}
onMounted(async () => { onMounted(async () => {
handleGetHylyList(); handleGetHylyList();
...@@ -1656,28 +1799,12 @@ const handleMediaClick = item => { ...@@ -1656,28 +1799,12 @@ const handleMediaClick = item => {
.home-header { .home-header {
height: 64px; height: 64px;
color: #fff;
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
line-height: 26px;
line-height: 64px;
background: url("@/assets/images/nav-bg.png"); background: url("@/assets/images/nav-bg.png");
box-sizing: border-box; box-sizing: border-box;
padding-left: 160px; padding-left: 160px;
display: flex; display: flex;
justify-content: space-between;
.header-item { padding: 0 160px;
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.box1 { .box1 {
...@@ -2030,7 +2157,6 @@ const handleMediaClick = item => { ...@@ -2030,7 +2157,6 @@ const handleMediaClick = item => {
} }
.box3-content { .box3-content {
// flex: 1; // flex: 1;
.el-progress--line { .el-progress--line {
width: 82px; width: 82px;
......
<template> <template>
<div class="home-wrapper"> <div class="home-wrapper">
<div class="home-header"> <div class="home-header">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">投融资限制</div> <headerInfo curTitleName="投融资限制"></headerInfo>
</div>
</div> </div>
<div class="home-main"> <div class="home-main">
<div class="home-main-header"> <div class="home-main-header">
...@@ -145,11 +146,7 @@ ...@@ -145,11 +146,7 @@
<custom-container titleType="danger" title="风险信号" :titleIcon="dangerIcon" height="450px"> <custom-container titleType="danger" title="风险信号" :titleIcon="dangerIcon" height="450px">
<template #default> <template #default>
<div class="box2-main"> <div class="box2-main">
<div <div class="box2-main-item" v-for="(item, index) in warningList" :key="index">
class="box2-main-item"
v-for="(item, index) in warningList"
:key="index"
>
<div <div
class="item-left" class="item-left"
:class="{ :class="{
...@@ -517,6 +514,8 @@ ...@@ -517,6 +514,8 @@
<script setup> <script setup>
import { onMounted, ref, computed } from "vue"; import { onMounted, ref, computed } from "vue";
import scrollToTop from "@/utils/scrollToTop"; import scrollToTop from "@/utils/scrollToTop";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import setChart from "@/utils/setChart"; import setChart from "@/utils/setChart";
import * as echarts from "echarts"; import * as echarts from "echarts";
import { DArrowRight, Warning, Search } from "@element-plus/icons-vue"; import { DArrowRight, Warning, Search } from "@element-plus/icons-vue";
...@@ -1317,25 +1316,12 @@ onMounted(async () => { ...@@ -1317,25 +1316,12 @@ onMounted(async () => {
.home-header { .home-header {
height: 64px; height: 64px;
color: #fff;
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
line-height: 26px;
line-height: 64px;
background: url("@/assets/images/nav-bg.png"); background: url("@/assets/images/nav-bg.png");
box-sizing: border-box; box-sizing: border-box;
padding-left: 160px; padding-left: 160px;
display: flex; display: flex;
.header-item { justify-content: space-between;
margin: 0 3px; padding: 0 160px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.box1 { .box1 {
...@@ -1698,7 +1684,7 @@ onMounted(async () => { ...@@ -1698,7 +1684,7 @@ onMounted(async () => {
} }
.home-wrapper { .home-wrapper {
width: 100%; width: 100%;
height: calc(100vh - 96px); height: calc(100vh - 96px);
position: relative; position: relative;
overflow-y: hidden; overflow-y: hidden;
......
...@@ -41,11 +41,12 @@ ...@@ -41,11 +41,12 @@
<div class="home-main" :class="{ scrollHomeMain: isShow }" ref="containerRef"> <div class="home-main" :class="{ scrollHomeMain: isShow }" ref="containerRef">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-top" v-show="!isShow"> <div class="home-main-header-top" v-show="!isShow">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">主要创新主体</div> <headerInfo curTitleName="主要创新主体"></headerInfo>
</div>
</div> </div>
<div class="home-main-header-center" v-show="!isShow"> <div class="home-main-header-center" v-show="!isShow">
<el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索创新主体" /> <el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索创新主体" />
...@@ -403,6 +404,8 @@ ...@@ -403,6 +404,8 @@
import { onMounted, ref, computed } from "vue"; import { onMounted, ref, computed } from "vue";
import * as echarts from "echarts"; import * as echarts from "echarts";
import router from "@/router"; import router from "@/router";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import DivideHeader from "@/components/DivideHeader.vue"; import DivideHeader from "@/components/DivideHeader.vue";
import scrollToTop from "@/utils/scrollToTop"; import scrollToTop from "@/utils/scrollToTop";
import { useContainerScroll } from "@/hooks/useScrollShow"; import { useContainerScroll } from "@/hooks/useScrollShow";
...@@ -1193,31 +1196,12 @@ onMounted(async () => { ...@@ -1193,31 +1196,12 @@ onMounted(async () => {
.home-main-header-top { .home-main-header-top {
width: 100%; width: 100%;
height: 64px; height: 64px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
color: #fff;
box-sizing: border-box; box-sizing: border-box;
padding-left: 160px; padding: 0 160px;
display: flex; display: flex;
justify-content: space-between;
.header-item {
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main-header-center { .home-main-header-center {
......
...@@ -3,13 +3,12 @@ ...@@ -3,13 +3,12 @@
<div class="home-main"> <div class="home-main">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-top"> <div class="home-main-header-top">
<!-- <span>国家科技安全 </span>> <span>中美博弈概览 </span>> <div class="header-left">
<span>市场准入限制</span> --> <HeaderMenu></HeaderMenu>
<div class="header-item">国家科技安全</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> <headerInfo curTitleName="市场准入限制"></headerInfo>
<div class="header-item">></div> </div>
<div class="header-item">市场准入限制</div>
</div> </div>
<div class="home-main-header-center"> <div class="home-main-header-center">
<el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索市场准入限制调查" /> <el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索市场准入限制调查" />
...@@ -611,6 +610,8 @@ import setChart from "@/utils/setChart"; ...@@ -611,6 +610,8 @@ import setChart from "@/utils/setChart";
import scrollToTop from "@/utils/scrollToTop"; import scrollToTop from "@/utils/scrollToTop";
import router from "@/router"; import router from "@/router";
import DivideHeader from "@/components/DivideHeader.vue"; import DivideHeader from "@/components/DivideHeader.vue";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import getMultiLineChart from "./utils/multiLineChart"; import getMultiLineChart from "./utils/multiLineChart";
import getPieChart from "./utils/piechart"; import getPieChart from "./utils/piechart";
...@@ -1525,27 +1526,10 @@ onMounted(async () => { ...@@ -1525,27 +1526,10 @@ onMounted(async () => {
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: 64px; height: 64px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
font-family: Microsoft YaHei; padding: 0 160px;
font-size: 20px;
font-weight: 700;
color: #fff;
padding-left: 160px;
display: flex; display: flex;
.header-item { justify-content: space-between;
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main-header-center { .home-main-header-center {
margin-top: 48px; margin-top: 48px;
......
...@@ -41,12 +41,11 @@ ...@@ -41,12 +41,11 @@
<!-- 面包屑 --> <!-- 面包屑 -->
<div class="breadcrumb" v-show="!isShow"> <div class="breadcrumb" v-show="!isShow">
<div class="breadcrumb-box"> <div class="header-left">
<div class="breadcrumb-item">国家科技安全</div> <HeaderMenu></HeaderMenu>
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> </div>
<div class="breadcrumb-item back-item" @click="handleBackHome">中美博弈概览</div> <div class="header-right">
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> <headerInfo curTitleName="规则限制"></headerInfo>
<div class="breadcrumb-item">规则限制</div>
</div> </div>
</div> </div>
<!-- 主页面 --> <!-- 主页面 -->
...@@ -145,7 +144,8 @@ import newData from "./components/dataNew/index.vue"; ...@@ -145,7 +144,8 @@ import newData from "./components/dataNew/index.vue";
import askPage from "./components/askPage/index.vue"; import askPage from "./components/askPage/index.vue";
import dataSub from "./components/dataSub/index.vue"; import dataSub from "./components/dataSub/index.vue";
import resLib from "./components/resLib/index.vue"; import resLib from "./components/resLib/index.vue";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import { useContainerScroll } from "@/hooks/useScrollShow"; import { useContainerScroll } from "@/hooks/useScrollShow";
// 搜索框 // 搜索框
...@@ -205,25 +205,9 @@ const handleBackHome = () => { ...@@ -205,25 +205,9 @@ const handleBackHome = () => {
height: 64px; height: 64px;
background-image: url("./assets/images/bread-bg.png"); background-image: url("./assets/images/bread-bg.png");
background-size: cover; background-size: cover;
padding: 17px 0px 21px 0px; display: flex;
.breadcrumb-box { justify-content: space-between;
margin-left: 160px; padding: 0 160px;
display: flex;
// align-items: center;
.breadcrumb-item {
font-size: 20px;
font-weight: 700;
font-family: "Microsoft YaHei";
line-height: 30px;
color: #fff;
}
.back-item {
cursor: pointer;
&:hover {
color: #999;
}
}
}
} }
.main-content { .main-content {
position: relative; position: relative;
......
...@@ -2,12 +2,11 @@ ...@@ -2,12 +2,11 @@
<div class="coop-page"> <div class="coop-page">
<!-- 面包屑 --> <!-- 面包屑 -->
<div class="breadcrumb"> <div class="breadcrumb">
<div class="breadcrumb-box"> <div class="header-left">
<div class="breadcrumb-item">国家科技安全</div> <HeaderMenu></HeaderMenu>
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> </div>
<div class="breadcrumb-item back-item" @click="handleBackHome">中美博弈概览</div> <div class="header-right">
<div class="breadcrumb-item">&nbsp;>&nbsp;</div> <headerInfo curTitleName="科研资助体系"></headerInfo>
<div class="breadcrumb-item">科研资助体系</div>
</div> </div>
</div> </div>
<!-- 主页面 --> <!-- 主页面 -->
...@@ -116,7 +115,8 @@ import newData from "./components/dataNew/index.vue"; ...@@ -116,7 +115,8 @@ import newData from "./components/dataNew/index.vue";
import askPage from "./components/askPage/index.vue"; import askPage from "./components/askPage/index.vue";
import dataSub from "./components/dataSub/index.vue"; import dataSub from "./components/dataSub/index.vue";
import resLib from "./components/resLib/index.vue"; import resLib from "./components/resLib/index.vue";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import scrollToTop from "@/utils/scrollToTop"; import scrollToTop from "@/utils/scrollToTop";
import { useContainerScroll } from "@/hooks/useScrollShow"; import { useContainerScroll } from "@/hooks/useScrollShow";
...@@ -210,25 +210,9 @@ const dataList = ref([ ...@@ -210,25 +210,9 @@ const dataList = ref([
height: 64px; height: 64px;
background-image: url("./assets/images/bread-bg.png"); background-image: url("./assets/images/bread-bg.png");
background-size: cover; background-size: cover;
padding: 17px 0px 21px 0px; display: flex;
.breadcrumb-box { justify-content: space-between;
margin-left: 160px; padding: 0 160px;
display: flex;
// align-items: center;
.breadcrumb-item {
font-size: 20px;
font-weight: 700;
font-family: "Microsoft YaHei";
line-height: 30px;
color: #fff;
}
.back-item {
cursor: pointer;
&:hover {
color: #999;
}
}
}
} }
.main-content { .main-content {
overflow: auto; overflow: auto;
......
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
<div class="home-main"> <div class="home-main">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-top"> <div class="home-main-header-top">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">科技人物观点</div> <headerInfo curTitleName="科技人物观点"></headerInfo>
</div>
</div> </div>
<div class="home-main-header-center"> <div class="home-main-header-center">
<el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索科技人物及观点" /> <el-input v-model="input" style="width: 838px; height: 100%" placeholder="搜索科技人物及观点" />
...@@ -324,7 +325,8 @@ import { useRouter } from "vue-router"; ...@@ -324,7 +325,8 @@ import { useRouter } from "vue-router";
import scrollToTop from "@/utils/scrollToTop"; import scrollToTop from "@/utils/scrollToTop";
import DivideHeader from "@/components/DivideHeader.vue"; import DivideHeader from "@/components/DivideHeader.vue";
import setChart from "@/utils/setChart"; import setChart from "@/utils/setChart";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
// 图表工具函数(仅保留用到的) // 图表工具函数(仅保留用到的)
import getWordCloudChart from "./utils/worldCloudChart"; import getWordCloudChart from "./utils/worldCloudChart";
import getMultiLineChart from "./utils/multiLineChart"; import getMultiLineChart from "./utils/multiLineChart";
...@@ -506,30 +508,10 @@ onMounted(() => { ...@@ -506,30 +508,10 @@ onMounted(() => {
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: 64px; height: 64px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
font-family: Microsoft YaHei; padding: 0 160px;
font-size: 20px;
font-weight: 700;
color: #fff;
padding-left: 160px;
display: flex; display: flex;
justify-content: space-between;
.header-item {
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main-header-center { .home-main-header-center {
......
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
<div class="home-main"> <div class="home-main">
<div class="home-main-header"> <div class="home-main-header">
<div class="home-main-header-top"> <div class="home-main-header-top">
<div class="header-item">国家科技安全</div> <div class="header-left">
<div class="header-item">></div> <HeaderMenu></HeaderMenu>
<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div> </div>
<div class="header-item">></div> <div class="header-right">
<div class="header-item">科技智库</div> <headerInfo curTitleName="科技智库"></headerInfo>
</div>
</div> </div>
<div class="home-main-header-center"> <div class="home-main-header-center">
<el-input v-model="searchThinktankText" style="width: 838px; height: 100%" placeholder="搜索智库报告" /> <el-input v-model="searchThinktankText" style="width: 838px; height: 100%" placeholder="搜索智库报告" />
...@@ -85,12 +86,17 @@ ...@@ -85,12 +86,17 @@
</el-popover> --> </el-popover> -->
<div class="content">{{ item.desc }}</div> <div class="content">{{ item.desc }}</div>
<div class="tag-box"> <div class="tag-box">
<div class="tag" :class="{ <div
tag1: val.status === 1, class="tag"
tag2: val.status === 2, :class="{
tag3: val.status === 3, tag1: val.status === 1,
tag4: val.status === 4 tag2: val.status === 2,
}" v-for="(val, idx) in item.tagList" :key="idx"> tag3: val.status === 3,
tag4: val.status === 4
}"
v-for="(val, idx) in item.tagList"
:key="idx"
>
{{ val.industryName }} {{ val.industryName }}
</div> </div>
</div> </div>
...@@ -125,8 +131,14 @@ ...@@ -125,8 +131,14 @@
</div> </div>
<div class="box1-header-right" @click="handleClickToDetail">查看详情 ></div> <div class="box1-header-right" @click="handleClickToDetail">查看详情 ></div>
</div> </div>
<el-carousel ref="carouselRef" height="395px" :autoplay="true" :interval="3000" arrow="never" <el-carousel
indicator-position="none"> ref="carouselRef"
height="395px"
:autoplay="true"
:interval="3000"
arrow="never"
indicator-position="none"
>
<el-carousel-item v-for="(itemData, indexData) in box1Data" :key="index"> <el-carousel-item v-for="(itemData, indexData) in box1Data" :key="index">
<div class="box1-main"> <div class="box1-main">
<div class="box1-main-left"> <div class="box1-main-left">
...@@ -154,7 +166,6 @@ ...@@ -154,7 +166,6 @@
</div> </div>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
</div> </div>
<div class="box2"> <div class="box2">
<div class="box2-header"> <div class="box2-header">
...@@ -167,13 +178,20 @@ ...@@ -167,13 +178,20 @@
</div> </div>
</div> </div>
<div class="box2-main"> <div class="box2-main">
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index" <div
@click="handleClickToDetail()"> class="box2-main-item"
<div class="item-left" :class="{ v-for="(item, index) in warningList"
itemLeftStatus1: item.status === '一般风险 ' || item.status === '暂无数值', :key="index"
itemLeftStatus2: item.status === '重大风险', @click="handleClickToDetail()"
itemLeftStatus3: item.status === '特别重大' >
}"> <div
class="item-left"
:class="{
itemLeftStatus1: item.status === '一般风险 ' || item.status === '暂无数值',
itemLeftStatus2: item.status === '重大风险',
itemLeftStatus3: item.status === '特别重大'
}"
>
{{ item.status || "一般风险" }} {{ item.status || "一般风险" }}
</div> </div>
<div class="item-right"> <div class="item-right">
...@@ -212,7 +230,12 @@ ...@@ -212,7 +230,12 @@
</div> </div>
</div> </div>
<div class="box3-main"> <div class="box3-main">
<div class="box3-item" v-for="(news, index) in newsList" :key="index" @click="handleToNewsAnalysis(news)"> <div
class="box3-item"
v-for="(news, index) in newsList"
:key="index"
@click="handleToNewsAnalysis(news)"
>
<div class="left"> <div class="left">
<img :src="news.newsImage !== null ? news.newsImage : defaultNewsIcon" /> <img :src="news.newsImage !== null ? news.newsImage : defaultNewsIcon" />
</div> </div>
...@@ -279,8 +302,13 @@ ...@@ -279,8 +302,13 @@
</div> </div>
<div class="box5-select-box"> <div class="box5-select-box">
<el-select v-model="box5selectetedMonths" placeholder="选择时间" style="width: 120px"> <el-select v-model="box5selectetedMonths" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box5MonthsList" :key="item.value" :label="item.label" :value="item.value" <el-option
@click="changeBox5Data(item.value)" /> v-for="item in box5MonthsList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="changeBox5Data(item.value)"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -294,8 +322,13 @@ ...@@ -294,8 +322,13 @@
<div class="header-title">{{ "政策建议领域分布" }}</div> <div class="header-title">{{ "政策建议领域分布" }}</div>
<div class="box6-select-box"> <div class="box6-select-box">
<el-select v-model="box6selectetedYear" placeholder="选择时间" style="width: 120px"> <el-select v-model="box6selectetedYear" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box6YearList" :key="item.value" :label="item.label" :value="item.value" <el-option
@click="handleBox6()" /> v-for="item in box6YearList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="handleBox6()"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -324,21 +357,30 @@ ...@@ -324,21 +357,30 @@
</div> </div>
<div class="box8-select-box"> <div class="box8-select-box">
<el-select v-model="box8selectetedYear" placeholder="选择时间" style="width: 120px"> <el-select v-model="box8selectetedYear" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box8YearList" :key="item.value" :label="item.label" :value="item.value" <el-option
@click="changeBox8Data(item.value)" /> v-for="item in box8YearList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="changeBox8Data(item.value)"
/>
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="box8-main"> <div class="box8-main">
<div class="box8-item" v-for="(item, index) in box8Data" :key="index"> <div class="box8-item" v-for="(item, index) in box8Data" :key="index">
<div class="item-left" <div
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"> class="item-left"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ index + 1 }} {{ index + 1 }}
</div> </div>
<!-- <el-popover effect="dark" :content="item.clause" placement="top-start"> <!-- <el-popover effect="dark" :content="item.clause" placement="top-start">
<template #reference> --> <template #reference> -->
<div class="item-center" <div
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"> class="item-center"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ item.clause }} {{ item.clause }}
</div> </div>
<!-- </template> <!-- </template>
...@@ -354,11 +396,15 @@ ...@@ -354,11 +396,15 @@
<div class="home-main-footer"> <div class="home-main-footer">
<DivideHeader id="position4" class="divide-header" :titleText="'资源库'"></DivideHeader> <DivideHeader id="position4" class="divide-header" :titleText="'资源库'"></DivideHeader>
<div class="home-main-footer-header"> <div class="home-main-footer-header">
<div class="btn-box"> <div class="btn-box">
<div class="btn" :class="{ btnActive: activeCate === cate }" v-for="(cate, index) in categoryList" <div
:key="index" @click="handleClickCate(cate)"> class="btn"
:class="{ btnActive: activeCate === cate }"
v-for="(cate, index) in categoryList"
:key="index"
@click="handleClickCate(cate)"
>
{{ cate }} {{ cate }}
</div> </div>
</div> </div>
...@@ -389,12 +435,22 @@ ...@@ -389,12 +435,22 @@
</div> </div>
<div class="select-main"> <div class="select-main">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" class="all-checkbox" <el-checkbox
@change="handleCheckAllChange"> v-model="checkAll"
:indeterminate="isIndeterminate"
class="all-checkbox"
@change="handleCheckAllChange"
>
全部领域 全部领域
</el-checkbox> </el-checkbox>
<el-checkbox v-for="research in areaList" :key="research.id" v-model="selectedAreaList" <el-checkbox
:label="research.id" @change="handleCheckedAreaChange()" class="filter-checkbox"> v-for="research in areaList"
:key="research.id"
v-model="selectedAreaList"
:label="research.id"
@change="handleCheckedAreaChange()"
class="filter-checkbox"
>
{{ research.name }} {{ research.name }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -408,13 +464,22 @@ ...@@ -408,13 +464,22 @@
</div> </div>
<div class="select-main"> <div class="select-main">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-model="checkAllTime" class="all-checkbox" :indeterminate="isIndeterminateTime" <el-checkbox
@change="handleCheckAllChangeTime"> v-model="checkAllTime"
class="all-checkbox"
:indeterminate="isIndeterminateTime"
@change="handleCheckAllChangeTime"
>
全部时间 全部时间
</el-checkbox> </el-checkbox>
<el-checkbox-group v-model="selectedPubTimeList"> <el-checkbox-group v-model="selectedPubTimeList">
<el-checkbox v-for="time in pubTimeList" :key="time.id" :label="time.id" class="filter-checkbox" <el-checkbox
@change="handleCheckedAreaChangeTime()"> v-for="time in pubTimeList"
:key="time.id"
:label="time.id"
class="filter-checkbox"
@change="handleCheckedAreaChangeTime()"
>
{{ time.name }} {{ time.name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
...@@ -424,8 +489,12 @@ ...@@ -424,8 +489,12 @@
</div> </div>
<div class="right"> <div class="right">
<div class="card-box"> <div class="card-box">
<div class="footer-card" v-for="(item, index) in curFooterList" :key="index" <div
@click="handleToReportDetail(item.id)"> class="footer-card"
v-for="(item, index) in curFooterList"
:key="index"
@click="handleToReportDetail(item.id)"
>
<div class="footer-card-top"> <div class="footer-card-top">
<img :src="item.imageUrl" alt="" /> <img :src="item.imageUrl" alt="" />
</div> </div>
...@@ -448,8 +517,14 @@ ...@@ -448,8 +517,14 @@
<div class="right-footer"> <div class="right-footer">
<div class="info">共{{ total }}项智库报告</div> <div class="info">共{{ total }}项智库报告</div>
<div class="page-box"> <div class="page-box">
<el-pagination :page-size="12" background layout="prev, pager, next" :total="total" <el-pagination
@current-change="handleCurrentChange" :current-page="currentPage" /> :page-size="12"
background
layout="prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="currentPage"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -480,7 +555,8 @@ import { ...@@ -480,7 +555,8 @@ import {
getThinkTankReportRemarks getThinkTankReportRemarks
} from "@/api/thinkTank/overview"; } from "@/api/thinkTank/overview";
import { getPersonSummaryInfo } from "@/api/common/index"; import { getPersonSummaryInfo } from "@/api/common/index";
import HeaderMenu from "@/components/headerMenu.vue";
import headerInfo from "@/components/headerInfo.vue";
import getMultiLineChart from "./utils/multiLineChart"; import getMultiLineChart from "./utils/multiLineChart";
import getPieChart from "./utils/piechart"; import getPieChart from "./utils/piechart";
import getSankeyChart from "./utils/sankey"; import getSankeyChart from "./utils/sankey";
...@@ -629,8 +705,8 @@ const handleClickToDetail = () => { ...@@ -629,8 +705,8 @@ const handleClickToDetail = () => {
console.log("当前 Carousel 激活索引:", activeIndex); console.log("当前 Carousel 激活索引:", activeIndex);
const id = box1Data.value[activeIndex].id; const id = box1Data.value[activeIndex].id;
box1DataIndex.value = activeIndex box1DataIndex.value = activeIndex;
toDetaile() toDetaile();
}; };
const toDetaile = () => { const toDetaile = () => {
...@@ -645,7 +721,7 @@ const toDetaile = () => { ...@@ -645,7 +721,7 @@ const toDetaile = () => {
// 切换当前智库 // 切换当前智库
const handleSwithCurDecree = name => { const handleSwithCurDecree = name => {
console.log(name, carouselRef.value) console.log(name, carouselRef.value);
if (name === "left") { if (name === "left") {
carouselRef.value.prev(); carouselRef.value.prev();
} else { } else {
...@@ -1305,7 +1381,7 @@ const isIndeterminateTime = ref(true); ...@@ -1305,7 +1381,7 @@ const isIndeterminateTime = ref(true);
const sort = ref(false); const sort = ref(false);
const handleSwithSort = () => { const handleSwithSort = () => {
sort.value = !sort.value; sort.value = !sort.value;
handleGetetThinkTankReport()() handleGetetThinkTankReport()();
}; };
const handleCheckAllChangeTime = val => { const handleCheckAllChangeTime = val => {
...@@ -1526,7 +1602,7 @@ const handleClickPerson = async item => { ...@@ -1526,7 +1602,7 @@ const handleClickPerson = async item => {
ElMessage.warning("找不到当前人员的类型值!"); ElMessage.warning("找不到当前人员的类型值!");
return; return;
} }
} catch (error) { } } catch (error) {}
}; };
// 点击新闻条目,跳转到新闻分析页 // 点击新闻条目,跳转到新闻分析页
...@@ -1555,12 +1631,11 @@ const handleSearch = () => { ...@@ -1555,12 +1631,11 @@ const handleSearch = () => {
path: "/searchResults", path: "/searchResults",
query: { query: {
searchText: searchThinktankText.value, searchText: searchThinktankText.value,
areaName: '智库' areaName: "智库"
} }
}); });
window.open(curRoute.href, "_blank"); window.open(curRoute.href, "_blank");
};
}
onMounted(async () => { onMounted(async () => {
handleGetThinkTankList(); handleGetThinkTankList();
...@@ -1614,30 +1689,10 @@ onMounted(async () => { ...@@ -1614,30 +1689,10 @@ onMounted(async () => {
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: 64px; height: 64px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 64px;
background: url("./assets/images/header-bg.png"); background: url("./assets/images/header-bg.png");
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 700;
color: #fff;
padding-left: 160px;
display: flex; display: flex;
justify-content: space-between;
.header-item { padding: 0 160px;
margin: 0 3px;
}
.back-item {
cursor: pointer;
&:hover {
color: #ccc;
}
}
} }
.home-main-header-center { .home-main-header-center {
...@@ -3060,8 +3115,6 @@ onMounted(async () => { ...@@ -3060,8 +3115,6 @@ onMounted(async () => {
overflow: hidden; overflow: hidden;
background: rgba(247, 248, 249, 1); background: rgba(247, 248, 249, 1);
.home-main-footer-header { .home-main-footer-header {
width: 1600px; width: 1600px;
height: 42px; height: 42px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论