提交 c5dda08b authored 作者: 李智林's avatar 李智林

合作限制

上级 2dda3480
...@@ -161,7 +161,9 @@ body { ...@@ -161,7 +161,9 @@ body {
color: rgba(10, 18, 30, 1); color: rgba(10, 18, 30, 1);
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: sticky;
top: 0;
z-index: 2000;
box-sizing: border-box; box-sizing: border-box;
height: 72px; height: 72px;
} }
......
...@@ -48,7 +48,7 @@ export function getCoopRestrictionNews(params) { ...@@ -48,7 +48,7 @@ export function getCoopRestrictionNews(params) {
export function getCoopRestrictionSocial(params) { export function getCoopRestrictionSocial(params) {
return request({ return request({
method: 'GET', method: 'GET',
url: `/api/commonFeature/social/${params.moduleId}` url: `/api/commonFeature/remarks/${params.moduleId}`
}) })
} }
...@@ -96,3 +96,57 @@ export function getCoopRestrictionList(params) { ...@@ -96,3 +96,57 @@ export function getCoopRestrictionList(params) {
params params
}) })
} }
// 合作限制-查询简介接口
/**
* @param {limitId} 合作限制ID
* @header token
*/
export function getCoopRestrictionIntroduction(params) {
return request({
method: 'GET',
url: `/api/cooperationlimitinfo/searchBlurb`,
params
})
}
// 合作限制-相关实体接口
/**
* @param {limitId} 合作限制ID
* @header token
*/
export function getCoopRestrictionRelated(params) {
return request({
method: 'GET',
url: `/api/cooperationlimitinfo/getLimitEntity`,
params
})
}
// 合作限制-背景分析接口
/**
* @param {limitId} 合作限制ID
* @header token
*/
export function getCoopRestrictionBackground(params) {
return request({
method: 'GET',
url: `/api/cooperationlimitinfo/getLimitBackGround`,
params
})
}
// 合作限制-限制条款接口
/**
* @param {limitId} 合作限制ID
* @header token
*/
export function getCoopRestrictionClause(params) {
return request({
method: 'GET',
url: `/api/cooperationlimitinfo/getLimitClause`,
params
})
}
...@@ -79,26 +79,19 @@ export function getIndustryCountByYear(sanTypeId) { ...@@ -79,26 +79,19 @@ export function getIndustryCountByYear(sanTypeId) {
/** /**
* 不同领域每年数量 * 不同领域每年数量
* @returns {Promise<{ * @param {Object} data - 请求参数
* data:{ * @param {boolean} data.isRule - 是否为规则
* year?: number * @param {string} [data.startYear="2020"] - 开始年份
* domainNum: { * @param {string} [data.endYear] - 结束年份
* [ key: string]: number; * @param {number} [data.sanTypeId=1] - 制裁类型ID
* } * @returns {Promise}
* }[]
* domains: string[]
* }>}
*/ */
export function getCountDomainByYear(isRule, startYear = "2020", endYear = String(new Date().getFullYear())) { export function getCountDomainByYear(data) {
return request200( return request200(
request({ request({
method: "POST", method: "POST",
url: "/api/entitiesDataCount/getAnnualSanDomain", url: "/api/entitiesDataCount/getAnnualSanDomain",
data: { data
isRule,
startYear,
endYear
}
}) })
); );
} }
...@@ -128,7 +121,7 @@ export function getSanctionsInfoCount() { ...@@ -128,7 +121,7 @@ export function getSanctionsInfoCount() {
* sanReason: string * sanReason: string
* }[]>} * }[]>}
*/ */
export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageSize = 10) { export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageSize = 10,isCn = false) {
return request200( return request200(
request({ request({
method: "POST", method: "POST",
...@@ -136,7 +129,8 @@ export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageS ...@@ -136,7 +129,8 @@ export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageS
data: { data: {
typeName, typeName,
pageNum, pageNum,
pageSize pageSize,
isCn
} }
}) })
); );
...@@ -498,14 +492,17 @@ export function getEntitiesUpdateCount(sanTypeId = 1) { ...@@ -498,14 +492,17 @@ export function getEntitiesUpdateCount(sanTypeId = 1) {
/** /**
* 制裁领域分析 * 制裁领域分析
* @param {string} rule - 规则
* @param {string} type - 类型
*/ */
export function getSanDomainCount(rule) { export function getSanDomainCount(rule, type) {
return request200( return request200(
request({ request({
method: "GET", method: "GET",
url: "/api/entitiesDataCount/getSanDomainCount", url: "/api/entitiesDataCount/getSanDomainCount",
params: { params: {
rule rule,
type
} }
}) })
); );
......
import request from "@/api/request.js"; import request from "@/api/request.js";
// 实体清单-制裁概况-获取实体清单基本信息 // 实体清单-制裁概况-获取实体清单基本信息
export function getEntityInfo() { export function getEntityInfo(sanType) {
return request({ return request({
method: 'GET', method: 'GET',
url: `/api/sanctionList/baseInfo/el` url: `/api/sanctionList/baseInfo/${sanType}`
}) })
} }
......
...@@ -438,6 +438,45 @@ onMounted(() => { ...@@ -438,6 +438,45 @@ onMounted(() => {
.btn { .btn {
margin-left: 8px; margin-left: 8px;
} }
:deep(.el-button) {
height: 28px;
padding: 2px 8px;
border-radius: 4px;
font-size: 16px;
font-weight: 400;
font-family: Microsoft YaHei;
line-height: 24px;
}
:deep(.el-button--primary.is-plain) {
background-color: #f0f7ff;
border-color: rgb(5, 95, 194);
color: rgb(5, 95, 194);
border-width: 1px;
&:hover,
&:focus {
background-color: #f0f7ff;
border-color: rgb(5, 95, 194);
color: rgb(5, 95, 194);
}
}
:deep(.el-button--info.is-plain) {
background-color: #fff;
border-color: rgb(230, 231, 232);
color: rgb(59, 65, 75);
&:hover,
&:focus {
background-color: #fff;
border-color: rgb(230, 231, 232);
color: rgb(59, 65, 75);
}
}
} }
.header-right { .header-right {
...@@ -468,8 +507,8 @@ onMounted(() => { ...@@ -468,8 +507,8 @@ onMounted(() => {
width: 1150px; width: 1150px;
height: 415px; height: 415px;
background: #fff; background: #fff;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box1-main { .box1-main {
.box1-main-center { .box1-main-center {
margin: 0 22px; margin: 0 22px;
...@@ -555,8 +594,8 @@ onMounted(() => { ...@@ -555,8 +594,8 @@ onMounted(() => {
width: 1150px; width: 1150px;
height: 415px; height: 415px;
background: #fff; background: #fff;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box2-main { .box2-main {
// margin-top: 9px; // margin-top: 9px;
width: 1110px; width: 1110px;
...@@ -661,8 +700,8 @@ onMounted(() => { ...@@ -661,8 +700,8 @@ onMounted(() => {
width: 576px; width: 576px;
height: 845px; height: 845px;
background: #fff; background: #fff;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.background-wrap-right-main { .background-wrap-right-main {
.right-box1 { .right-box1 {
height: 365px; height: 365px;
......
...@@ -270,7 +270,7 @@ ...@@ -270,7 +270,7 @@
<div class="box3-main"> <div class="box3-main">
<div <div
class="box3-item" class="box3-item"
v-for="(news, index) in newsList" v-for="(news, index) in newsList.slice(0, 5)"
:key="index" :key="index"
@click="handleClickToNewsDetail(news)" @click="handleClickToNewsDetail(news)"
> >
...@@ -679,6 +679,11 @@ ...@@ -679,6 +679,11 @@
style="width: 120px" style="width: 120px"
@change="handlePxChange" @change="handlePxChange"
> >
<template #prefix>
<div style="display: flex; align-items: center; height: 100%">
<img :src="desc" style="width: 14px; height: 14px" />
</div>
</template>
<el-option <el-option
v-for="item in releaseTimeList" v-for="item in releaseTimeList"
:key="item.value" :key="item.value"
...@@ -693,10 +698,9 @@ ...@@ -693,10 +698,9 @@
class="right-main-box" class="right-main-box"
v-for="(item, index) in bills" v-for="(item, index) in bills"
:key="index" :key="index"
@click="handleClickToDetailO(item)"
> >
<div class="header"> <div class="header">
<div class="title">{{ item.name }}</div> <div class="title" @click="handleClickToDetailO(item)">{{ item.name }}</div>
<div class="en-title">{{ item.eName }}</div> <div class="en-title">{{ item.eName }}</div>
</div> </div>
<div class="main"> <div class="main">
...@@ -716,7 +720,9 @@ ...@@ -716,7 +720,9 @@
</div> </div>
<div class="item"> <div class="item">
<div class="item-left">{{ "最新动议:" }}</div> <div class="item-left">{{ "最新动议:" }}</div>
<div class="item-right">{{ item.zxdy }}</div> <div class="item-right">
<CommonPrompt :content="item.zxdy" />
</div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-left">{{ "法案进展:" }}</div> <div class="item-left">{{ "法案进展:" }}</div>
...@@ -791,20 +797,14 @@ import getDoublePieChart from "./utils/doublePieChart"; ...@@ -791,20 +797,14 @@ import getDoublePieChart from "./utils/doublePieChart";
import defaultNew from "../assets/images/default-icon-news.png"; import defaultNew from "../assets/images/default-icon-news.png";
import News1 from "./assets/images/news1.png"; import News1 from "./assets/images/news1.png";
import News2 from "./assets/images/news2.png"; import defaultIcon01 from "../../../assets/icons/default-icon1.png";
import News3 from "./assets/images/news3.png"; import desc from "./assets/icons/icon-desc.png";
import News4 from "./assets/images/news4.png";
import News5 from "./assets/images/news5.png";
import Message1 from "./assets/images/message-icon1.png"; import Message1 from "./assets/images/message-icon1.png";
import Message2 from "./assets/images/message-icon2.png"; import Message2 from "./assets/images/message-icon2.png";
import Message3 from "./assets/images/message-icon3.png"; import Message3 from "./assets/images/message-icon3.png";
import Box8Img1 from "./assets/images/box8-icon1.png";
import Box8Img2 from "./assets/images/box8-icon2.png";
import Box8Img3 from "./assets/images/box8-icon3.png";
import Box8Img4 from "./assets/images/box8-icon4.png";
import Box8Img5 from "./assets/images/box8-icon5.png";
import Cyy from "@/assets/icons/cyy.png"; import Cyy from "@/assets/icons/cyy.png";
import Zyy from "@/assets/icons/zyy.png"; import Zyy from "@/assets/icons/zyy.png";
...@@ -911,6 +911,7 @@ const currentPage = ref(1); ...@@ -911,6 +911,7 @@ const currentPage = ref(1);
const handleCurrentChange = page => { const handleCurrentChange = page => {
currentPage.value = page; currentPage.value = page;
handleGetBills(); handleGetBills();
handleToPosi("position4");
}; };
const containerRef = ref(null); const containerRef = ref(null);
...@@ -1455,6 +1456,7 @@ const box9YearList = ref([ ...@@ -1455,6 +1456,7 @@ const box9YearList = ref([
} }
]); ]);
const box9HasData = ref(true); const box9HasData = ref(true);
let box9ChartInstance = null;
const getBox9Data = async () => { const getBox9Data = async () => {
const params = { const params = {
year: box9selectetedTime.value year: box9selectetedTime.value
...@@ -1486,7 +1488,7 @@ const handleBox9Data = async () => { ...@@ -1486,7 +1488,7 @@ const handleBox9Data = async () => {
}; };
}) })
); );
setChart(box9Chart, "box9Chart"); box9ChartInstance = setChart(box9Chart, "box9Chart");
} }
}; };
...@@ -1698,7 +1700,12 @@ const handleSearch = () => { ...@@ -1698,7 +1700,12 @@ const handleSearch = () => {
window.open(curRoute.href, "_blank"); window.open(curRoute.href, "_blank");
}; };
const handleResize = () => {
box9ChartInstance && box9ChartInstance.resize();
};
onMounted(async () => { onMounted(async () => {
window.addEventListener("resize", handleResize);
handleGetHylyList(); handleGetHylyList();
// 获取风险信号 // 获取风险信号
handleGetBillRiskSignal(); handleGetBillRiskSignal();
...@@ -1728,7 +1735,9 @@ onMounted(async () => { ...@@ -1728,7 +1735,9 @@ onMounted(async () => {
handleBox9Data(); handleBox9Data();
}); });
onUnmounted(() => {}); onUnmounted(() => {
window.removeEventListener("resize", handleResize);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -2525,7 +2534,7 @@ onUnmounted(() => {}); ...@@ -2525,7 +2534,7 @@ onUnmounted(() => {});
} }
.box3-main { .box3-main {
height: 402px; height: 402px;
overflow-y: auto; overflow-y: hidden;
overflow-x: hidden; overflow-x: hidden;
padding-top: 6px; padding-top: 6px;
.box3-item { .box3-item {
...@@ -2649,6 +2658,7 @@ onUnmounted(() => {}); ...@@ -2649,6 +2658,7 @@ onUnmounted(() => {});
overflow-y: auto; overflow-y: auto;
box-sizing: border-box; box-sizing: border-box;
padding-top: 8px; padding-top: 8px;
padding-bottom: 20px;
.box4-main-item { .box4-main-item {
margin-top: 16px; margin-top: 16px;
display: flex; display: flex;
...@@ -2774,12 +2784,6 @@ onUnmounted(() => {}); ...@@ -2774,12 +2784,6 @@ onUnmounted(() => {});
.box5-main { .box5-main {
height: 397px; height: 397px;
} }
// .box5-select {
// position: absolute;
// top: 53px;
// left: 100px;
// z-index: 100;
// }
} }
.box6 { .box6 {
margin-left: 20px; margin-left: 20px;
...@@ -2982,26 +2986,19 @@ onUnmounted(() => {}); ...@@ -2982,26 +2986,19 @@ onUnmounted(() => {});
} }
} }
} }
// .box-center {
// height: 45px;
// padding-right: 20px;
// display: flex;
// align-items: center;
// justify-content: flex-end;
// }
.box8-main { .box8-main {
height: 380px; height: 380px;
overflow-y: auto; overflow: hidden;
overflow-x: hidden; padding: 20px;
.box8-main-item { .box8-main-item {
margin: 0 auto; // margin: 0 auto;
width: 478px; width: 478px;
height: 51px; height: 51px;
margin-bottom: 16px; margin-bottom: 20px;
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; position: relative;
padding: 0 10px; // padding: 0 10px;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background: var(--color-bg-hover); background: var(--color-bg-hover);
...@@ -3151,6 +3148,7 @@ onUnmounted(() => {}); ...@@ -3151,6 +3148,7 @@ onUnmounted(() => {});
} }
.box9-main { .box9-main {
height: 380px; height: 380px;
padding: 10px 20px;
} }
} }
} }
...@@ -3305,8 +3303,8 @@ onUnmounted(() => {}); ...@@ -3305,8 +3303,8 @@ onUnmounted(() => {});
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
margin-bottom: 16px; margin-bottom: 16px;
overflow: hidden; overflow: hidden;
overflow-y: auto; // overflow-y: auto;
cursor: pointer; // cursor: pointer;
.header { .header {
height: 91px; height: 91px;
width: 1200px; width: 1200px;
...@@ -3314,8 +3312,7 @@ onUnmounted(() => {}); ...@@ -3314,8 +3312,7 @@ onUnmounted(() => {});
border-bottom: 1px solid rgba(234, 236, 238, 1); border-bottom: 1px solid rgba(234, 236, 238, 1);
padding-top: 19px; padding-top: 19px;
.title { .title {
// margin-top: 19px; cursor: pointer;
// padding-top: 19px;
height: 26px; height: 26px;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
......
...@@ -39,7 +39,7 @@ const getPieChart = (data, colorList) => { ...@@ -39,7 +39,7 @@ const getPieChart = (data, colorList) => {
maxSurfaceAngle: 80 maxSurfaceAngle: 80
}, },
labelLayout: function (params) { labelLayout: function (params) {
const isLeft = params.labelRect.x < 556 / 2; const isLeft = params.labelRect.x < params.viewWidth / 2;
const points = params.labelLinePoints; const points = params.labelLinePoints;
// Update the end point. // Update the end point.
points[2][0] = isLeft points[2][0] = isLeft
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<div class="layout-container"> <div class="layout-container">
<!-- 导航菜单 --> <!-- 导航菜单 -->
<div class="layout-main"> <div class="layout-main">
<div class="header-main">
<div class="layout-main-header"> <div class="layout-main-header">
<div class="layout-main-header-left-box"> <div class="layout-main-header-left-box">
<div class="left-box-top"> <div class="left-box-top">
...@@ -69,15 +70,17 @@ ...@@ -69,15 +70,17 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="layout-main-center"> <div class="layout-main-center">
<router-view /> <router-view />
</div> </div>
</div> </div>
<div class="layout-report-box" v-if="activeName === '法案原文'"> <div class="layout-report-box" v-if="activeName === '法案原文'">
<div class="report-main">
<div class="report-close" @click="handleSwitchActiveName('分析报告')"> <div class="report-close" @click="handleSwitchActiveName('分析报告')">
<img src="./assets/images/report-close-icon.png" alt="" /> <img src="./assets/images/report-close-icon.png" alt="" />
</div> </div>
<div class="report-main">
<div class="report-header"> <div class="report-header">
<div class="report-header-left"> <div class="report-header-left">
<!-- <div class="text">法案版本:</div> <!-- <div class="text">法案版本:</div>
...@@ -210,18 +213,18 @@ const mainHeaderBtnList = ref([ ...@@ -210,18 +213,18 @@ const mainHeaderBtnList = ref([
name: "深度挖掘", name: "深度挖掘",
path: "/billLayout/deepDig" path: "/billLayout/deepDig"
}, },
{ // {
icon: icon3, // icon: icon3,
activeIcon: icon3Active, // activeIcon: icon3Active,
name: "影响分析", // name: "影响分析",
path: "/billLayout/influence" // path: "/billLayout/influence"
}, // },
{ // {
icon: icon4, // icon: icon4,
activeIcon: icon4Active, // activeIcon: icon4Active,
name: "相关情况", // name: "相关情况",
path: "/billLayout/relevantCircumstance" // path: "/billLayout/relevantCircumstance"
} // }
]); ]);
const activeTitle = ref("法案概况"); const activeTitle = ref("法案概况");
...@@ -247,164 +250,35 @@ onMounted(() => { ...@@ -247,164 +250,35 @@ onMounted(() => {
<style lang="scss" scoped> <style lang="scss" scoped>
.layout-container { .layout-container {
width: 1920px; width: 100%;
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-header {
width: 1920px;
height: 64px;
// background: #0a121e;
background: #fff;
// border-bottom: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1);
// margin-bottom: 13px;
display: flex;
position: relative;
z-index: 99;
.layout-header-left {
width: 480px;
display: flex;
.logo-box {
width: 36px;
height: 36px;
margin: 14px;
img {
width: 100%;
height: 100%;
border-radius: 6px;
}
}
.title-box {
height: 64px;
width: 350px;
margin: 0 5px;
color: #eee;
line-height: 64px;
font-size: 20px;
font-weight: bold;
color: rgba(10, 18, 30, 1);
font-family: Microsoft YaHei;
font-size: 22px;
font-weight: 700;
text-align: left;
}
}
.layout-header-center {
width: 700px;
display: flex;
justify-content: space-between;
margin-left: 200px;
.nav-item {
border-radius: 5px;
cursor: pointer;
display: flex;
&:hover {
background: rgba(255, 255, 255, 0.2);
}
.nav-icon-box {
width: 25px;
height: 25px;
margin: 22px 0 20px 5px;
.nav-icon {
width: 20px;
height: 20px;
img {
width: 100%;
height: 100%;
}
}
.nav-icon-active {
width: 20px;
height: 20px;
img {
width: 100%;
height: 100%;
}
}
}
.name-box {
margin: 18px 5px;
height: 30px;
text-align: center;
line-height: 30px;
color: rgba(59, 65, 75, 1);
letter-spacing: 2px;
font-size: 18px;
}
// .nameActive {
// color: #ea9518;
// font-weight: bold;
// }
}
.navItemActive {
// background: #295dab;
// border-bottom: 4px solid #ea9518;
// &:hover {
// background: #295dab;
// border-bottom: 4px solid #ea9518;
// }
}
}
.layout-header-right {
flex: 1;
display: flex;
justify-content: flex-end;
.nav-search {
width: 22px;
height: 22px;
margin: 21px 0;
}
.nav-message {
width: 22px;
height: 22px;
margin: 21px 30px;
}
.nav-usr {
width: 110px;
display: flex;
height: 40px;
margin: 12px 5px 12px 0;
.usr-img {
margin-top: 4px;
height: 32px;
width: 32px;
background: rgba(255, 255, 255, 0.5);
border-radius: 100%;
box-sizing: border-box;
padding: 4px;
// img {
// width: 100%;
// height: 100%;
// }
}
.usr-info {
height: 40px;
line-height: 40px;
text-align: center;
font-size: 14px;
margin-left: 10px;
}
}
}
}
.layout-main { .layout-main {
width: 100%; width: 100%;
height: calc(100% - 64px); height: calc(100% - 64px);
.header-main {
position: sticky;
top: 72px;
z-index: 1000;
width: 100%;
height: 136px;
background-color: #fff;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
}
.layout-main-header { .layout-main-header {
height: 137px; width: 1744px;
height: 136px;
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 0 auto;
padding-top: 14px;
.layout-main-header-left-box { .layout-main-header-left-box {
width: 900px; width: 900px;
margin-left: 160px; // margin-left: 160px;
margin-top: 13px; // margin-top: 13px;
.left-box-top { .left-box-top {
height: 64px; height: 64px;
display: flex; display: flex;
...@@ -489,8 +363,8 @@ onMounted(() => { ...@@ -489,8 +363,8 @@ onMounted(() => {
} }
.layout-main-header-right-box { .layout-main-header-right-box {
width: 600px; width: 600px;
margin-right: 150px; // margin-right: 150px;
margin-top: 19px; // margin-top: 19px;
.right-box-top { .right-box-top {
.time { .time {
height: 24px; height: 24px;
...@@ -651,7 +525,10 @@ onMounted(() => { ...@@ -651,7 +525,10 @@ onMounted(() => {
} }
} }
.layout-main-center { .layout-main-center {
height: calc(100% - 137px); // height: calc(100% - 137px);
width: 1744px;
margin: 0 auto;
padding-bottom: 100px;
} }
} }
.layout-report-box { .layout-report-box {
...@@ -662,10 +539,20 @@ onMounted(() => { ...@@ -662,10 +539,20 @@ onMounted(() => {
width: 100%; width: 100%;
height: 926px; height: 926px;
background: rgba(248, 249, 250, 1); background: rgba(248, 249, 250, 1);
.report-main {
position: relative;
width: 1744px;
height: 926px;
margin: 0 auto;
background: #fff;
box-sizing: border-box;
padding: 0 69px;
// border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.report-close { .report-close {
position: absolute; position: absolute;
top: 24px; top: 24px;
right: 178px; right: 24px;
width: 32px; width: 32px;
height: 32px; height: 32px;
cursor: pointer; cursor: pointer;
...@@ -674,13 +561,6 @@ onMounted(() => { ...@@ -674,13 +561,6 @@ onMounted(() => {
height: 100%; height: 100%;
} }
} }
.report-main {
width: 1600px;
height: 926px;
margin: 0 auto;
background: #fff;
box-sizing: border-box;
padding: 0 69px;
.report-header { .report-header {
height: 77px; height: 77px;
border-bottom: 1px solid rgba(240, 242, 244, 1); border-bottom: 1px solid rgba(240, 242, 244, 1);
......
...@@ -65,9 +65,13 @@ const handleClickLeftSiderBtn = (item,index) => { ...@@ -65,9 +65,13 @@ const handleClickLeftSiderBtn = (item,index) => {
.wrap { .wrap {
display: flex; display: flex;
height: 879px; height: 879px;
position: relative;
// background: (243, 243, 244, 1); // background: (243, 243, 244, 1);
.sider { .sider {
width: 160px; width: 160px;
position: absolute;
top: 0;
left: -160px;
.sider-btn { .sider-btn {
margin-top: 20px; margin-top: 20px;
margin-left: 20px; margin-left: 20px;
......
...@@ -777,7 +777,7 @@ onMounted(async () => { ...@@ -777,7 +777,7 @@ onMounted(async () => {
height: 415px; height: 415px;
background: rgb(255, 255, 255); background: rgb(255, 255, 255);
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box1-main { .box1-main {
height: 359px; height: 359px;
.box1-main-center { .box1-main-center {
...@@ -897,7 +897,7 @@ onMounted(async () => { ...@@ -897,7 +897,7 @@ onMounted(async () => {
height: 415px; height: 415px;
background: rgb(255, 255, 255); background: rgb(255, 255, 255);
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box2-main { .box2-main {
height: 359px; height: 359px;
.box2-main-center { .box2-main-center {
...@@ -1051,77 +1051,6 @@ onMounted(async () => { ...@@ -1051,77 +1051,6 @@ onMounted(async () => {
} }
} }
} }
// .box2-main-center-content {
// height: 264px;
// display: flex;
// flex-wrap: wrap;
// justify-content: space-between;
// .box2-item {
// width: 402px;
// height: 58px;
// box-sizing: border-box;
// border: 1px solid rgba(243, 243, 244, 1);
// border-radius: 4px;
// margin-bottom: 8px;
// display: flex;
// .box2-item-left {
// width: 36px;
// height: 36px;
// margin-left: 16px;
// margin-top: 11px;
// img {
// width: 100%;
// height: 100%;
// }
// }
// .box2-item-center {
// margin-left: 14px;
// margin-top: 5px;
// width: 220px;
// .box2-item-center-top {
// height: 24px;
// color: rgba(59, 65, 75, 1);
// font-family: Microsoft YaHei;
// font-size: 14px;
// font-weight: 600;
// line-height: 24px;
// }
// .box2-item-center-bottom {
// height: 24px;
// color: rgba(132, 136, 142, 1);
// font-family: Microsoft YaHei;
// font-size: 14px;
// font-weight: 400;
// line-height: 24px;
// }
// }
// .box2-item-right {
// margin-left: 2px;
// .box2-item-right-top {
// height: 24px;
// color: rgba(206, 79, 81, 1);
// font-family: Microsoft YaHei;
// font-size: 14px;
// font-weight: 600;
// line-height: 24px;
// }
// .box2-item-right-bottom {
// height: 24px;
// color: rgba(132, 136, 142, 1);
// font-family: Microsoft YaHei;
// font-size: 14px;
// font-weight: 400;
// line-height: 24px;
// text-align: right;
// }
// }
// }
// }
// .box2-main-center-footer {
// height: 36px;
// display: flex;
// justify-self: center;
// }
} }
.box2-main-footer { .box2-main-footer {
width: 830px; width: 830px;
...@@ -1181,7 +1110,7 @@ onMounted(async () => { ...@@ -1181,7 +1110,7 @@ onMounted(async () => {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box3-main { .box3-main {
height: 791px; height: 791px;
.box3-main-center { .box3-main-center {
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</div> </div>
</div> </div>
<div class="main"> <div class="main">
<div class="left"> <div class="left" :style="{ width: (maxLineWidth + 250) + 'px' }">
<div class="top"> <div class="top">
<div class="top-line" :style="{ width: lineWidth }"> <div class="top-line" :style="{ width: lineWidth }">
<div class="top-line1"></div> <div class="top-line1"></div>
...@@ -29,11 +29,12 @@ ...@@ -29,11 +29,12 @@
<div class="item-box-dot"> <div class="item-box-dot">
<img src="./assets/images/top-line-dot.png" alt="" /> <img src="./assets/images/top-line-dot.png" alt="" />
</div> </div>
<div class="item-content">
<div class="item-header"> <div class="item-header">
<div class="item-title" :title="item.actionTitle"> <div class="item-title" :title="item.actionTitle">
{{ item.actionTitle }} <span v-if="item.versionId">({{ item.versionId }})</span> {{ item.actionTitle }} <span v-if="item.versionId">({{ item.versionId }})</span>
</div> </div>
<div class="item-header-icon" @click="handleClickDetail(true, item)"> <div class="item-header-icon" @click="handleClickDetail(true, item, $event)">
<img src="./assets/images/item-header-icon.png" alt="" /> <img src="./assets/images/item-header-icon.png" alt="" />
</div> </div>
</div> </div>
...@@ -43,7 +44,10 @@ ...@@ -43,7 +44,10 @@
<div class="item-main" v-if="item.fynrList && item.fynrList.length"> <div class="item-main" v-if="item.fynrList && item.fynrList.length">
<div class="item-main-item" v-for="(sub, subIndex) in item.fynrList" :key="subIndex"> <div class="item-main-item" v-for="(sub, subIndex) in item.fynrList" :key="subIndex">
<div class="icon"></div> <div class="icon"></div>
<CommonPrompt :content="sub">
<div class="text">{{ sub }}</div> <div class="text">{{ sub }}</div>
</CommonPrompt>
</div>
</div> </div>
</div> </div>
<div class="item-time"> <div class="item-time">
...@@ -72,11 +76,12 @@ ...@@ -72,11 +76,12 @@
<div class="item-box-dot"> <div class="item-box-dot">
<img src="./assets/images/bottom-line-dot.png" alt="" /> <img src="./assets/images/bottom-line-dot.png" alt="" />
</div> </div>
<div class="item-content">
<div class="item-header"> <div class="item-header">
<div class="item-title" :title="item.actionTitle"> <div class="item-title" :title="item.actionTitle">
{{ item.actionTitle }} <span v-if="item.versionId">({{ item.versionId }})</span> {{ item.actionTitle }} <span v-if="item.versionId">({{ item.versionId }})</span>
</div> </div>
<div class="item-header-icon" @click="handleClickDetail(true, item)"> <div class="item-header-icon" @click="handleClickDetail(true, item, $event)">
<img src="./assets/images/item-header-icon.png" alt="" /> <img src="./assets/images/item-header-icon.png" alt="" />
</div> </div>
</div> </div>
...@@ -86,7 +91,10 @@ ...@@ -86,7 +91,10 @@
<div class="item-main" v-if="item.fynrList && item.fynrList.length"> <div class="item-main" v-if="item.fynrList && item.fynrList.length">
<div class="item-main-item" v-for="(sub, subIndex) in item.fynrList" :key="subIndex"> <div class="item-main-item" v-for="(sub, subIndex) in item.fynrList" :key="subIndex">
<div class="icon"></div> <div class="icon"></div>
<CommonPrompt :content="sub">
<div class="text">{{ sub }}</div> <div class="text">{{ sub }}</div>
</CommonPrompt>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -111,7 +119,7 @@ ...@@ -111,7 +119,7 @@
<img src="./assets/icons/arrow-right.png" alt="" /> <img src="./assets/icons/arrow-right.png" alt="" />
</div> </div>
</div> --> </div> -->
<div class="dialog-wrapper" v-if="isShowDetailDialog" ref="dialogRef"> <div class="dialog-wrapper" v-if="isShowDetailDialog" ref="dialogRef" :style="dialogPos">
<div class="dialog-box1" @mousedown="handleMouseDown"> <div class="dialog-box1" @mousedown="handleMouseDown">
<div class="icon"> <div class="icon">
<img v-if="currentDetailItem.orgName === '参议院'" src="./assets/images/logo1.png" alt="" /> <img v-if="currentDetailItem.orgName === '参议院'" src="./assets/images/logo1.png" alt="" />
...@@ -446,6 +454,7 @@ ...@@ -446,6 +454,7 @@
<script setup> <script setup>
import { ref, onMounted, computed } from "vue"; import { ref, onMounted, computed } from "vue";
import { getBillDyqkSummary } from "@/api/bill"; import { getBillDyqkSummary } from "@/api/bill";
import CommonPrompt from "../../commonPrompt/index.vue";
// 获取法案流程 // 获取法案流程
...@@ -554,11 +563,34 @@ const curVersionList = ref([ ...@@ -554,11 +563,34 @@ const curVersionList = ref([
const isShowDetailDialog = ref(false); const isShowDetailDialog = ref(false);
const currentDetailItem = ref({}); const currentDetailItem = ref({});
const dialogPos = ref({ left: '0px', top: '0px' });
const handleClickDetail = (isShow, item = {}) => { const handleClickDetail = (isShow, item = {}, event = null) => {
isShowDetailDialog.value = isShow; isShowDetailDialog.value = isShow;
if (isShow) { if (isShow) {
currentDetailItem.value = item; currentDetailItem.value = item;
if (event) {
// 计算弹窗位置,出现在点击位置附近(偏移一些避免挡住鼠标)
const x = event.clientX;
const y = event.clientY;
// 获取包裹容器的偏移量,因为弹窗是 absolute 定位在 wrap 里的
const wrap = document.querySelector('.process-overview-wrap');
const rect = wrap.getBoundingClientRect();
let left = x - rect.left + 20;
let top = y - rect.top - 50;
// 边界处理:防止超出右边界
if (left + 480 > rect.width) {
left = x - rect.left - 500;
}
dialogPos.value = {
left: left + 'px',
top: top + 'px'
};
}
} }
}; };
...@@ -605,7 +637,8 @@ onMounted(() => { ...@@ -605,7 +637,8 @@ onMounted(() => {
.process-overview-wrap { .process-overview-wrap {
width: 1744px; width: 1744px;
height: 848px; height: 848px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
margin-top: 16px; margin-top: 16px;
position: relative; position: relative;
...@@ -650,15 +683,35 @@ onMounted(() => { ...@@ -650,15 +683,35 @@ onMounted(() => {
} }
.main { .main {
margin-left: 59px; margin-left: 59px;
height: 680px; height: 740px;
padding: 3px 10px; padding: 3px 10px 60px 10px;
overflow: hidden; overflow-x: auto;
overflow-y: hidden;
/* 自定义滚动条样式,模拟进度条 */
&::-webkit-scrollbar {
height: 8px;
}
&::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 4px;
}
&::-webkit-scrollbar-thumb {
background: rgba(20, 89, 187, 0.2);
border-radius: 4px;
&:hover {
background: rgba(20, 89, 187, 0.4);
}
}
.left { .left {
height: 680px; height: 680px;
position: relative; position: relative;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
/* 确保内容区域宽度足够展示所有节点和右侧汇合点 */
min-width: fit-content;
padding-right: 150px;
.top { .top {
height: 260px; height: 260px;
...@@ -751,11 +804,13 @@ onMounted(() => { ...@@ -751,11 +804,13 @@ onMounted(() => {
height: 100%; height: 100%;
} }
} }
.item-content {
border-left: 1px solid rgb(20, 89, 187);
}
.item-header { .item-header {
display: flex; display: flex;
align-items: center; align-items: center;
height: 30px; height: 30px;
border-left: 1px solid rgb(20, 89, 187);
padding: 0 10px; padding: 0 10px;
margin-bottom: 8px; margin-bottom: 8px;
.item-title { .item-title {
...@@ -788,7 +843,6 @@ onMounted(() => { ...@@ -788,7 +843,6 @@ onMounted(() => {
} }
} }
.item-info { .item-info {
border-left: 1px solid rgb(20, 89, 187);
padding: 0 10px; padding: 0 10px;
color: rgb(59, 65, 75); color: rgb(59, 65, 75);
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
...@@ -798,7 +852,6 @@ onMounted(() => { ...@@ -798,7 +852,6 @@ onMounted(() => {
margin-bottom: 4px; margin-bottom: 4px;
} }
.item-main { .item-main {
border-left: 1px solid rgb(20, 89, 187);
padding: 5px 10px; padding: 5px 10px;
.item-main-item { .item-main-item {
display: flex; display: flex;
...@@ -819,6 +872,16 @@ onMounted(() => { ...@@ -819,6 +872,16 @@ onMounted(() => {
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
line-height: 24px; line-height: 24px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
height: 48px;
}
:deep(.text-ellipsis) {
white-space: normal !important;
} }
} }
} }
...@@ -962,11 +1025,13 @@ onMounted(() => { ...@@ -962,11 +1025,13 @@ onMounted(() => {
height: 100%; height: 100%;
} }
} }
.item-content {
border-left: 1px solid rgba(255, 172, 77, 1);
}
.item-header { .item-header {
display: flex; display: flex;
align-items: center; align-items: center;
height: 30px; height: 30px;
border-left: 1px solid rgba(255, 172, 77, 1);
padding: 5px 10px; padding: 5px 10px;
margin-top: 8px; margin-top: 8px;
.item-title { .item-title {
...@@ -999,7 +1064,6 @@ onMounted(() => { ...@@ -999,7 +1064,6 @@ onMounted(() => {
} }
} }
.item-info { .item-info {
border-left: 1px solid rgba(255, 172, 77, 1);
padding: 0 10px; padding: 0 10px;
color: rgb(59, 65, 75); color: rgb(59, 65, 75);
font-family: Microsoft YaHei; font-family: Microsoft YaHei;
...@@ -1009,7 +1073,6 @@ onMounted(() => { ...@@ -1009,7 +1073,6 @@ onMounted(() => {
margin-top: 8px; margin-top: 8px;
} }
.item-main { .item-main {
border-left: 1px solid rgba(255, 172, 77, 1);
padding: 5px 10px; padding: 5px 10px;
.item-main-item { .item-main-item {
display: flex; display: flex;
...@@ -1030,6 +1093,15 @@ onMounted(() => { ...@@ -1030,6 +1093,15 @@ onMounted(() => {
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
line-height: 24px; line-height: 24px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
height: 48px;
}
:deep(.text-ellipsis) {
white-space: normal !important;
} }
} }
} }
...@@ -1159,8 +1231,6 @@ onMounted(() => { ...@@ -1159,8 +1231,6 @@ onMounted(() => {
} }
.dialog-wrapper { .dialog-wrapper {
position: absolute; position: absolute;
top: 56px;
right: 17px;
width: 480px; width: 480px;
// height: 692px; // 去掉固定高度,由内容撑开 // height: 692px; // 去掉固定高度,由内容撑开
padding-bottom: 20px; padding-bottom: 20px;
......
<template> <template>
<div class="home-container"> <div class="home-container">
<!-- <div class="home-top">
<div class="home-top-left-box">
<div class="left-box-top">
<div class="icon">
<img src="./assets/images/USA-logo.png" alt="" />
</div>
<div class="info">
<div class="info-box1">{{ "H.R.1(119th)-大而美法案" }}</div>
<div class="info-box2">
{{ "第119届美国国会众议院第1号法案 One Big Beautiful Bill Act" }}
</div>
</div>
</div>
<div class="left-box-bottom">
<div
class="left-box-bottom-item"
style="border-bottom: 2px solid rgba(22, 119, 255, 1)"
>
<div class="icon">
<img src="./assets/icons/icon1.png" alt="" />
</div>
<div class="name" style="color: rgba(22, 119, 255, 1)">
法案概况
</div>
</div>
<div class="left-box-bottom-item">
<div class="icon">
<img src="./assets/icons/icon2.png" alt="" />
</div>
<div class="name">深度挖掘</div>
</div>
<div class="left-box-bottom-item">
<div class="icon">
<img src="./assets/icons/icon3.png" alt="" />
</div>
<div class="name">影响分析</div>
</div>
<div class="left-box-bottom-item">
<div class="icon">
<img src="./assets/icons/icon4.png" alt="" />
</div>
<div class="name">相关情况</div>
</div>
</div>
</div>
<div class="home-top-right-box">
<div class="right-box-top">
<div class="time">{{ "2025年7月" }}</div>
<div class="name">{{ "乔迪·阿灵顿(Jodey Arrington)​​ " }}</div>
</div>
<div class="right-box-bottom">
<el-button type="plain" size="large" icon="Search"
>法案原文</el-button
>
<el-button type="primary" size="large" icon="EditPen"
>分析报告</el-button
>
</div>
</div>
</div> -->
<div class="home-center"> <div class="home-center">
<div class="home-sider"> <div class="home-sider">
<div <div
...@@ -226,8 +166,12 @@ onMounted(() => {}); ...@@ -226,8 +166,12 @@ onMounted(() => {});
.home-center { .home-center {
display: flex; display: flex;
height: 879px; height: 879px;
position: relative;
.home-sider { .home-sider {
width: 160px; width: 160px;
position: absolute;
top: 0;
left: -160px;
.sider-btn { .sider-btn {
margin-top: 20px; margin-top: 20px;
margin-left: 20px; margin-left: 20px;
......
...@@ -58,9 +58,13 @@ const handleClickLeftSiderBtn = (item,index) => { ...@@ -58,9 +58,13 @@ const handleClickLeftSiderBtn = (item,index) => {
.influence-wrap { .influence-wrap {
display: flex; display: flex;
height: 879px; height: 879px;
position: relative;
// background: (243, 243, 244, 1); // background: (243, 243, 244, 1);
.sider { .sider {
width: 160px; width: 160px;
position: absolute;
top: 0;
left: -160px;
.sider-btn { .sider-btn {
margin-top: 20px; margin-top: 20px;
margin-left: 10px; margin-left: 10px;
......
...@@ -811,7 +811,8 @@ onMounted(async () => { ...@@ -811,7 +811,8 @@ onMounted(async () => {
width: 480px; width: 480px;
height: 848px; height: 848px;
background: rgba(255, 255, 255); background: rgba(255, 255, 255);
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.left-top { .left-top {
margin: 0 auto; margin: 0 auto;
width: 446px; width: 446px;
...@@ -949,7 +950,8 @@ onMounted(async () => { ...@@ -949,7 +950,8 @@ onMounted(async () => {
width: 1247px; width: 1247px;
height: 847px; height: 847px;
background: rgba(255, 255, 255); background: rgba(255, 255, 255);
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
position: relative; position: relative;
.graph-dialog { .graph-dialog {
width: 740px; width: 740px;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
<div class="box1-main"> <div class="box1-main">
<div class="box1-left"> <div class="box1-left">
<img src="./assets/images/image1.png" alt="" /> <img :src=" basicInfo.imageUrl || defaultBill" alt="" />
</div> </div>
<div class="box1-right"> <div class="box1-right">
<div class="box1-right-item"> <div class="box1-right-item">
...@@ -31,9 +31,6 @@ ...@@ -31,9 +31,6 @@
<div class="box1-right-item"> <div class="box1-right-item">
<div class="item-left">相关领域:</div> <div class="item-left">相关领域:</div>
<div class="item-right1"> <div class="item-right1">
<!-- <div class="right1-item">跨境电商</div>
<div class="right1-item">新能源产业</div>
<div class="right1-item">半导体产业</div> -->
<div class="right1-item" v-for="item in basicInfo.hylyList" :key="item">{{ item }}</div> <div class="right1-item" v-for="item in basicInfo.hylyList" :key="item">{{ item }}</div>
</div> </div>
</div> </div>
...@@ -355,6 +352,7 @@ import STimeline from "./STimeline.vue"; ...@@ -355,6 +352,7 @@ import STimeline from "./STimeline.vue";
import { getBillInfo, getBillPerson, getBillEvent, getBillDyqk } from "@/api/bill"; import { getBillInfo, getBillPerson, getBillEvent, getBillDyqk } from "@/api/bill";
import defaultAvatar from "../assets/images/default-icon1.png"; import defaultAvatar from "../assets/images/default-icon1.png";
import defaultNew from "../assets/images/default-icon-news.png"; import defaultNew from "../assets/images/default-icon-news.png";
import defaultBill from "./assets/images/image1.png"
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
...@@ -376,13 +374,6 @@ const handleClcikDialogBoxBtn = index => { ...@@ -376,13 +374,6 @@ const handleClcikDialogBoxBtn = index => {
dialogBoxBtnActive.value = index; dialogBoxBtnActive.value = index;
}; };
const handleChangeFaId = val => {
console.log("val", val);
handleGetBillPerson(val);
};
const timelineData = ref([]); const timelineData = ref([]);
const isShowDialog = ref(false); const isShowDialog = ref(false);
...@@ -520,7 +511,7 @@ onMounted(() => { ...@@ -520,7 +511,7 @@ onMounted(() => {
height: 415px; height: 415px;
background: #fff; background: #fff;
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.box1-main { .box1-main {
display: flex; display: flex;
height: 394px; height: 394px;
...@@ -528,6 +519,10 @@ onMounted(() => { ...@@ -528,6 +519,10 @@ onMounted(() => {
margin-left: 23px; margin-left: 23px;
width: 247px; width: 247px;
height: 350px; height: 350px;
img {
width: 100%;
height: 100%;
}
} }
.box1-right { .box1-right {
margin-left: 31px; margin-left: 31px;
...@@ -541,49 +536,38 @@ onMounted(() => { ...@@ -541,49 +536,38 @@ onMounted(() => {
width: 100px; width: 100px;
height: 14px; height: 14px;
color: rgba(59, 65, 75, 1); color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei; font-family: "Microsoft YaHei";
font-size: 14px; font-size: 16px;
font-weight: 600; font-weight: 700;
line-height: 14px; line-height: 14px;
text-align: left; text-align: left;
} }
.item-right { .item-right {
height: 14px; height: 14px;
color: var(--color-main-active); color: var(--color-main-active);
font-family: Microsoft YaHei; font-family: "Microsoft YaHei";
font-size: 14px; font-size: 16px;
font-weight: 600; font-weight: 700;
line-height: 14px; line-height: 14px;
letter-spacing: 0px; letter-spacing: 0px;
text-align: left; text-align: left;
} }
.item-right1 { .item-right1 {
display: flex; display: flex;
flex-wrap: wrap;
align-items: center; align-items: center;
width: 700px; width: 700px;
height: 40px; min-height: 40px;
overflow-x: auto;
overflow-y: hidden;
&::-webkit-scrollbar {
height: 4px;
}
&::-webkit-scrollbar-thumb {
border-radius: 4px;
background: #e1e1e1;
}
&::-webkit-scrollbar-track {
background: transparent;
}
.right1-item { .right1-item {
flex-shrink: 0;
margin-right: 10px; margin-right: 10px;
margin-bottom: 8px;
padding: 1px 8px; padding: 1px 8px;
box-sizing: border-box; box-sizing: border-box;
border: 1px solid rgba(186, 224, 255, 1); border: 1px solid rgba(186, 224, 255, 1);
border-radius: 4px; border-radius: 4px;
background: rgba(230, 244, 255, 1); background: rgba(230, 244, 255, 1);
color: rgba(22, 119, 255, 1); color: rgba(22, 119, 255, 1);
font-family: Microsoft YaHei; font-family: "Microsoft YaHei";
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
line-height: 20px; line-height: 20px;
...@@ -593,8 +577,8 @@ onMounted(() => { ...@@ -593,8 +577,8 @@ onMounted(() => {
.right2-item { .right2-item {
height: 14px; height: 14px;
color: rgba(95, 101, 108, 1); color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei; font-family: "Microsoft YaHei";
font-size: 14px; font-size: 16px;
font-weight: 400; font-weight: 400;
line-height: 14px; line-height: 14px;
text-align: left; text-align: left;
...@@ -604,8 +588,8 @@ onMounted(() => { ...@@ -604,8 +588,8 @@ onMounted(() => {
.item-right3 { .item-right3 {
height: 14px; height: 14px;
color: rgba(95, 101, 108, 1); color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei; font-family: "Microsoft YaHei";
font-size: 14px; font-size: 16px;
font-weight: 400; font-weight: 400;
line-height: 14px; line-height: 14px;
text-align: left; text-align: left;
...@@ -618,7 +602,7 @@ onMounted(() => { ...@@ -618,7 +602,7 @@ onMounted(() => {
.step { .step {
height: 28px; height: 28px;
line-height: 26px; line-height: 26px;
font-size: 14px; font-size: 16px;
text-align: center; text-align: center;
position: relative; position: relative;
background: transparent; background: transparent;
...@@ -702,7 +686,7 @@ onMounted(() => { ...@@ -702,7 +686,7 @@ onMounted(() => {
height: 415px; height: 415px;
background: #fff; background: #fff;
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
position: relative; position: relative;
.box2-main { .box2-main {
margin-top: 10px; margin-top: 10px;
...@@ -841,7 +825,7 @@ onMounted(() => { ...@@ -841,7 +825,7 @@ onMounted(() => {
height: 845px; height: 845px;
background: #fff; background: #fff;
border-radius: 10px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
.introduction-wrap-right-main { .introduction-wrap-right-main {
.right-main-box1 { .right-main-box1 {
// height: 218px; 将选择框去掉后高度变化 // height: 218px; 将选择框去掉后高度变化
......
...@@ -596,7 +596,7 @@ onMounted(() => { ...@@ -596,7 +596,7 @@ onMounted(() => {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
padding: 16px 160px; padding: 16px 0px;
justify-content: space-between; justify-content: space-between;
.box-header { .box-header {
height: 45px; height: 45px;
...@@ -680,10 +680,10 @@ onMounted(() => { ...@@ -680,10 +680,10 @@ onMounted(() => {
} }
} }
.left { .left {
width: 1068px; width: 1212px;
height: 847px; height: 847px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(60, 87, 126, 0.2); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.box1 { .box1 {
position: relative; position: relative;
...@@ -721,7 +721,7 @@ onMounted(() => { ...@@ -721,7 +721,7 @@ onMounted(() => {
} }
} }
.box1-main { .box1-main {
width: 1068px; width: 1212px;
height: 730px; height: 730px;
// background: orange; // background: orange;
} }
...@@ -773,8 +773,8 @@ onMounted(() => { ...@@ -773,8 +773,8 @@ onMounted(() => {
.right { .right {
width: 520px; width: 520px;
height: 848px; height: 848px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 15px 0px rgba(60, 87, 126, 0.2); box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.box2 { .box2 {
.box2-main { .box2-main {
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
<div class="right-box1"> <div class="right-box1">
<div class="box-header"> <div class="box-header">
<div class="box-header-left"></div> <div class="box-header-left"></div>
<div class="box-header-title">限制方式</div> <div class="box-header-title">限制手段</div>
<div class="header-right"> <div class="header-right">
<div class="icon"> <div class="icon">
<img src="@/assets/icons/box-header-icon1.png" alt="" /> <img src="@/assets/icons/box-header-icon1.png" alt="" />
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
<div class="right-box2"> <div class="right-box2">
<div class="box-header"> <div class="box-header">
<div class="box-header-left"></div> <div class="box-header-left"></div>
<div class="box-header-title">涉及行业</div> <div class="box-header-title">涉及领域</div>
<div class="header-right"> <div class="header-right">
<div class="icon"> <div class="icon">
<img src="@/assets/icons/box-header-icon1.png" alt="" /> <img src="@/assets/icons/box-header-icon1.png" alt="" />
...@@ -430,7 +430,8 @@ onMounted(async () => { ...@@ -430,7 +430,8 @@ onMounted(async () => {
margin-top: 16px; margin-top: 16px;
width: 1150px; width: 1150px;
height: 845px; height: 845px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.left-top { .left-top {
height: 45px; height: 45px;
...@@ -599,7 +600,8 @@ onMounted(async () => { ...@@ -599,7 +600,8 @@ onMounted(async () => {
.right-box1 { .right-box1 {
width: 576px; width: 576px;
height: 415px; height: 415px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.right-box1-main { .right-box1-main {
width: 576px; width: 576px;
...@@ -655,7 +657,8 @@ onMounted(async () => { ...@@ -655,7 +657,8 @@ onMounted(async () => {
margin-top: 15px; margin-top: 15px;
width: 576px; width: 576px;
height: 415px; height: 415px;
border-radius: 4px; border-radius: 10px;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
.right-box2-main { .right-box2-main {
width: 576px; width: 576px;
......
<template>
<el-tooltip
effect="dark"
:content="content"
popper-class="common-prompt-popper"
placement="top"
:show-after="500"
>
<div class="text-ellipsis">
<slot>{{ content }}</slot>
</div>
</el-tooltip>
</template>
<script setup>
defineProps({
content: {
type: String,
default: ""
}
});
</script>
<style scoped>
.text-ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
cursor: pointer;
}
</style>
<style>
.common-prompt-popper.el-popper {
padding: 8px 16px !important;
border-radius: 10px !important;
background-color: rgb(59, 65, 75) !important;
font-size: 16px !important;
font-weight: 400 !important;
font-family: "Microsoft YaHei" !important;
line-height: 30px !important;
color: #fff !important;
border: none !important;
}
.common-prompt-popper.el-popper .el-popper__arrow::before {
background-color: rgb(59, 65, 75) !important;
border-color: rgb(59, 65, 75) !important;
}
</style>
...@@ -99,14 +99,23 @@ ...@@ -99,14 +99,23 @@
</div> </div>
</div> </div>
<div style="margin: 6px 34px 0 23px"> <div style="margin: 6px 34px 0 23px">
<div v-for="item in riskSignals" :key="item.id" class="right-main" @click="handleToRiskDetail"> <div v-for="item in riskSignals" :key="item.id" class="right-main" @click="handleToRiskDetail(item)">
<div class="main-left" :class="{ cl4: item.title === '特别重大', cl5: item.title === '重大风险' }"> <div
class="main-left"
:class="{ cl4: item.title === '特别重大', cl5: item.title === '重大风险', cl6: item.title === '一般风险' }"
>
{{ item.title }} {{ item.title }}
</div> </div>
<div class="main-center">{{ item.content }}</div> <div class="item-right">
<div class="main-center">
<CommonPrompt :content="item.content">
{{ item.content }}
</CommonPrompt>
</div>
<div class="main-right">{{ item.time }}</div> <div class="main-right">{{ item.time }}</div>
</div> </div>
</div> </div>
</div>
<div class="right-mainbtn" @click="handleToMoreRiskSignal"> <div class="right-mainbtn" @click="handleToMoreRiskSignal">
<img src="./assets/btn.png" alt="" /> <img src="./assets/btn.png" alt="" />
查看更多 查看更多
...@@ -118,8 +127,27 @@ ...@@ -118,8 +127,27 @@
<script setup> <script setup>
import { ref, onMounted, computed } from "vue"; import { ref, onMounted, computed } from "vue";
import router from "@/router"; import router from "@/router";
import { getCoopRestrictionTrends } from "@/api/coopRestriction/coopRestriction.js"; import { getCoopRestrictionTrends, getCoopRestrictionSignals } from "@/api/coopRestriction/coopRestriction.js";
import defaultImg from "./assets/usImg.png"; import defaultImg from "./assets/usImg.png";
import CommonPrompt from "../../commonPrompt/index.vue";
// 合作限制-查询风险信号数据
const getCoopRestrictionSignalsData = async () => {
try {
const res = await getCoopRestrictionSignals({ moduleId: "0106" });
if (res && res.code === 200) {
riskSignals.value = (res.data || []).map(item => ({
id: item.signalId,
title: item.signalLevel,
content: item.signalTitle,
time: item.signalTime
}));
}
} catch (error) {
console.error("获取合作限制风险信号数据失败:", error);
}
};
const coopRestrictionTrends = ref([]); const coopRestrictionTrends = ref([]);
const carouselRef = ref(null); const carouselRef = ref(null);
...@@ -161,32 +189,7 @@ const mainTrend = computed(() => { ...@@ -161,32 +189,7 @@ const mainTrend = computed(() => {
}); });
// 右侧风险信号列表 // 右侧风险信号列表
const riskSignals = ref([ const riskSignals = ref([]);
{
id: 1,
title: "特别重大",
content: "保护美国资金与专业知识免受敌对研究利用法案",
time: "一天前"
},
{
id: 2,
title: "特别重大",
content: "美国国土安全部终止哈佛大学SEVP认证",
time: "一天前"
},
{
id: 3,
title: "重大风险",
content: "众议院“美中战略竞争特别委员会”向国会提...",
time: "一天前"
},
{
id: 4,
title: "重大风险",
content: '2026财年拨款法案要求重启"中国行动计划"',
time: "一天前"
}
]);
// 点击查看详情 // 点击查看详情
const handleClickToDetail = (item) => { const handleClickToDetail = (item) => {
...@@ -201,8 +204,11 @@ const handleClickToDetail = (item) => { ...@@ -201,8 +204,11 @@ const handleClickToDetail = (item) => {
}; };
// 点击风险信号详情 // 点击风险信号详情
const handleToRiskDetail = () => { const handleToRiskDetail = (item) => {
const curRoute = router.resolve("/cooperationRestrictions/detail"); const curRoute = router.resolve({
path: "/cooperationRestrictions/detail",
query: { id: item.id },
});
window.open(curRoute.href, "_blank"); window.open(curRoute.href, "_blank");
}; };
...@@ -215,6 +221,8 @@ const handleToMoreRiskSignal = () => { ...@@ -215,6 +221,8 @@ const handleToMoreRiskSignal = () => {
onMounted(() => { onMounted(() => {
// 合作限制-最新动态数据-获取数据 // 合作限制-最新动态数据-获取数据
getCoopRestrictionTrendsData(); getCoopRestrictionTrendsData();
// 合作限制-风险信号数据-获取数据
getCoopRestrictionSignalsData();
}); });
</script> </script>
...@@ -522,18 +530,31 @@ onMounted(() => { ...@@ -522,18 +530,31 @@ onMounted(() => {
background-color: rgba(255, 247, 230, 1); background-color: rgba(255, 247, 230, 1);
color: rgba(250, 140, 22, 1); color: rgba(250, 140, 22, 1);
} }
.cl6 {
background-color: rgba(246, 255, 237, 1);
color: rgba(82, 196, 26, 1);
}
.item-right {
flex: 1;
display: flex;
justify-content: space-between;
align-items: center;
overflow: hidden;
.main-center { .main-center {
width: 347px; flex: 1;
height: 30px; height: 30px;
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
font-family: "Microsoft YaHei"; font-family: "Microsoft YaHei";
line-height: 30px; line-height: 30px;
color: rgb(59, 65, 75); color: rgb(59, 65, 75);
margin-right: 2px; margin-right: 10px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.main-right { .main-right {
width: 60px; width: 100px;
height: 24px; height: 24px;
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
...@@ -541,6 +562,8 @@ onMounted(() => { ...@@ -541,6 +562,8 @@ onMounted(() => {
line-height: 24px; line-height: 24px;
color: rgb(132, 136, 142); color: rgb(132, 136, 142);
text-align: right; text-align: right;
flex-shrink: 0;
}
} }
} }
.right-mainbtn { .right-mainbtn {
......
...@@ -21,7 +21,7 @@ defineProps({ ...@@ -21,7 +21,7 @@ defineProps({
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%; width: 100%;
margin-bottom: 20px; margin-bottom: 36px;
padding: 10px 15px; padding: 10px 15px;
} }
......
...@@ -928,47 +928,47 @@ export const getMultipleLineChart = obj => { ...@@ -928,47 +928,47 @@ export const getMultipleLineChart = obj => {
export const getMultipleBarChart_m = object => { export const getMultipleBarChart_m = object => {
const list = _.chain(object.data).filter("year").orderBy("year", "asc").value(); const list = _.chain(object.data).filter("year").orderBy("year", "asc").value();
const colors = [ const colors = [
["rgba(45, 123, 248, 1)", "rgba(45, 123, 248, 0)"], ["rgba(45, 123, 248, 1)", "rgba(45, 123, 248, 0.1)"],
["rgba(206, 79, 81, 1)", "rgba(206, 79, 81, 0)"], ["rgba(206, 79, 81, 1)", "rgba(206, 79, 81, 0.1)"],
["rgba(255, 197, 61, 1)", "rgba(255, 197, 61, 0)"], ["rgba(255, 197, 61, 1)", "rgba(255, 197, 61, 0.1)"],
["rgba(255, 182, 193, 1)", "rgba(255, 182, 193, 0)"], ["rgba(255, 182, 193, 1)", "rgba(255, 182, 193, 0.1)"],
["rgba(159, 122, 234, 1)", "rgba(159, 122, 234, 0)"], ["rgba(159, 122, 234, 1)", "rgba(159, 122, 234, 0.1)"],
["rgba(90, 200, 220, 1)", "rgba(90, 200, 220, 0)"] ["rgba(90, 200, 220, 1)", "rgba(90, 200, 220, 0.1)"]
]; ];
const names = _.map(list, "year"); const names = _.map(list, "year");
const legendData = _.chain(object.domains)
.slice(0, 6)
.map((name, index) => {
return {
name: name,
itemStyle: {
color: colors[index % colors.length][0] // 强制图例使用实色
}
};
})
.value();
const datas = _.chain(object.domains) const datas = _.chain(object.domains)
.splice(0, 6) .slice(0, 6)
.map((name, index) => { .map((name, index) => {
// console.log(_.map(list, name)); const colorPair = colors[index % colors.length];
return { return {
name, name,
data: _.map(list, `domainNum.${name}`), data: _.map(list, `domainNum.${name}`),
type: "bar", type: "bar",
color: colors[index % colors.length][0], color: colorPair[0], // 图例使用实色
barWidth: 12, barWidth: 12,
itemStyle: { itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: colors[index % colors.length][0] }, { offset: 0, color: colorPair[0] }, // 顶部颜色
// { offset: 0.5, color: '#188df0' }, { offset: 1, color: colorPair[1] } // 底部颜色
{ offset: 1, color: colors[index % colors.length][1] }
]), ]),
borderRadius: [6, 6, 0, 0] borderRadius: [6, 6, 0, 0]
} }
}; };
}) })
.value(); .value();
// console.log("names", names);
let allValues = [];
datas.forEach(series => {
if (series.data) allValues.push(...series.data);
});
let maxVal = Math.max(...(allValues.length > 0 ? allValues : [0]));
// if (maxVal === 0) maxVal = 100;
// else maxVal = maxVal * 1.2;
// let interval = Math.ceil(maxVal / 5);
// if (interval > 5) interval = Math.ceil(interval / 10) * 10;
// maxVal = interval * 5;
const option = { const option = {
tooltip: { tooltip: {
...@@ -985,10 +985,19 @@ export const getMultipleBarChart_m = object => { ...@@ -985,10 +985,19 @@ export const getMultipleBarChart_m = object => {
containLabel: true containLabel: true
}, },
legend: { legend: {
// type: "scroll", icon: "circle",
// show: true, itemWidth: 12,
// orient: "horizontal", itemHeight: 12,
icon: "circle" data: legendData,
textStyle: {
fontSize: 16,
fontWeight: 400,
fontFamily: "Microsoft YaHei",
color: "rgb(95, 101, 108)",
lineHeight: 24,
verticalAlign: "middle",
padding: [2, 0, 0, 0] // 微调文字位置,使中线对齐
}
}, },
xAxis: { xAxis: {
type: "category", type: "category",
......
...@@ -126,7 +126,9 @@ ...@@ -126,7 +126,9 @@
> >
<img :src="item.imageUrl" alt="" /> <img :src="item.imageUrl" alt="" />
<div class="person-info"> <div class="person-info">
<div class="name">{{ item.name }}</div> <CommonPrompt :content="item.name">
<span class="name">{{ item.name }}</span>
</CommonPrompt>
<div class="title1">{{ item.position }}</div> <div class="title1">{{ item.position }}</div>
</div> </div>
</div> </div>
...@@ -168,6 +170,7 @@ import defaultIcon from "../../../../../assets/icons/default-avatar.png"; ...@@ -168,6 +170,7 @@ import defaultIcon from "../../../../../assets/icons/default-avatar.png";
import icon01 from "../../assets/icon01.png"; import icon01 from "../../assets/icon01.png";
import icon02 from "../../assets/icon02.png"; import icon02 from "../../assets/icon02.png";
import { ArrowDown } from "@element-plus/icons-vue"; import { ArrowDown } from "@element-plus/icons-vue";
import CommonPrompt from "../../../../../commonPrompt/index.vue";
import { getEntityInfo, getPublishInfo, getPublishOrgInfo, getEntityUpdateInfo } from "@/api/exportControlV2.0.js"; import { getEntityInfo, getPublishInfo, getPublishOrgInfo, getEntityUpdateInfo } from "@/api/exportControlV2.0.js";
// 处理点击发布机构的方法 // 处理点击发布机构的方法
...@@ -364,11 +367,13 @@ const handleLoadMoreDynamic = () => { ...@@ -364,11 +367,13 @@ const handleLoadMoreDynamic = () => {
// 获取实体清单基本信息 // 获取实体清单基本信息
const entityInfo = ref({}); const entityInfo = ref({});
const emit = defineEmits(['update-entity-info']);
const getEntityInfoFn = async () => { const getEntityInfoFn = async () => {
try { try {
const res = await getEntityInfo(); const res = await getEntityInfo("el");
if (res && res.code === 200) { if (res && res.code === 200) {
entityInfo.value = res.data; entityInfo.value = res.data;
emit('update-entity-info', res.data);
} }
} catch (error) { } catch (error) {
console.error("获取实体清单基本信息失败:", error); console.error("获取实体清单基本信息失败:", error);
...@@ -637,19 +642,19 @@ onMounted(() => { ...@@ -637,19 +642,19 @@ onMounted(() => {
} }
} }
.key-person-list { .key-person-list {
display: flex; display: grid;
flex-wrap: wrap; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
column-gap: 40px;
padding-left: 28px;
.person-item { .person-item {
width: 185px; width: 100%;
cursor: pointer; cursor: pointer;
display: flex; display: flex;
align-items: center; align-items: flex-start;
margin-bottom: 16px; margin-bottom: 16px;
&:nth-child(2n-1) { min-width: 0;
margin-left: 28px;
margin-right: 39px;
}
img { img {
width: 48px; width: 48px;
height: 48px; height: 48px;
...@@ -659,13 +664,20 @@ onMounted(() => { ...@@ -659,13 +664,20 @@ onMounted(() => {
flex-shrink: 0; flex-shrink: 0;
} }
.person-info { .person-info {
flex: 1;
min-width: 0;
overflow: hidden;
.name { .name {
display: block;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
font-family: "Microsoft YaHei"; font-family: "Microsoft YaHei";
color: rgb(59, 65, 75); color: rgb(59, 65, 75);
margin-bottom: 1px; margin-bottom: 1px;
white-space: nowrap; white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
} }
.title1 { .title1 {
font-size: 16px; font-size: 16px;
...@@ -673,7 +685,7 @@ onMounted(() => { ...@@ -673,7 +685,7 @@ onMounted(() => {
font-family: "Microsoft YaHei"; font-family: "Microsoft YaHei";
color: rgb(95, 101, 108); color: rgb(95, 101, 108);
line-height: 1.2; line-height: 1.2;
// white-space: nowrap; word-break: break-all;
} }
} }
} }
......
...@@ -7,17 +7,19 @@ ...@@ -7,17 +7,19 @@
</div> </div>
</div> </div>
<div class="content-box"> <div class="content-box">
<introductionPage v-if="activeIndex === 0"></introductionPage> <introductionPage v-if="activeIndex === 0" @update-entity-info="(data) => $emit('update-entity-info', data)"></introductionPage>
<listPage v-if="activeIndex === 1"></listPage> <listPage v-if="activeIndex === 1"></listPage>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref, defineEmits } from 'vue'
import introductionPage from "./components/introductionPage/index.vue" import introductionPage from "./components/introductionPage/index.vue"
import listPage from "./components/listPage/index.vue" import listPage from "./components/listPage/index.vue"
const emit = defineEmits(['update-entity-info'])
const activeTab = ref(["实体清单简介", "实体清单列表"]) const activeTab = ref(["实体清单简介", "实体清单列表"])
const activeIndex = ref(0) const activeIndex = ref(0)
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
</div> </div>
</div> </div>
<div class="main"> <div class="main">
<sanctions-overview v-if="activeIndex === 0"></sanctions-overview> <sanctions-overview v-if="activeIndex === 0" @update-entity-info="handleUpdateEntityInfo"></sanctions-overview>
<data-statistics v-if="activeIndex === 1"></data-statistics> <data-statistics v-if="activeIndex === 1"></data-statistics>
<deep-mining v-if="activeIndex === 2"></deep-mining> <deep-mining v-if="activeIndex === 2"></deep-mining>
<impact-analysis v-if="activeIndex === 3"></impact-analysis> <impact-analysis v-if="activeIndex === 3"></impact-analysis>
...@@ -60,12 +60,25 @@ import icon3Active from "../assets/icons/icon3_active.png"; ...@@ -60,12 +60,25 @@ import icon3Active from "../assets/icons/icon3_active.png";
const headerTitle = ref({ const headerTitle = ref({
img: title, // img: title,
title: "实体清单", // title: "实体清单",
titleEn: "Entity List", // titleEn: "Entity List",
department: "美国商务部工业与安全局" // department: "美国商务部工业与安全局"
}) })
const handleUpdateEntityInfo = (data) => {
if (data) {
headerTitle.value = {
...headerTitle.value,
title: data.name,
titleEn: data.originalName,
department: data.orgName,
departId: data.orgId,
img: data.orgLogoUrl || title
}
}
}
const activeIndex = ref(0) const activeIndex = ref(0)
const headerNavList = ref([ const headerNavList = ref([
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论