提交 9a51cfe7 authored 作者: yanpeng's avatar yanpeng

Merge branch 'pre' of http://8.140.26.4:10003/caijian/risk-monitor into yp-dev

流水线 #241 已通过 于阶段
in 1 分 37 秒
差异被折叠。
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: block;
} }
} }
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<div class="icon"> <div class="icon">
<img :src="item.icon" alt="" /> <img :src="item.icon" alt="" />
</div> </div>
<div class="title">{{ item.title }}</div> <div class="title" :class="{ 'active-title': item.active }">{{ item.title }}</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -157,57 +157,68 @@ const menuList = ref([ ...@@ -157,57 +157,68 @@ const menuList = ref([
{ {
title: "科技法案", title: "科技法案",
icon: Menu2, icon: Menu2,
path: "/billHome" path: "/billHome",
active: false
}, },
{ {
title: "科技政令", title: "科技政令",
icon: Menu3, icon: Menu3,
path: "/decree" path: "/decree",
active: false
}, },
{ {
title: "美国科技智库", title: "美国科技智库",
icon: Menu4, icon: Menu4,
path: "/thinkTank" path: "/thinkTank",
active: false
}, },
{ {
title: "出口管制", title: "出口管制",
icon: Menu5, icon: Menu5,
path: "/exportControl" path: "/exportControl",
active: false
}, },
{ {
title: "科研合作限制", title: "科研合作限制",
icon: Menu6, icon: Menu6,
path: "/cooperationRestrictions" path: "/cooperationRestrictions",
active: false
}, },
{ {
title: "投融资限制", title: "投融资限制",
icon: Menu7, icon: Menu7,
path: "/finance" path: "/finance",
active: false
}, },
{ {
title: "市场准入限制", title: "市场准入限制",
icon: Menu8, icon: Menu8,
path: "/marketAccessRestrictions" path: "/marketAccessRestrictions",
active: false
}, },
{ {
title: "规则限制", title: "规则限制",
icon: Menu9, icon: Menu9,
path: "/ruleRestrictions" path: "/ruleRestrictions",
active: false
}, },
{ {
title: "美国科技人物观点", title: "美国科技人物观点",
icon: Menu10, icon: Menu10,
path: "/technologyFigures" path: "/technologyFigures",
active: false
}, },
{ {
title: "美国主要创新主体动向", title: "美国主要创新主体动向",
icon: Menu11, icon: Menu11,
path: "/innovationSubject" path: "/innovationSubject",
active: false
}, },
{ {
title: "美国科研资助体系", title: "美国科研资助体系",
icon: Menu12, icon: Menu12,
path: "/scientificFunding" path: "/scientificFunding",
active: false
} }
]); ]);
...@@ -235,6 +246,7 @@ const handleToModule = (item, index) => { ...@@ -235,6 +246,7 @@ const handleToModule = (item, index) => {
window.sessionStorage.setItem('homeActiveTitleIndex', index) window.sessionStorage.setItem('homeActiveTitleIndex', index)
if (index === 1) { if (index === 1) {
homeActiveTitleIndex.value = index homeActiveTitleIndex.value = index
item.active = true
router.push({ router.push({
path: item.path path: item.path
}) })
...@@ -253,7 +265,7 @@ const handleToModule = (item, index) => { ...@@ -253,7 +265,7 @@ const handleToModule = (item, index) => {
}; };
const handleClickTitle = (item, index) => { const handleClickTitle = (item, index) => {
if (index === 0 || index === 3) { if (index === 0 || index === 3) {
window.sessionStorage.setItem('homeActiveTitleIndex', index) window.sessionStorage.setItem('homeActiveTitleIndex', index)
homeActiveTitleIndex.value = index homeActiveTitleIndex.value = index
...@@ -497,6 +509,11 @@ onUnmounted(() => { ...@@ -497,6 +509,11 @@ onUnmounted(() => {
letter-spacing: 0px; letter-spacing: 0px;
text-align: left; text-align: left;
} }
.active-title {
color: var(--color-main-active) !important;
font-size: 20px !important;
}
} }
} }
} }
...@@ -528,6 +545,8 @@ onUnmounted(() => { ...@@ -528,6 +545,8 @@ onUnmounted(() => {
display: flex; display: flex;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
.title { .title {
color: var(--color-main-active); color: var(--color-main-active);
...@@ -557,6 +576,11 @@ onUnmounted(() => { ...@@ -557,6 +576,11 @@ onUnmounted(() => {
letter-spacing: 0px; letter-spacing: 0px;
text-align: left; text-align: left;
} }
.active-title {
color: var(--color-main-active) !important;
font-size: 20px !important;
}
} }
} }
} }
......
<template>
<div class="intelligenceLeftTabBar">
<div class="navBox" :class="{navBoxShow:isNavMenuShow}">
<div class="navList" v-for="(item,index) in navList " :key="index" :class="{on:navPath==item.path}" @click="onNavListClick(item.path)">
<div class="icon" :style="{background:`url(${item.img})no-repeat`,backgroundSize:'24px 24px',backgroundPosition:'17px 17px'}"></div>
<span class="text-tip-1" style="white-space: nowrap; ">{{ item.name }}</span>
</div>
</div>
<img class="show" src="@/assets/icons/muenShow.png" :style="isNavMenuShow?'transform: scaleX(1)':''" alt="" @click="()=>{isNavMenuShow=!isNavMenuShow}">
</div>
</template>
<script setup>
import muen1 from '@/assets/icons/tool-item-icon1.png'
import muen2 from '@/assets/icons/tool-item-icon2.png'
import muen3 from '@/assets/icons/tool-item-icon3.png'
import muen4 from '@/assets/icons/tool-item-icon4.png'
import { onMounted, onUnmounted, ref, nextTick } from "vue";
import { useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import { useWrittingAsstaintStore } from "@/stores/writtingAsstaintStore";
const isNavMenuShow=ref(false)
const navList=ref([
{
img:muen1,
path:'/writtingAsstaint',
name:'智能写报'
},
{
img:muen2,
path:'/writtingAsstaint1',
name:'智能翻译'
},
{
img:muen3,
path:'/writtingAsstaint2',
name:'智能查询'
},
{
img:muen4,
path:'/writtingAsstaint3',
name:'智能对话'
},
])
const navPath=ref()
const route=useRoute()
if(route.path){
navPath.value=route.path
}
const onNavListClick=(path)=>{
if(path=='/writtingAsstaint'){
navPath.value=path
}else{
ElMessage.error('正在开发中')
}
}
</script>
<style lang="scss" scoped>
.intelligenceLeftTabBar{
padding: 5px 0;
border-right: 1px solid rgb(234, 236, 238);
position: relative;
.navBox{
height: 100%;
width: 65px;
transition: all 0.3s;
padding: 0 3px;
.navList{
display: flex;
align-items: center;
cursor: pointer;
border-radius: 8px;
overflow: hidden;
height: 60px;
.icon{
width: 60px;
height: 60px;
flex-shrink: 0;
border-radius: 10px;
margin-right: 15px;
}
}
.on{
background-color: var(--color-primary-10);
color: var(--color-primary-100);
font-weight: Bold;
}
}
.navBoxShow{
width: 200px;
transition: all 0.3s;
}
.show{
position: absolute;
width: 24px;
height: 24px;
right: 21px;
bottom: 21px;
cursor: pointer;
transform: scaleX(-1)
}
}
</style>
\ No newline at end of file
...@@ -295,13 +295,16 @@ export function useMarkdownStream() { ...@@ -295,13 +295,16 @@ export function useMarkdownStream() {
// 预处理内容 // 预处理内容
// const processedContent = preprocessMarkdown(rawContent.value) // const processedContent = preprocessMarkdown(rawContent.value)
let content = rawContent.value || '' let content = rawContent.value || ''
// 将 ==n== 转换为按钮样式的 HTML // 将 ==n== 转换为按钮样式的 HTML
// 使用正向预读和反向预读确保只匹配被 == 包裹的数字 // 使用正向预读和反向预读确保只匹配被 == 包裹的数字
content = content.replace(/==(\d+)==/g, (match, p1) => { // content = content.replace(/==(\d+)、==/g, (match, p1) => {
return `<button class="clause-ref-btn" data-clause="${p1}">${p1}</button>` // return `<button class="clause-ref-btn" data-clause="${p1}">${p1}</button>`
}) // })
console.log(content,11223)
content = content.replace(/==\s*(\d+)、.*?==/g, (match, p1) => {
return `<button class="clause-ref-btn" data-clause="${match.replace(/==/g, '') }">${p1}</button>`;
});
return md.render(content) return md.render(content)
}) })
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
const thinkTank = () => import('@/views/thinkTank/index.vue') const thinkTank = () => import('@/views/thinkTank/index.vue')
const ThinkTankDetail = () => import('@/views/thinkTank/ThinkTankDetail/index.vue') const ThinkTankDetail = () => import('@/views/thinkTank/ThinkTankDetail/index.vue')
const ReportDetail = () => import('@/views/thinkTank/ReportDetail/index.vue') const ReportDetail = () => import('@/views/thinkTank/ReportDetail/index.vue')
const SurveyProjectView = () => import('@/views/thinkTank/SurveyProjectView/index.vue')
const CongressHearingView = () => import('@/views/thinkTank/CongressHearingView/index.vue')
const ReportOriginal = () => import('@/views/thinkTank/reportOriginal/index.vue') const ReportOriginal = () => import('@/views/thinkTank/reportOriginal/index.vue')
const allThinkTank= () => import('@/views/thinkTank/allThinkTank/index.vue') const allThinkTank= () => import('@/views/thinkTank/allThinkTank/index.vue')
const MultiThinkTankViewAnalysis= () => import('@/views/thinkTank/MultiThinkTankViewAnalysis/index.vue') const MultiThinkTankViewAnalysis= () => import('@/views/thinkTank/MultiThinkTankViewAnalysis/index.vue')
...@@ -40,6 +42,16 @@ const thinktankRoutes = [ ...@@ -40,6 +42,16 @@ const thinktankRoutes = [
name: "ReportOriginal", name: "ReportOriginal",
component: ReportOriginal, component: ReportOriginal,
},
{
path: "/thinkTank/SurveyProjectView/:id",
name: "SurveyProjectView",
component: SurveyProjectView,
},
{
path: "/thinkTank/CongressHearingView/:id",
name: "CongressHearingView",
component: CongressHearingView,
}, },
{ {
path: "/thinkTank/allThinkTank", path: "/thinkTank/allThinkTank",
......
const getQuarterRange = (quatarNum) => {
const quarters = {
1: ['2025-01-01', '2025-03-31'],
2: ['2025-04-01', '2025-06-30'],
3: ['2025-07-01', '2025-09-30'],
4: ['2025-10-01', '2025-12-31']
};
return quarters[quatarNum];
}
export default getQuarterRange
\ No newline at end of file
// 绘制echarts图表 // 绘制echarts图表
import getMonthRange from './getMonthRange' import getMonthRange from './getMonthRange'
import getQuarterRange from './getQuarterRange';
import * as echarts from 'echarts' import * as echarts from 'echarts'
import 'echarts-wordcloud'; import 'echarts-wordcloud';
import router from '@/router/index' import router from '@/router/index'
...@@ -77,6 +78,26 @@ const setChart = (option, chartId, allowClick, selectParam) => { ...@@ -77,6 +78,26 @@ const setChart = (option, chartId, allowClick, selectParam) => {
} }
} }
break
case '政令':
if (params.componentType === 'series' && params.seriesType === 'pie') {
selectParam.domains = params.name
const route = router.resolve({
path: "/dataLibrary/dataDecree",
query: selectParam
});
window.open(route.href, "_blank");
} else if (params.componentType === 'series' && params.seriesType === 'bar') {
const quatarNum = Number(params.name[params.name.length - 1])
selectParam.selectedDate = JSON.stringify(getQuarterRange(quatarNum))
const route = router.resolve({
path: "/dataLibrary/dataDecree",
query: selectParam
});
window.open(route.href, "_blank");
}
} }
......
<svg viewBox="0 0 12 13" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12.000000" height="13.000000" fill="none" customFrame="#000000">
<path id="矢量 1651" d="M8.05031 2.15239e-07C8.33835 2.69049e-07 8.61901 0.0965686 8.85205 0.275865C9.08508 0.455161 9.25853 0.70798 9.34755 0.998087C9.43656 1.28819 9.43656 1.6007 9.34755 1.8908C9.25853 2.18091 9.08508 2.43373 8.85205 2.61303C8.61901 2.79232 8.33835 2.88889 8.05031 2.88889L3.9583 2.88889C3.69558 2.88873 3.43848 2.80821 3.21793 2.65703C2.99737 2.50585 2.82274 2.29043 2.71502 2.03667C2.35984 2.08328 2.0252 2.23849 1.752 2.48332C1.4788 2.72814 1.27889 3.05197 1.17673 3.41519C1.07456 3.77842 1.07456 4.1653 1.17673 4.52853C1.27889 4.89176 1.4788 5.21558 1.752 5.46041C2.0252 5.70523 2.35984 5.86044 2.71502 5.90706C2.82284 5.65343 2.99751 5.43816 3.21806 5.28711C3.43861 5.13606 3.69565 5.05566 3.9583 5.05556L8.05031 5.05556C8.31755 5.05563 8.57888 5.13883 8.80185 5.29483C9.02483 5.45084 9.19961 5.67276 9.3045 5.93306C9.88944 5.98317 10.4467 6.21802 10.9042 6.60722C11.3618 6.99642 11.6985 7.52206 11.8708 8.11613C12.0431 8.7102 12.0431 9.34536 11.8708 9.93943C11.6985 10.5335 11.3618 11.0591 10.9042 11.4483C10.4467 11.8375 9.88944 12.0724 9.3045 12.1225C9.19961 12.3828 9.02483 12.6047 8.80185 12.7607C8.57888 12.9167 8.31755 12.9999 8.05031 13L3.9583 13C3.71881 13.0001 3.48352 12.9334 3.27608 12.8067C3.06865 12.6799 2.89638 12.4976 2.77661 12.2779C2.65684 12.0583 2.59378 11.8092 2.59378 11.5556C2.59378 11.3019 2.65684 11.0528 2.77661 10.8332C2.89638 10.6136 3.06865 10.4312 3.27608 10.3044C3.48352 10.1777 3.71881 10.111 3.9583 10.1111L8.05031 10.1111C8.60409 10.1111 9.07944 10.4607 9.29291 10.9626C9.64884 10.9171 9.98445 10.7624 10.2585 10.5177C10.5326 10.273 10.7333 9.94881 10.8358 9.58501C10.9384 9.22121 10.9384 8.83362 10.8358 8.46982C10.7333 8.10603 10.5326 7.78186 10.2585 7.53714C9.98445 7.29241 9.64884 7.13778 9.29291 7.09222C9.18531 7.34593 9.0108 7.56132 8.79036 7.71251C8.56992 7.86369 8.31294 7.94423 8.05031 7.94444L3.9583 7.94444C3.69087 7.94445 3.42933 7.86121 3.20622 7.70506C2.9831 7.54892 2.80826 7.32676 2.70342 7.06622C2.11732 7.01784 1.55849 6.78394 1.09952 6.39491C0.640554 6.00587 0.302655 5.47968 0.129709 4.88468C-0.0432364 4.28967 -0.0432363 3.65334 0.129709 3.05833C0.302654 2.46332 0.640554 1.93713 1.09952 1.54809C1.55849 1.15906 2.11732 0.925163 2.70342 0.876778C2.80847 0.616508 2.9834 0.394654 3.2065 0.238777C3.4296 0.0829001 3.69102 -0.000130273 3.9583 2.15239e-07L8.05031 2.15239e-07Z" fill="rgb(95,101,108)" fill-rule="nonzero" />
</svg>
<svg viewBox="0 0 12 13.3145" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12.000000" height="13.314453" fill="none" customFrame="#000000">
<path id="矢量 52" d="M2.47123 9.11862L8.566 3.02386C8.82631 2.76355 8.82631 2.3415 8.566 2.08119C8.30569 1.82088 7.88364 1.82088 7.62333 2.08119L1.52857 8.17595C1.40356 8.30096 1.33333 8.4705 1.33333 8.64729C1.33333 9.01542 1.63176 9.31385 1.9999 9.31385C2.17668 9.31385 2.34623 9.24363 2.47123 9.11862ZM2.82867 10.6472L1 10.6472C0.447715 10.6472 0 10.1995 0 9.64719L0 8.23273C0 7.96752 0.105357 7.71316 0.292894 7.52563L7.62333 0.195193C7.74833 0.0702133 7.91787 0 8.09467 0C8.27147 0 8.441 0.0702133 8.566 0.195193L10.452 2.08119C10.577 2.20621 10.6472 2.37575 10.6472 2.55253C10.6472 2.7293 10.577 2.89884 10.452 3.02386L2.82867 10.6472L2.82867 10.6472ZM0.666666 11.9805L11.3333 11.9805C11.7015 11.9805 12 12.279 12 12.6472C12 13.0154 11.7015 13.3139 11.3333 13.3139L0.666667 13.3139C0.298477 13.3139 0 13.0154 0 12.6472C0 12.279 0.298477 11.9805 0.666666 11.9805Z" fill="rgb(255,255,255)" fill-rule="evenodd" />
</svg>
...@@ -38,13 +38,9 @@ ...@@ -38,13 +38,9 @@
</div> </div>
</template> </template>
<template v-else> <template v-else>
<div <div class="left-box-bottom-item"
class="left-box-bottom-item" :class="{ leftBoxBottomItemActive: activeTitle === item.name }" v-for="item in tabs"
:class="{ leftBoxBottomItemActive: activeTitle === item.name }" :key="item.path" @click="emit('tab-click', item)">
v-for="item in tabs"
:key="item.path"
@click="emit('tab-click', item)"
>
<div class="icon"> <div class="icon">
<img v-if="activeTitle === item.name" :src="item.activeIcon" alt="" /> <img v-if="activeTitle === item.name" :src="item.activeIcon" alt="" />
<img v-else :src="item.icon" alt="" /> <img v-else :src="item.icon" alt="" />
...@@ -88,7 +84,13 @@ ...@@ -88,7 +84,13 @@
</div> </div>
</template> </template>
<template v-else> <template v-else>
<div class="btn3" @click="emit('open-analysis')"> <div class="btn2" @click="emit('open-analysis', 'forsee')">
<div class="icon">
<img :src="btnIconForsee" alt="" />
</div>
<div class="text">{{ "进展预测" }}</div>
</div>
<div class="btn3" @click="emit('open-analysis', 'analysis')">
<div class="icon"> <div class="icon">
<img :src="btnIconAnalysis" alt="" /> <img :src="btnIconAnalysis" alt="" />
</div> </div>
...@@ -103,7 +105,8 @@ ...@@ -103,7 +105,8 @@
<script setup> <script setup>
import { computed } from "vue"; import { computed } from "vue";
import btnIconAnalysis from "@/views/thinkTank/ReportDetail/images/btn-icon3.png"; import btnIconAnalysis from "@/views/bill/billLayout/assets/icons/writting-icon.svg";
import btnIconForsee from "@/views/bill/billLayout/assets/icons/forsee-icon.svg";
const props = defineProps({ const props = defineProps({
billInfo: { billInfo: {
...@@ -347,6 +350,29 @@ const emit = defineEmits(["tab-click", "open-analysis"]); ...@@ -347,6 +350,29 @@ const emit = defineEmits(["tab-click", "open-analysis"]);
justify-content: flex-end; justify-content: flex-end;
gap: 8px; gap: 8px;
.icon {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.btn2 {
cursor: pointer;
width: 120px;
height: 36px;
border-radius: 6px;
background: var(--bg-white-100);
border: 1px solid var(--bg-black-10);
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
}
.btn3 { .btn3 {
cursor: pointer; cursor: pointer;
width: 120px; width: 120px;
...@@ -358,16 +384,6 @@ const emit = defineEmits(["tab-click", "open-analysis"]); ...@@ -358,16 +384,6 @@ const emit = defineEmits(["tab-click", "open-analysis"]);
align-items: center; align-items: center;
gap: 8px; gap: 8px;
.icon {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text { .text {
height: 24px; height: 24px;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
...@@ -387,4 +403,3 @@ const emit = defineEmits(["tab-click", "open-analysis"]); ...@@ -387,4 +403,3 @@ const emit = defineEmits(["tab-click", "open-analysis"]);
} }
} }
</style> </style>
...@@ -2,16 +2,9 @@ ...@@ -2,16 +2,9 @@
<div class="layout-container"> <div class="layout-container">
<!-- 导航菜单 --> <!-- 导航菜单 -->
<div class="layout-main"> <div class="layout-main">
<BillHeader <BillHeader :billInfo="billInfoGlobal" :defaultLogo="USALogo" :tabs="mainHeaderBtnList"
:billInfo="billInfoGlobal" :activeTitle="activeTitle" :showTabs="showHeaderTabs" :showActions="showHeaderActions"
:defaultLogo="USALogo" @tab-click="handleClickMainHeaderBtn" @open-analysis="handleAnalysisClick" />
:tabs="mainHeaderBtnList"
:activeTitle="activeTitle"
:showTabs="showHeaderTabs"
:showActions="showHeaderActions"
@tab-click="handleClickMainHeaderBtn"
@open-analysis="handleAnalysisClick"
/>
<div class="layout-main-center"> <div class="layout-main-center">
<router-view /> <router-view />
...@@ -115,12 +108,24 @@ const handleClickMainHeaderBtn = item => { ...@@ -115,12 +108,24 @@ const handleClickMainHeaderBtn = item => {
}); });
}; };
const handleAnalysisClick = () => { const handleAnalysisClick = analysisType => {
const billId = route.query.billId;
if (!billId) return;
// 进展预测 -> 法案简介页(法案进展)
if (analysisType === "forsee") {
router.push({
path: `/billLayout/ProgressForecast/${billId}`,
});
return;
}
// 分析报告 -> 写作助手
router.push({ router.push({
path: "/writtingAsstaint", path: "/writtingAsstaint",
query: { query: {
topic: "法案", topic: "法案",
fileId: route.query.billId fileId: String(billId)
} }
}); });
}; };
...@@ -149,11 +154,13 @@ watch( ...@@ -149,11 +154,13 @@ watch(
// height: 1016px; // height: 1016px;
background: rgba(249, 250, 252, 1); background: rgba(249, 250, 252, 1);
position: relative; position: relative;
// margin: 0 auto; // margin: 0 auto;
.layout-main { .layout-main {
width: 100%; width: 100%;
height: calc(100vh - 72px); height: 100vh;
overflow-y: auto; overflow-y: auto;
.layout-main-center { .layout-main-center {
// height: calc(100% - 137px); // height: calc(100% - 137px);
width: 1600px; width: 1600px;
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
</div> </div>
</div> </div>
</div> --> </div> -->
<NewsList :newsList="leftList" @item-click="handleToNewsDetail" @more-click="handleToMoreNews" img="image" <NewsList :newsList="leftList" @item-click="item => gotoNewsDetail(item.id)" @more-click="handleToMoreNews"
title="title" content="content" from="from" /> img="image" title="title" content="content" from="from" />
<MessageBubble :messageList="rightList" imageUrl="personImage" @more-click="handleToSocialDetail" <MessageBubble :messageList="rightList" imageUrl="personImage" @more-click="handleToSocialDetail"
@person-click="handleToSocialDetail" name="name" content="content" source="orgName" image-url="image" /> @person-click="handleToSocialDetail" name="name" content="content" source="orgName" image-url="image" />
<!-- <div class="right"> <!-- <div class="right">
...@@ -60,6 +60,8 @@ import title03 from './assets/title03.png' ...@@ -60,6 +60,8 @@ import title03 from './assets/title03.png'
import title01bg from './assets/title01bg.png' import title01bg from './assets/title01bg.png'
import title02bg from './assets/title02bg.png' import title02bg from './assets/title02bg.png'
import title03bg from './assets/title03bg.png' import title03bg from './assets/title03bg.png'
import { useGotoNewsDetail } from '@/router/modules/news';
const gotoNewsDetail = useGotoNewsDetail()
// 合作限制-查询社交媒体接口 // 合作限制-查询社交媒体接口
const getCoopRestrictionSocialData = async () => { const getCoopRestrictionSocialData = async () => {
......
...@@ -12,50 +12,52 @@ ...@@ -12,50 +12,52 @@
<el-carousel ref="carouselRef" height="412px" direction="horizontal" :autoplay="true" :interval="5000" <el-carousel ref="carouselRef" height="412px" direction="horizontal" :autoplay="true" :interval="5000"
arrow="never" indicator-position="none" @change="handleCarouselChange"> arrow="never" indicator-position="none" @change="handleCarouselChange">
<el-carousel-item v-for="(item, index) in coopRestrictionTrends" :key="item.ID || index"> <el-carousel-item v-for="(item, index) in coopRestrictionTrends" :key="item.ID || index">
<div class="carousel-item-content">
<div class="left-center"> <div class="left-center">
<img :src="item.IMAGEURL || defaultImg" alt="" /> <img :src="item.IMAGEURL || defaultImg" alt="" />
<div class="left-center-main"> <div class="left-center-main">
<div class="left-center-main-title">{{ item.LIMITNAME || "暂无动态" }}</div> <div class="left-center-main-title">{{ item.LIMITNAME || "暂无动态" }}</div>
<div class="left-center-main-ul"> <div class="left-center-main-ul">
<ul> <ul>
<li> <li>
<span class="ul-title">数据来源:</span> <span class="ul-title">数据来源:</span>
<span class="ul-content">{{ item.ORGNAME || "未知" }}</span> <span class="ul-content">{{ item.ORGNAME || "未知" }}</span>
</li> </li>
<li> <li>
<span class="ul-title">合作限制类型:</span> <span class="ul-title">合作限制类型:</span>
<span class="ul-content">{{ item.LIMITTYPE || "未知" }}</span> <span class="ul-content">{{ item.LIMITTYPE || "未知" }}</span>
</li> </li>
<li> <li>
<span class="ul-title">发布日期:</span> <span class="ul-title">发布日期:</span>
<span class="ul-content">{{ item.LIMITDATE || "未知" }}</span> <span class="ul-content">{{ item.LIMITDATE || "未知" }}</span>
</li> </li>
<li> <li>
<span class="ul-title">涉及领域:</span> <span class="ul-title">涉及领域:</span>
<div class="ul-tags" v-if="item.AREA"> <div class="ul-tags" v-if="item.AREA">
<span v-for="(field, fIndex) in typeof item.AREA === 'string' <span v-for="(field, fIndex) in typeof item.AREA === 'string'
? item.AREA.split(',') ? item.AREA.split(',')
: item.AREA" :key="fIndex" class="ul-pie" :class="'cl' + ((fIndex % 3) + 1)"> : item.AREA" :key="fIndex" class="ul-pie" :class="'cl' + ((fIndex % 3) + 1)">
{{ field }} {{ field }}
</span> </span>
</div> </div>
<span v-else class="ul-content">未知</span> <span v-else class="ul-content">未知</span>
</li> </li>
</ul> </ul>
</div>
</div> </div>
<!-- <div class="left-center-title">{{ item.LIMITTYPE }}</div> -->
</div> </div>
<div class="left-bottom"> <div class="left-center-type" v-if="item.type">{{ item.type }}</div>
<ul> <!-- <div class="left-center-title">{{ item.LIMITTYPE }}</div> -->
<li class="left-bottom-li">内容摘要:</li> </div>
</ul> <div class="left-bottom">
<div class="left-bottom-content"> <ul>
{{ item.INTRODUCTION || "暂无内容摘要" }} <li class="left-bottom-li">内容摘要:</li>
</div> </ul>
<div class="left-bottom-content">
{{ item.INTRODUCTION || "暂无内容摘要" }}
</div> </div>
</div> </div>
</el-carousel-item> </el-carousel-item>
<!-- 无数据时的占位展示 --> <!-- 无数据时的占位展示 -->
...@@ -108,6 +110,7 @@ ...@@ -108,6 +110,7 @@
查看更多 查看更多
</div> </div>
</div> --> </div> -->
<RiskSignal :list="riskSignals" @more-click="handleToMoreRiskSignal" postDate="time" name="content" <RiskSignal :list="riskSignals" @more-click="handleToMoreRiskSignal" postDate="time" name="content"
riskLevel="title" @item-click="handleClickToDetail" /> riskLevel="title" @item-click="handleClickToDetail" />
</div> </div>
...@@ -233,7 +236,7 @@ onMounted(() => { ...@@ -233,7 +236,7 @@ onMounted(() => {
.left { .left {
width: 1064px; width: 1064px;
height: 460px; height: 450px;
margin-right: 16px; margin-right: 16px;
border-radius: 10px; border-radius: 10px;
background-color: #fff; background-color: #fff;
...@@ -330,6 +333,7 @@ onMounted(() => { ...@@ -330,6 +333,7 @@ onMounted(() => {
.left-center-main { .left-center-main {
width: 439px; width: 439px;
height: 175px; height: 175px;
position: relative;
.left-center-main-title { .left-center-main-title {
margin-left: 19px; margin-left: 19px;
...@@ -420,6 +424,29 @@ onMounted(() => { ...@@ -420,6 +424,29 @@ onMounted(() => {
} }
} }
} }
}
.left-center-type {
position: absolute;
top: 0;
right: 0;
height: 32px;
font-family: "Source Han Sans CN";
font-weight: 700;
font-size: 18px;
line-height: 24px;
letter-spacing: 0px;
text-align: left;
color: rgb(5, 95, 194);
background-color: rgb(231, 243, 255);
align-items: center;
border-radius: 4px;
padding-left: 8px;
padding-right: 8px;
padding-top: 3px;
padding-bottom: 5px;
} }
.left-center-title { .left-center-title {
...@@ -439,7 +466,7 @@ onMounted(() => { ...@@ -439,7 +466,7 @@ onMounted(() => {
} }
.left-bottom { .left-bottom {
margin: 17px 0 0 62px; margin: 17px 0 0 59px;
ul { ul {
list-style-position: inside; list-style-position: inside;
......
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
<div class="main-content" ref="homeMainRef" :class="{ 'scroll-main': isShow }"> <div class="main-content" ref="homeMainRef" :class="{ 'scroll-main': isShow }">
<div class="home-top-bg"></div> <div class="home-top-bg"></div>
<!-- 搜索栏部分 --> <!-- 搜索栏部分 -->
<SearchContainer v-if="homeMainRef" placeholder="搜索合作限制" :containerRef="homeMainRef" areaName="" /> <SearchContainer v-if="homeMainRef" :countInfo="cooperationCountInfo" placeholder="搜索合作限制"
:containerRef="homeMainRef" areaName="" />
<!-- 最新动态 --> <!-- 最新动态 -->
<div class="newdata" id="position1"> <div class="newdata" id="position1">
...@@ -57,9 +58,36 @@ import newData from "./components/dataNew/index.vue"; ...@@ -57,9 +58,36 @@ 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 { getCoopRestrictionStatistics } from "@/api/coopRestriction/coopRestriction.js";
import { useContainerScroll } from "@/hooks/useScrollShow"; import { useContainerScroll } from "@/hooks/useScrollShow";
const cooperationCountInfo = ref([]);
// const
const getCooperationCountInfo = async () => {
try {
const res = await getCoopRestrictionStatistics();
if (res && res.code === 200) {
// console.log('----getStatCountInfo', res.data)
cooperationCountInfo.value = [
{
name: "相关法案",
count: res.data.billCounts
},
{
name: "相关政令",
count: res.data.aocounts
},
{
name: "相关政府公告",
count: res.data.ggcounts
},
];
}
} catch (error) {
console.error("获取首页统计接口失败:", error);
}
};
// 搜索框 // 搜索框
const input = ref(""); const input = ref("");
const homeMainRef = ref(null); const homeMainRef = ref(null);
...@@ -71,7 +99,9 @@ const router = useRouter(); ...@@ -71,7 +99,9 @@ const router = useRouter();
const handleSearch = () => { const handleSearch = () => {
console.log("搜索内容:", input.value); console.log("搜索内容:", input.value);
}; };
onMounted(() => {
getCooperationCountInfo();
});
// 锚点跳转 // 锚点跳转
const handleToPosi = id => { const handleToPosi = id => {
const element = document.getElementById(id); const element = document.getElementById(id);
...@@ -106,6 +136,7 @@ const handleToPosi = id => { ...@@ -106,6 +136,7 @@ const handleToPosi = id => {
.coop-page { .coop-page {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex;
// .breadcrumb { // .breadcrumb {
// width: 100%; // width: 100%;
// height: 64px; // height: 64px;
...@@ -138,6 +169,12 @@ const handleToPosi = id => { ...@@ -138,6 +169,12 @@ const handleToPosi = id => {
top: -64px; top: -64px;
} }
:deep(.search-container .search-center) {
width: 440px;
gap: 40px;
justify-content: center;
}
.search { .search {
width: 960px; width: 960px;
height: 168px; height: 168px;
...@@ -467,8 +504,6 @@ const handleToPosi = id => { ...@@ -467,8 +504,6 @@ const handleToPosi = id => {
} }
} }
.scroll-main {
height: calc(100% - 144px) !important;
}
} }
</style> </style>
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
</template> </template>
<script setup> <script setup>
import { ref, computed, watch, onMounted, nextTick } from 'vue' import { ref, computed, watch, onMounted, nextTick, onBeforeUnmount } from 'vue'
import ChartContainer from '../../components/ChartContainer/index.vue' import ChartContainer from '../../components/ChartContainer/index.vue'
import ChartHeader from '../../components/ChartHeader/index.vue' import ChartHeader from '../../components/ChartHeader/index.vue'
import ActiveTag from '../../components/ActiveTag/index.vue' import ActiveTag from '../../components/ActiveTag/index.vue'
...@@ -171,6 +171,10 @@ import getDateRange from '@/utils/getDateRange' ...@@ -171,6 +171,10 @@ import getDateRange from '@/utils/getDateRange'
const route = useRoute(); const route = useRoute();
const timer1 = ref(null)
const timer2 = ref(null)
const timer3 = ref(null)
// 图表/数据 // 图表/数据
const isShowChart = ref(false) const isShowChart = ref(false)
// 点击切换数据/图表 // 点击切换数据/图表
...@@ -180,7 +184,7 @@ const handleSwitchChartData = () => { ...@@ -180,7 +184,7 @@ const handleSwitchChartData = () => {
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
setTimeout(() => { timer1.value = setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}) })
...@@ -267,7 +271,7 @@ const handleClickDemensionItem = (val) => { ...@@ -267,7 +271,7 @@ const handleClickDemensionItem = (val) => {
}) })
val.active = true val.active = true
curDemension.value = val.name curDemension.value = val.name
setTimeout(() => { timer2.value = setTimeout(() => {
activeChart.value = val.chartTypeList[0] activeChart.value = val.chartTypeList[0]
curChartData.value = val.data curChartData.value = val.data
}) })
...@@ -702,8 +706,8 @@ const statusList = ref([ ...@@ -702,8 +706,8 @@ const statusList = ref([
id: '参议院通过' id: '参议院通过'
}, },
{ {
name: '双院通过', name: '分歧已解决',
id: '双院通过' id: '分歧已解决'
}, },
]) ])
...@@ -778,8 +782,8 @@ const selectedCount = computed(() => selectedMap.value.size) ...@@ -778,8 +782,8 @@ const selectedCount = computed(() => selectedMap.value.size)
// 获取表格数据(示例) // 获取表格数据(示例)
const fetchTableData = async () => { const fetchTableData = async () => {
isSelectedAll.value = false // isSelectedAll.value = false
selectedMap.value.clear() // selectedMap.value.clear()
// 调用接口获取数据... // 调用接口获取数据...
const params = { const params = {
page: currentPage.value, page: currentPage.value,
...@@ -793,8 +797,8 @@ const fetchTableData = async () => { ...@@ -793,8 +797,8 @@ const fetchTableData = async () => {
originChamber: selectedCongress.value === '全部议院' ? null : selectedCongress.value, originChamber: selectedCongress.value === '全部议院' ? null : selectedCongress.value,
originDepart: selectedOrg.value === '全部委员会' ? null : selectedOrg.value, originDepart: selectedOrg.value === '全部委员会' ? null : selectedOrg.value,
sponsorPersonName: selectedmember.value === '全部议员' ? null : selectedmember.value, sponsorPersonName: selectedmember.value === '全部议员' ? null : selectedmember.value,
status: selectedStatus.value === '通过' ? 1 : 0, status: selectedStatus.value === '全部阶段' ? null : selectedStatus.value,
isInvolveCn: isInvolveCn ? 'Y' : 'N', isInvolveCn: isInvolveCn.value ? 'Y' : 'N',
sort: isSort.value ? 0 : 1 // 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序 sort: isSort.value ? 0 : 1 // 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
} }
try { try {
...@@ -836,7 +840,7 @@ const fetchTableData = async () => { ...@@ -836,7 +840,7 @@ const fetchTableData = async () => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
setTimeout(() => { timer3.value = setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}) })
...@@ -877,7 +881,7 @@ const fetchAllData = async () => { ...@@ -877,7 +881,7 @@ const fetchAllData = async () => {
originDepart: selectedOrg.value === '全部委员会' ? null : selectedOrg.value, originDepart: selectedOrg.value === '全部委员会' ? null : selectedOrg.value,
sponsorPersonName: selectedmember.value === '全部议员' ? null : selectedmember.value, sponsorPersonName: selectedmember.value === '全部议员' ? null : selectedmember.value,
status: selectedStatus.value === '通过' ? 1 : 0, status: selectedStatus.value === '通过' ? 1 : 0,
isInvolveCn: isInvolveCn ? 'Y' : 'N', isInvolveCn: isInvolveCn.value ? 'Y' : 'N',
sort: isSort.value ? 0 : 1 // 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序 sort: isSort.value ? 0 : 1 // 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
} }
try { try {
...@@ -1116,14 +1120,21 @@ const handleExport = () => { ...@@ -1116,14 +1120,21 @@ const handleExport = () => {
onMounted(async () => { onMounted(async () => {
handleGetOrgList() handleGetOrgList()
handleGetMemberList() handleGetMemberList()
initParam() initParam()
// 初始化 // 初始化
await fetchTableData() await fetchTableData()
})
onBeforeUnmount(() => {
if (timer1.value) {
clearTimeout(timer1.value)
}
if (timer2.value) {
clearTimeout(timer2.value)
}
if (timer3.value) {
clearTimeout(timer3.value)
}
}) })
</script> </script>
...@@ -1239,10 +1250,11 @@ onMounted(async () => { ...@@ -1239,10 +1250,11 @@ onMounted(async () => {
.data-main-box { .data-main-box {
width: 1568px; width: 1568px;
height: 810px; min-height: 810px;
border-radius: 10px; border-radius: 10px;
background: var(--bg-white-100); background: var(--bg-white-100);
margin: 0 auto; margin: 0 auto;
margin-bottom: 20px;
overflow: hidden; overflow: hidden;
.data-main-box-header { .data-main-box-header {
...@@ -1274,8 +1286,7 @@ onMounted(async () => { ...@@ -1274,8 +1286,7 @@ onMounted(async () => {
.data-main-box-main { .data-main-box-main {
width: 1520px; width: 1520px;
// height: 633px; min-height: 680px;
height: 680px;
border-radius: 10px; border-radius: 10px;
border: 1px solid var(--bg-black-5); border: 1px solid var(--bg-black-5);
margin: 0 auto; margin: 0 auto;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<slot name="chart-box"></slot> <slot name="chart-box"></slot>
</div> </div>
<div class="tip-box"> <div class="tip-box">
<TipTab /> <TipTab text="数据来源:美国国会官网" />
</div> </div>
</div> </div>
</div> </div>
...@@ -176,8 +176,7 @@ const chartItemList = computed(() => { ...@@ -176,8 +176,7 @@ const chartItemList = computed(() => {
.tip-box { .tip-box {
height: 54px; height: 54px;
box-sizing: border-box; box-sizing: border-box;
padding-top: 10px; padding: 15px 600px;
// background: orange;
} }
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="select-wrapper" :class="{ 'select-wrapper-custom': selectValue === '自定义' }"> <div class="select-wrapper" :class="{ 'select-wrapper-custom': selectValue === '自定义' }">
<div class="select-left text-tip-1">{{ selectTitle + ':' }}</div> <div class="select-left text-tip-1">{{ selectTitle + ':' }}</div>
<div class="select-right" :class="{ 'select-right-custom': selectValue === '自定义' }"> <div class="select-right" :class="{ 'select-right-custom': selectValue === '自定义' }">
<el-select v-model="selectValue" :placeholder="placeholderName" style="width: 240px"> <el-select v-model="selectValue" :placeholder="placeholderName" filterable style="width: 240px">
<!-- <el-option label="全部领域" value="全部领域" /> --> <!-- <el-option label="全部领域" value="全部领域" /> -->
<el-option v-for="item in selectList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in selectList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
</template> </template>
<script setup> <script setup>
import { computed, onMounted, ref } from 'vue' import { computed, onBeforeUnmount, onMounted, ref } from 'vue'
import Icon1 from './assets/icons/sider-icon1.svg' import Icon1 from './assets/icons/sider-icon1.svg'
import Icon2 from './assets/icons/sider-icon2.svg' import Icon2 from './assets/icons/sider-icon2.svg'
import Icon3 from './assets/icons/sider-icon3.svg' import Icon3 from './assets/icons/sider-icon3.svg'
...@@ -398,6 +398,8 @@ const handleClickTab = (tab) => { ...@@ -398,6 +398,8 @@ const handleClickTab = (tab) => {
}) })
} }
const timer = ref(null)
// 关闭当前标签页 // 关闭当前标签页
const handleCloseCurTab = (tab, index) => { const handleCloseCurTab = (tab, index) => {
...@@ -416,7 +418,7 @@ const handleCloseCurTab = (tab, index) => { ...@@ -416,7 +418,7 @@ const handleCloseCurTab = (tab, index) => {
}) })
if (index === openedTabList.value.length - 1) { if (index === openedTabList.value.length - 1) {
tagsViewStore.delView(tab) tagsViewStore.delView(tab)
setTimeout(() => { timer.value = setTimeout(() => {
tagsViewStore.visitedViews[tagsViewStore.visitedViews.length - 1].active = true tagsViewStore.visitedViews[tagsViewStore.visitedViews.length - 1].active = true
activeTab = tagsViewStore.visitedViews[tagsViewStore.visitedViews.length - 1] activeTab = tagsViewStore.visitedViews[tagsViewStore.visitedViews.length - 1]
router.push({ router.push({
...@@ -593,6 +595,11 @@ onMounted(() => { ...@@ -593,6 +595,11 @@ onMounted(() => {
}) })
onBeforeUnmount(() => {
if(timer.value) {
clearTimeout(timer.value)
}
})
</script> </script>
......
...@@ -814,7 +814,25 @@ const handleBox5 = async () => { ...@@ -814,7 +814,25 @@ const handleBox5 = async () => {
let chart1 = getBarChart(chart1Data.value.dataX, chart1Data.value.dataY); let chart1 = getBarChart(chart1Data.value.dataX, chart1Data.value.dataY);
chart1.yAxis.name = "数量"; chart1.yAxis.name = "数量";
chart1.yAxis.nameTextStyle = { align: 'right' } chart1.yAxis.nameTextStyle = { align: 'right' }
setChart(chart1, "chart1"); let org = '全部机构'
if(box5Params.proposeName) {
org = keyOrganizationList.value.filter(item => {
return item.orgId === box5Params.proposeName
})[0].orgName
}
let domain = '全部领域'
if(box5Params.domainId) {
domain = areaList.value.filter(item => {
return item.id === box5Params.domainId
})[0].name
}
const selectParam = {
moduleType: '政令',
orgnizationName: org,
domains: domain,
selectDate: box5Params.year
}
setChart(chart1, "chart1", true, selectParam);
}; };
// 政令科技领域 // 政令科技领域
...@@ -861,8 +879,19 @@ const handleGetDecreeArea = async () => { ...@@ -861,8 +879,19 @@ const handleGetDecreeArea = async () => {
}; };
const handleBox6 = async () => { const handleBox6 = async () => {
await handleGetDecreeArea(); await handleGetDecreeArea();
let org = '全部机构'
if(box6Params.proposeName) {
org = keyOrganizationList.value.filter(item => {
return item.orgId === box6Params.proposeName
})[0].orgName
}
const selectParam = {
moduleType: '政令',
orgnizationName: org,
selectedDate: JSON.stringify([box6Params.year+'-01-01', box6Params.year+'-12-31'])
}
let chart2 = getPieChart(chart2Data.value); let chart2 = getPieChart(chart2Data.value);
setChart(chart2, "chart2"); setChart(chart2, "chart2", true, selectParam);
}; };
const handleBox6YearChange = () => { const handleBox6YearChange = () => {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<router-view /> <router-view />
</div> </div>
</div> </div>
<div class="right-btn" @click="handleClickToolBox"> <div class="right-btn" v-if="isShowToolBox" @click="handleClickToolBox">
<div class="item"> <div class="item">
<div class="icon"> <div class="icon">
<img src="@/assets/icons/overview/domain.png" alt="" /> <img src="@/assets/icons/overview/domain.png" alt="" />
...@@ -22,20 +22,7 @@ ...@@ -22,20 +22,7 @@
</div> </div>
</div> </div>
<div class="tool-box"> <div class="tool-box" v-if="isShowToolBox">
<!-- <div class="tool-item">
<img src="@/assets/icons/tool-item-icon1.png" alt="" />
</div>
<div class="tool-item">
<img src="@/assets/icons/tool-item-icon2.png" alt="" />
</div>
<div class="tool-item">
<img src="@/assets/icons/tool-item-icon3.png" alt="" />
</div>
<div class="tool-item">
<img src="@/assets/icons/tool-item-icon4.png" alt="" />
</div> -->
<el-tooltip content="智能写报" placement="left" :offset="10"> <el-tooltip content="智能写报" placement="left" :offset="10">
<div class="tool-item" @click="handleOpenPage('znxb')"> <div class="tool-item" @click="handleOpenPage('znxb')">
<img src="@/assets/icons/tool-item-icon1.png" alt="" /> <img src="@/assets/icons/tool-item-icon1.png" alt="" />
...@@ -96,11 +83,13 @@ import { ElMessage } from "element-plus"; ...@@ -96,11 +83,13 @@ import { ElMessage } from "element-plus";
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const isShowHeader = computed(() => { const isShowToolBox = computed(() => {
const isShow = route.meta.isShowHeader const isDataLibrary = route.fullPath.includes("dataLibrary");
return isShow? true : false const isWrittingAsstaint = route.path === "/writtingAsstaint";
return !isDataLibrary && !isWrittingAsstaint;
}) })
const isShowHeader = computed(() => !!route.meta.isShowHeader);
const isShowAiBox = ref(false); const isShowAiBox = ref(false);
...@@ -816,4 +805,7 @@ body { ...@@ -816,4 +805,7 @@ body {
cursor: not-allowed; cursor: not-allowed;
pointer-events: none; pointer-events: none;
} }
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论