提交 3967f51d authored 作者: 付康's avatar 付康

合并分支 'fk-dev' 到 'pre'

Fk dev 查看合并请求 !266
流水线 #173 已通过 于阶段
in 1 分 31 秒
......@@ -11,7 +11,7 @@
<!-- <div class="title-box" v-if="false"> -->
<div class="title" v-for="(item, index) in homeTitleList" :key="index"
@mouseenter="handleShowMenu(index, true)" @click="handleClickTitle(item, index)">
<div class="text" :class="{ textActive: homeActiveTitleIndex === index }">
<div class="text text-title-1-show" :class="{ textActive: homeActiveTitleIndex === index }">
{{ item.name }}
</div>
<div class="bottom-line" v-if="homeActiveTitleIndex === index"></div>
......@@ -27,7 +27,7 @@
<div class="user">
<img src="@/assets/icons/overview/user.png" alt="" />
</div>
<div class="name">{{ "管理员" }}</div>
<div class="name text-regular">{{ "管理员" }}</div>
</div>
</div>
<div class="menu-box" v-show="isShowMenu" @mouseenter="handleHoverMenu(true)"
......@@ -344,12 +344,7 @@ onUnmounted(() => {
}
.text {
color: rgba(59, 65, 75, 1);
font-family: YouSheBiaoTiHei;
font-style: Regular;
font-size: 30px;
font-weight: 400;
letter-spacing: 0px;
color: var(--text-primary-80-color);
}
.textActive {
......@@ -419,13 +414,7 @@ onUnmounted(() => {
.name {
width: 48px;
height: 30px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-style: Regular;
font-size: 16px;
font-weight: 400;
line-height: 30px;
letter-spacing: 0px;
color: var(--text-primary-80-color);
}
}
}
......@@ -465,35 +454,29 @@ onUnmounted(() => {
width: 562px;
height: 348px;
margin-top: 8px;
margin-left: 72px;
display: flex;
flex-wrap: wrap;
.menu-item {
margin-top: 36px;
width: 280px;
height: 24px;
display: flex;
cursor: pointer;
&:hover {
.title {
color: var(--color-main-active);
font-size: 20px;
}
}
.icon {
width: 24px;
height: 24px;
img {
width: 100%;
height: 100%;
}
}
.title {
margin-left: 16px;
height: 24px;
......@@ -523,20 +506,17 @@ onUnmounted(() => {
backdrop-filter: blur(30px);
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 0.8);
.menu-content {
width: 562px;
height: 348px;
margin-top: 8px;
margin-left: 72px;
.menu-item {
margin-top: 36px;
width: 280px;
height: 24px;
display: flex;
cursor: pointer;
&:hover {
.title {
color: var(--color-main-active);
......@@ -553,7 +533,6 @@ onUnmounted(() => {
height: 100%;
}
}
.title {
margin-left: 16px;
height: 24px;
......
......@@ -83,7 +83,8 @@
</el-icon>
</div>
<div class="right-box1-main-bottom">
<WordCloudMap :data="wordCloudData" :selectedName="selectedIndustryName" shape="circle" @wordClick="handleWordClick" />
<WordCloudMap :data="wordCloudData" :selectedName="selectedIndustryName" shape="circle"
@wordClick="handleWordClick" />
</div>
</div>
<div class="right-box2">
......@@ -147,13 +148,19 @@ const handleClickEvent = item => {
// 跳转人员详情
const handleClickUser = item => {
window.sessionStorage.setItem('curTabName', item.name)
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(routeData.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(routeData.href, "_blank");
})
};
const box1BtnActive = ref(1);
......@@ -398,6 +405,7 @@ onMounted(() => {
.left-box--background {
height: auto;
.box1-main {
.box1-main-center {
margin: 0 auto;
......@@ -495,6 +503,7 @@ onMounted(() => {
.left-box--event {
margin-top: 15px;
height: auto;
.box2-main {
--event-item-height: 60px;
......
......@@ -433,14 +433,21 @@ const handleClickAvatar = async member => {
return;
}
window.sessionStorage.setItem("curTabName", member.name || "");
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/characterPage",
// query: {
// type,
// personId: member.id
// }
// });
// window.open(routeData.href, "_blank");
router.push({
path: "/characterPage",
query: {
type,
personId: member.id
}
});
window.open(routeData.href, "_blank");
})
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
......
......@@ -331,14 +331,23 @@ const handleClickToCharacter = async (id, name) => {
return;
}
window.sessionStorage.setItem("curTabName", name);
const route = router.resolve({
path: "/characterPage",
query: {
type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId: id
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
// personId: id
// }
// });
// window.open(route.href, "_blank");
router.push(
{
path: "/characterPage",
query: {
type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId: id
}
}
});
window.open(route.href, "_blank");
)
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
......@@ -424,28 +433,34 @@ const curBill = ref({
const handleClickToDetail = () => {
window.sessionStorage.setItem("billId", curBill.value.billId);
window.sessionStorage.setItem("curTabName", curBill.value.billName);
const route = router.resolve({
// const route = router.resolve({
// path: "/billLayout",
// query: {
// billId: curBill.value.billId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/billLayout",
query: {
billId: curBill.value.billId
}
});
console.log(route);
window.open(route.href, "_blank");
})
};
// 查看详情 传递参数
const handleClickToDetailO = item => {
window.sessionStorage.setItem("billId", item.billId);
window.sessionStorage.setItem("curTabName", item.name || item.signalTitle);
const route = router.resolve("/billLayout?billId=" + item.billId);
window.open(route.href, "_blank");
// const route = router.resolve("/billLayout?billId=" + item.billId);
// window.open(route.href, "_blank");
router.push("/billLayout?billId=" + item.billId)
};
// 查看更多风险信号
const handleToMoreRiskSignal = () => {
const route = router.resolve("/viewRiskSignal");
window.open(route.href, "_blank");
// const route = router.resolve("/viewRiskSignal");
// window.open(route.href, "_blank");
router.push("/viewRiskSignal")
};
// 风险信号
const warningList = ref([]);
......@@ -944,13 +959,19 @@ watch(box7selectetedTime, () => {
});
// 查看社交媒体详情
const handleToSocialDetail = item => {
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(route.href, "_blank");
})
};
// 关键条款
const wordCloudData = ref([]);
......
......@@ -30,8 +30,7 @@
<div class="box1-right-item">
<div class="item-left">委员会报告:</div>
<div class="item-right2" v-if="reportList.length">
<div class="right2-item" v-for="(item, index) in reportList"
:key="getReportKey(item, index)">
<div class="right2-item" v-for="(item, index) in reportList" :key="getReportKey(item, index)">
{{ item }}
</div>
</div>
......@@ -47,10 +46,9 @@
<div class="box1-right-item">
<div class="item-left">立案流程:</div>
<div class="item-right4">
<div v-for="(item, index) in reversedStageList" :key="getStageKey(item, index)"
class="step" :style="{ zIndex: getStageZIndex(index) }">
<div class="step-box"
:class="{ 'step-box-active': index === stageActiveIndex }">
<div v-for="(item, index) in reversedStageList" :key="getStageKey(item, index)" class="step"
:style="{ zIndex: getStageZIndex(index) }">
<div class="step-box" :class="{ 'step-box-active': index === stageActiveIndex }">
{{ item }}
</div>
</div>
......@@ -79,8 +77,7 @@
<div class="name-box">
<div class="person-box">
<div class="person-item" :class="{ nameItemActive: box3BtnActive === item.name }"
@click="handleClcikBox3Btn(item.name, index)"
v-for="(item, index) in personList" :key="index">
@click="handleClcikBox3Btn(item.name, index)" v-for="(item, index) in personList" :key="index">
{{ item.name }}
</div>
</div>
......@@ -197,14 +194,21 @@ const handleClickAvatar = async item => {
return;
}
window.sessionStorage.setItem("curTabName", item.name || "");
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/characterPage",
// query: {
// type,
// personId: item.id
// }
// });
// window.open(routeData.href, "_blank");
router.push({
path: "/characterPage",
query: {
type,
personId: item.id
}
});
window.open(routeData.href, "_blank");
})
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
......@@ -212,7 +216,7 @@ const handleClickAvatar = async item => {
} else {
ElMessage.warning("找不到当前人员的类型值!");
}
} catch (error) {}
} catch (error) { }
};
// 获取URL地址里面的billId
const billId = ref(route.query.billId);
......
......@@ -3,13 +3,15 @@
<div class="container-box">
<div class="hard-box">
<div class="hard-name text-title-0-show">美国政府机构</div>
<div class="hard-num text-title-2-show">{{organizationInfo.total}}</div>
<div class="hard-num text-title-2-show">{{ organizationInfo.total }}</div>
<div style="width: 0px; flex: auto;"></div>
<div class="hard-input">
<el-input v-model="organizationInfo.keyWord" @keyup.enter="onAllOrganization()" style="width:100%; height:100%;" :suffix-icon="Search" placeholder="搜索机构" />
<el-input v-model="organizationInfo.keyWord" @keyup.enter="onAllOrganization()"
style="width:100%; height:100%;" :suffix-icon="Search" placeholder="搜索机构" />
</div>
<div class="hard-time">
<el-select v-model="organizationInfo.isSort" @change="onAllOrganization()" placeholder="发布时间" style="width:160px; margin-left:8px;">
<el-select v-model="organizationInfo.isSort" @change="onAllOrganization()" placeholder="发布时间"
style="width:160px; margin-left:8px;">
<template #prefix>
<div class="icon1">
<img v-if="isSort" src="@/assets/icons/shengxu1.png" alt="" />
......@@ -28,29 +30,36 @@
<TimeTabPane @time-click="handleDateChange" />
</div>
<div class="organization-list" ref="refOrganization" v-loading="organizationInfo.loading">
<div class="organization-item" v-for="(item, index) in organizationInfo.list" :key="index" @click="handleToInstitution(item)">
<div class="organization-item" v-for="(item, index) in organizationInfo.list" :key="index"
@click="handleToInstitution(item)">
<div class="item-left">
<img :src="item.orgImage || DefaultIcon2" alt="" />
</div>
<div class="item-right one-line-ellipsis">{{ item.orgName }}</div>
<div class="item-total">{{ item.total }}项</div>
<el-icon color="var(--color-primary-100)"><ArrowRightBold /></el-icon>
<div class="item-dot" v-if="item.totalRecent">+{{item.totalRecent}}</div>
<el-icon color="var(--color-primary-100)">
<ArrowRightBold />
</el-icon>
<div class="item-dot" v-if="item.totalRecent">+{{ item.totalRecent }}</div>
</div>
</div>
<div class="pagination-box">
<el-pagination @current-change="onAllOrganization" :pageSize="organizationInfo.pageSize" :current-page="organizationInfo.pageNum" background layout="prev, pager, next" :total="organizationInfo.total" />
<el-pagination @current-change="onAllOrganization" :pageSize="organizationInfo.pageSize"
:current-page="organizationInfo.pageNum" background layout="prev, pager, next"
:total="organizationInfo.total" />
</div>
</div>
<div class="back-bnt" @click="router.back()">
<el-icon><Back /></el-icon>
<el-icon>
<Back />
</el-icon>
<div style="margin-left: 6px;">返回</div>
</div>
</div>
</template>
<script setup name="index">
import {onMounted, reactive, ref} from "vue"
import { onMounted, reactive, ref } from "vue"
import { Search } from '@element-plus/icons-vue'
import router from "@/router";
......@@ -76,38 +85,44 @@ const onAllOrganization = async (num) => {
organizationInfo.pageNum = num || 1
organizationInfo.loading = true
try {
let {keyWord, pageNum, pageSize, day} = organizationInfo
const res = await getDepartmentList({day, pageNum:pageNum-1, pageSize, keyWord: keyWord||undefined});
console.log("机构列表", res);
if (res.code === 200) {
organizationInfo.list = res.data.orgList || [];
organizationInfo.total = res.data.total || 0;
}
} catch (error) {
let { keyWord, pageNum, pageSize, day } = organizationInfo
const res = await getDepartmentList({ day, pageNum: pageNum - 1, pageSize, keyWord: keyWord || undefined });
console.log("机构列表", res);
if (res.code === 200) {
organizationInfo.list = res.data.orgList || [];
organizationInfo.total = res.data.total || 0;
}
} catch (error) {
console.error("获取机构列表数据失败", error);
organizationInfo.list = [];
organizationInfo.total = 0;
organizationInfo.list = [];
organizationInfo.total = 0;
}
organizationInfo.loading = false
}
const handleDateChange = (event) => {
if (event?.time === '近一周') organizationInfo.day = 7
if (event?.time === '近一月') organizationInfo.day = 30
if (event?.time === '近一年') organizationInfo.day = 365
if (event?.time === '近一周') organizationInfo.day = 7
if (event?.time === '近一月') organizationInfo.day = 30
if (event?.time === '近一年') organizationInfo.day = 365
onAllOrganization()
}
// 跳转行政机构主页
const handleToInstitution = item => {
window.sessionStorage.setItem("curTabName", item.orgName);
const curRoute = router.resolve({
path: "/institution",
query: {
id: item.orgId
}
});
window.open(curRoute.href, "_blank");
window.sessionStorage.setItem("curTabName", item.orgName);
// const curRoute = router.resolve({
// path: "/institution",
// query: {
// id: item.orgId
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/institution",
query: {
id: item.orgId
}
})
};
const refOrganization = ref()
......@@ -115,9 +130,9 @@ onMounted(() => {
// 根据元素的高度决定分页显示的机构数量
let height = 2;
if (refOrganization.value) {
height = Math.floor(refOrganization.value?.clientHeight/120)
height = Math.floor(refOrganization.value?.clientHeight / 120)
}
organizationInfo.pageSize = height*4
organizationInfo.pageSize = height * 4
onAllOrganization()
})
......@@ -157,7 +172,7 @@ onMounted(() => {
flex-direction: column;
.hard-box {
display: flex;
display: flex;
align-items: center;
width: 100%;
......@@ -166,6 +181,7 @@ onMounted(() => {
height: 62px;
line-height: 62px !important;
}
.hard-num {
height: 36px;
background-color: var(--color-primary-100);
......@@ -175,6 +191,7 @@ onMounted(() => {
padding: 0 16px;
margin-left: 16px;
}
.hard-input {
background-color: var(--el-fill-color-blank);
border-radius: var(--el-border-radius-base);
......@@ -184,6 +201,7 @@ onMounted(() => {
width: 160px;
height: 32px;
}
.hard-time {
height: 42px;
padding: 5px 0;
......@@ -192,6 +210,7 @@ onMounted(() => {
width: 11px;
height: 14px;
font-size: 0px;
img {
width: 100%;
height: 100%;
......@@ -202,7 +221,7 @@ onMounted(() => {
.date-box {
margin-top: 6px;
display: flex;
display: flex;
align-items: center;
width: 100%;
......@@ -211,11 +230,13 @@ onMounted(() => {
height: 16px;
font-size: 0px;
margin-right: 6px;
img {
width: 100%;
height: 100%;
}
}
.date-text {
width: 20px;
flex: auto;
......@@ -261,6 +282,7 @@ onMounted(() => {
width: 48px;
height: 48px;
font-size: 0px;
img {
width: 100%;
height: 100%;
......
......@@ -514,13 +514,19 @@ const handleGetDepartmentList = async () => {
// 跳转行政机构主页
const handleToInstitution = item => {
window.sessionStorage.setItem("curTabName", item.orgName);
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/institution",
// query: {
// id: item.orgId
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/institution",
query: {
id: item.orgId
}
});
window.open(curRoute.href, "_blank");
})
};
// 跳转全部机构页面
const onNavigateTo = () => {
......@@ -529,14 +535,16 @@ const onNavigateTo = () => {
// 查看更多风险信号
const handleToMoreRiskSignal = () => {
const route = router.resolve("/viewRiskSignal");
window.open(route.href, "_blank");
// const route = router.resolve("/viewRiskSignal");
// window.open(route.href, "_blank");
router.push("/viewRiskSignal")
};
// 查看更多新闻资讯
const handleToMoreNews = () => {
const route = router.resolve("/newsBrief");
window.open(route.href, "_blank");
// const route = router.resolve("/newsBrief");
// window.open(route.href, "_blank");
router.push("/newsBrief")
};
// 最新科技政令
......@@ -580,36 +588,55 @@ const handleClickToDetail = () => {
const id = box1DataList.value[activeIndex].id;
window.sessionStorage.setItem("curTabName", box1DataList.value[activeIndex].name);
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout",
// query: {
// id: id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout",
query: {
id: id
}
});
window.open(route.href, "_blank");
})
};
// 点击政令库政令
const handleClickDecree = decree => {
window.sessionStorage.setItem("curTabName", decree.title);
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout",
// query: {
// id: decree.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout",
query: {
id: decree.id
}
});
window.open(route.href, "_blank");
})
};
const handleKeyDecree = item => {
window.sessionStorage.setItem("curTabName", item.title);
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
// 风险信号
......@@ -752,14 +779,23 @@ const handleClickPerson = async item => {
return;
}
window.sessionStorage.setItem("curTabName", item.name);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
// personId: item.personId
// }
// });
// window.open(route.href, "_blank");
router.push(
{
path: "/characterPage",
query: {
type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId: item.personId
}
});
window.open(route.href, "_blank");
}
)
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
......@@ -1023,13 +1059,21 @@ const handleGetDecreeTypeList = async () => {
};
// 查看社交媒体详情
const handleToSocialDetail = item => {
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push(
{
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(route.href, "_blank");
}
)
};
const handleChangeCheckedDecreeType = () => {
handleGetDecreeOrderList();
......@@ -1191,14 +1235,21 @@ const handleSwithCurDecree = name => {
const searchDecreeText = ref("");
const handleSearch = () => {
window.sessionStorage.setItem("curTabName", `搜索-${searchDecreeText.value}`);
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/searchResults",
// query: {
// searchText: searchDecreeText.value,
// areaName: "政令"
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/searchResults",
query: {
searchText: searchDecreeText.value,
areaName: "政令"
}
});
window.open(curRoute.href, "_blank");
})
};
// 关键机构
......
......@@ -170,13 +170,19 @@ const onWordWrap = (word, num) => {
}
const handleClickDecree = decree => {
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout",
// query: {
// id: decree.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout",
query: {
id: decree.id
}
});
window.open(route.href, "_blank");
})
};
// 冲突关系
......
......@@ -22,13 +22,8 @@
</div>
</div>
<div class="left-box-bottom">
<div
class="left-box-bottom-item"
:class="{ leftBoxBottomItemActive: activeTitle === item.name }"
v-for="(item, index) in mainHeaderBtnList"
:key="index"
@click="handleClickMainHeaderBtn(item)"
>
<div class="left-box-bottom-item" :class="{ leftBoxBottomItemActive: activeTitle === item.name }"
v-for="(item, index) in mainHeaderBtnList" :key="index" @click="handleClickMainHeaderBtn(item)">
<div class="icon">
<img v-if="activeTitle === item.name" :src="item.activeIcon" alt="" />
<img v-else :src="item.icon" alt="" />
......@@ -220,12 +215,12 @@ const handleClickMainHeaderBtn = item => {
const summaryInfo = ref({});
const handleGetSummary = async () => {
try {
const res = await getDecreeSummary({id: route.query.id});
const res = await getDecreeSummary({ id: route.query.id });
console.log("全局信息", res);
if (res.code === 200 && res.data) {
summaryInfo.value = res.data;
}
} catch (error) {}
} catch (error) { }
};
// 获取报告原文
......@@ -248,13 +243,19 @@ const handleGetSummary = async () => {
// };
const handleShowReport = () => {
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/decree/decreeOriginal",
// query: {
// id: route.query.id
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/decree/decreeOriginal",
query: {
id: route.query.id
}
});
window.open(curRoute.href, "_blank");
})
};
const handleToInstitution = () => {
......@@ -297,6 +298,7 @@ onMounted(() => {
height: 100%;
overflow: hidden;
overflow-y: auto;
.report {
padding: 10px 150px;
position: absolute;
......@@ -306,6 +308,7 @@ onMounted(() => {
width: 100%;
height: 100%;
background: #f7f8f9;
.report-close {
position: absolute;
top: 20px;
......@@ -313,11 +316,13 @@ onMounted(() => {
width: 20px;
height: 20px;
cursor: pointer;
img {
width: 100%;
height: 100%;
}
}
.report-header {
width: 100%;
height: 50px;
......@@ -332,12 +337,15 @@ onMounted(() => {
padding-left: 30px;
border-bottom: 1px solid rgba(234, 236, 238, 1);
}
.report-main {
display: flex;
height: calc(100% - 100px);
justify-content: space-between;
.left {
width: 800px;
.noContent {
height: 100px;
line-height: 100px;
......@@ -349,8 +357,10 @@ onMounted(() => {
font-weight: 400;
}
}
.right {
width: 800px;
.noContent {
height: 100px;
line-height: 100px;
......@@ -364,17 +374,20 @@ onMounted(() => {
}
}
}
.layout-main {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.header-main {
width: 100%;
border-bottom: 1px solid rgba(234, 236, 238, 1);
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1);
background: rgba(255, 255, 255, 1);
}
.layout-main-header {
width: 1600px;
height: 137px;
......@@ -384,6 +397,7 @@ onMounted(() => {
justify-content: space-between;
position: sticky;
top: 0;
// z-index: 100;
.layout-main-header-container {
width: 1600px;
......@@ -392,28 +406,34 @@ onMounted(() => {
justify-content: space-between;
align-items: center;
}
.layout-main-header-left-box {
width: 20px;
flex: auto;
margin-top: 12px;
.left-box-top {
height: 64px;
display: flex;
align-items: center;
.icon {
width: 64px;
height: 40px;
overflow: hidden;
img {
width: 100%;
height: 100%;
}
}
.info {
margin-left: 10px;
margin-right: 40px;
width: 20px;
flex: auto;
.info-box1 {
width: 100%;
color: rgba(59, 65, 75, 1);
......@@ -425,6 +445,7 @@ onMounted(() => {
text-align: left;
margin-top: 5px;
}
.info-box2 {
margin-top: 5px;
height: 22px;
......@@ -442,31 +463,37 @@ onMounted(() => {
white-space: nowrap;
padding: 0 10px;
}
.info-box2-item:first-child {
padding-left: 0px;
}
}
}
}
.left-box-bottom {
display: flex;
height: 40px;
margin-top: 21px;
.left-box-bottom-item {
display: flex;
margin-right: 32px;
margin-top: 3px;
height: 35px;
cursor: pointer;
.icon {
margin-top: 4px;
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.name {
height: 24px;
color: rgba(59, 65, 75, 1);
......@@ -478,20 +505,24 @@ onMounted(() => {
text-align: left;
margin-left: 3px;
}
.nameActive {
color: var(--color-main-active);
font-weight: 700;
}
}
.leftBoxBottomItemActive {
border-bottom: 3px solid var(--color-main-active);
}
}
}
.layout-main-header-right-box {
.right-box-top {
white-space: nowrap;
padding-top: 11px;
.time {
height: 24px;
line-height: 24px;
......@@ -503,6 +534,7 @@ onMounted(() => {
letter-spacing: 0px;
text-align: right;
}
.name {
height: 24px;
line-height: 24px;
......@@ -515,12 +547,14 @@ onMounted(() => {
text-align: right;
}
}
.right-box-bottom {
margin-top: 24px;
text-align: right;
display: flex;
justify-content: flex-end;
gap: 8px;
.btn {
width: 120px;
height: 36px;
......@@ -533,14 +567,17 @@ onMounted(() => {
gap: 8px;
align-items: center;
cursor: pointer;
.icon {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text {
width: 64px;
height: 24px;
......@@ -554,6 +591,7 @@ onMounted(() => {
text-align: left;
}
}
.btn-active {
width: 120px;
height: 36px;
......@@ -564,14 +602,17 @@ onMounted(() => {
align-items: center;
gap: 8px;
cursor: pointer;
.icon-active {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text-active {
width: 64px;
height: 24px;
......@@ -588,12 +629,14 @@ onMounted(() => {
}
}
}
.layout-main-center {
height: 20px;
flex: auto;
background-color: #f7f8f9;
}
}
.layout-report-box {
position: absolute;
z-index: 9999;
......@@ -602,6 +645,7 @@ onMounted(() => {
width: 100%;
height: 926px;
background: rgba(248, 249, 250, 1);
.report-close {
position: absolute;
top: 24px;
......@@ -609,11 +653,13 @@ onMounted(() => {
width: 32px;
height: 32px;
cursor: pointer;
img {
width: 100%;
height: 100%;
}
}
.report-main {
width: 1600px;
height: 926px;
......@@ -621,13 +667,16 @@ onMounted(() => {
background: #fff;
box-sizing: border-box;
padding: 0 69px;
.report-header {
height: 77px;
border-bottom: 1px solid rgba(240, 242, 244, 1);
display: flex;
justify-content: space-between;
.report-header-left {
display: flex;
.text {
margin-top: 32px;
width: 70px;
......@@ -638,14 +687,17 @@ onMounted(() => {
font-weight: 400;
line-height: 14px;
}
.select-box {
margin-left: 8px;
margin-top: 23px;
}
}
.report-header-right {
display: flex;
margin-top: 24px;
.btn {
display: flex;
width: 88px;
......@@ -658,14 +710,17 @@ onMounted(() => {
display: flex;
justify-content: center;
align-items: center;
.icon {
width: 16px;
height: 16px;
img {
width: 100%;
height: 100%;
}
}
.text {
margin-left: 8px;
height: 32px;
......@@ -678,21 +733,26 @@ onMounted(() => {
}
}
}
.report-content {
display: flex;
margin-top: 35px;
.content-left {
width: 680px;
height: 786px;
img {
width: 100%;
height: 100%;
}
}
.content-right {
margin-left: 89px;
width: 680px;
height: 786px;
img {
width: 100%;
height: 100%;
......
......@@ -25,7 +25,8 @@
<div class="box1-footer" v-if="backgroundListNum > 10">
<div class="box1-footer-left">{{ `共 ${backgroundListNum} 项` }}</div>
<div class="box1-footer-right">
<el-pagination :page-size="10" @current-change="handleCurrentChange" :current-page="currentPage" background layout="prev, pager, next" :total="backgroundListNum" />
<el-pagination :page-size="10" @current-change="handleCurrentChange" :current-page="currentPage"
background layout="prev, pager, next" :total="backgroundListNum" />
</div>
</div>
</div>
......@@ -39,8 +40,12 @@
<el-collapse v-model="dependActive">
<el-collapse-item v-for="(item, index) in dependList" :key="item.billId" :name="item.billId">
<template #icon>
<el-icon v-if="dependActive.includes(item.billId)"><ArrowDownBold /></el-icon>
<el-icon v-else><ArrowUpBold /></el-icon>
<el-icon v-if="dependActive.includes(item.billId)">
<ArrowDownBold />
</el-icon>
<el-icon v-else>
<ArrowUpBold />
</el-icon>
</template>
<template #title>
<div class="custom-collapse-title">
......@@ -73,7 +78,9 @@
<div class="time-line-icon">
<img style="width: 100%; height: 100%;" :src="item.orgImage || DefaultIcon1" alt="">
</div>
<div class="time-line-name text-click-hover" @click="handleToInstitution(item)">{{ item.proposeOrgName }}</div>
<div class="time-line-name text-click-hover" @click="handleToInstitution(item)">{{
item.proposeOrgName
}}</div>
</div>
<div class="timeline-content" @click="handleClickDecree(item)">{{ item.describe }}</div>
</div>
......@@ -137,9 +144,9 @@ const handleGetBackground = async () => {
backgroundList.value = [];
}
} catch (error) {
backgroundListNum.value = 0;
backgroundList.value = [];
console.error("获取提出背景数据失败", error);
backgroundListNum.value = 0;
backgroundList.value = [];
console.error("获取提出背景数据失败", error);
}
};
......@@ -153,7 +160,7 @@ const prevList = ref([
]);
const handleGetPrev = async () => {
try {
const res = await getDecreePrev({id: decreeId.value});
const res = await getDecreePrev({ id: decreeId.value });
console.log("前序政令", res);
if (res.code === 200 && res.data) {
prevList.value = res.data;
......@@ -167,23 +174,35 @@ const handleGetPrev = async () => {
};
// 跳转行政机构主页
const handleToInstitution = item => {
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/institution",
// query: {
// id: item.orgId
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/institution",
query: {
id: item.orgId
}
});
window.open(curRoute.href, "_blank");
})
};
// 跳转科技政令详情页
const handleClickDecree = item => {
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
// 法律依据
......@@ -191,7 +210,7 @@ const dependList = ref([]);
const dependActive = ref([]);
const handleGetLaws = async () => {
try {
const res = await getDecreeDepend({id: decreeId.value});
const res = await getDecreeDepend({ id: decreeId.value });
console.log("法律依据", res);
if (res.code === 200 && res.data) {
dependList.value = res.data;
......@@ -208,15 +227,21 @@ const handleGetLaws = async () => {
const handleClickBull = decree => {
window.sessionStorage.setItem("billId", decree.billId);
window.sessionStorage.setItem("curTabName", decree.title);
const route = router.resolve({
// const route = router.resolve({
// path: "/billLayout",
// query: {
// billId: decree.billId
// }
// });
// console.log(route);
// window.open(route.href, "_blank");
router.push({
path: "/billLayout",
query: {
billId: decree.billId
}
});
console.log(route);
window.open(route.href, "_blank");
})
};
onMounted(() => {
......@@ -345,20 +370,26 @@ onMounted(() => {
.box2-main {
padding: 16px 20px;
.custom-collapse {
padding-left: 32px;
:deep(.el-collapse),
:deep(.el-collapse-item__wrap) {
border: none !important;
}
:deep(.el-collapse-item__header) {
border-bottom: 1px solid rgba(234, 236, 238, 1);
}
:deep(.el-collapse-item__content) {
padding-bottom: 16px;
}
.custom-collapse-title {
position: relative;
.custom-collapse-index {
font-family: Microsoft YaHei;
font-size: var(--font-size-base);
......@@ -373,12 +404,14 @@ onMounted(() => {
background: #e7f3ff;
color: #0a57a6;
}
.custom-collapse-name {
font-weight: 600;
font-size: 18px;
color: var(--el-collapse-header-text-color);
}
}
.custom-collapse-content {
margin-top: 8px;
font-family: Microsoft YaHei;
......@@ -392,6 +425,7 @@ onMounted(() => {
.right {
width: 520px;
.box3 {
.box3-bottom-main {
......
......@@ -318,22 +318,32 @@ const handleGetOrgnization = async () => {
};
// 跳转行政机构主页
const handleToInstitution = item => {
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/institution",
// query: { id: item.id }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/institution",
query: { id: item.id }
});
window.open(curRoute.href, "_blank");
})
};
// 跳转人员详情
const handleClickUser = item => {
window.sessionStorage.setItem('curTabName', item.name)
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(routeData.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(routeData.href, "_blank");
})
};
onMounted(() => {
......
......@@ -13,7 +13,8 @@
</template>
<div class="analysis-box">
<div class="analysis-top">
<el-select v-model="areaType" :empty-values="[null, undefined]" @change="onMainContentData()" style="width: 200px;">
<el-select v-model="areaType" :empty-values="[null, undefined]" @change="onMainContentData()"
style="width: 200px;">
<el-option label="全部领域" value="" />
<el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
......@@ -21,7 +22,8 @@
<!-- <el-switch v-model="isHighlight" />
<div style="margin-left: 6px;">高亮实体</div> -->
<div class="select-input">
<el-input v-model="commandWord" @keyup.enter="onMainContentData()" style="width: 100%; height: 100%;" :suffix-icon="Search" placeholder="指令搜索" />
<el-input v-model="commandWord" @keyup.enter="onMainContentData()" style="width: 100%; height: 100%;"
:suffix-icon="Search" placeholder="指令搜索" />
</div>
</div>
<div class="analysis-content">
......@@ -37,19 +39,20 @@
<!-- 渲染一级列表 -->
<div class="numbered-list">
<div v-for="(item, itemIndex) in section.slaver" :key="itemIndex" class="list-item">
<div class="list-item-dot">{{itemIndex+1}}.</div>
<div class="list-item-dot">{{ itemIndex + 1 }}.</div>
<div class="list-item-word" v-html="item.content"></div>
<!-- 渲染二级列表 -->
<div v-if="item.slaver" class="sub-list">
<div v-for="(subItem, subIndex) in item.slaver" :key="subIndex" class="sub-item">
<div class="sub-item-dot">({{subIndex+1}})</div>
<div class="sub-item-dot">({{ subIndex + 1 }})</div>
<div class="sub-item-word" v-html="subItem.content"></div>
<!-- 渲染三级列表 -->
<div v-if="subItem.slaver" class="sub-sub-list">
<div v-for="(subSubItem, subSubIndex) in subItem.slaver" :key="subSubIndex" class="sub-sub-item">
<div class="sub-sub-item-dot">{{ALPHABET[subSubIndex%26]}}.</div>
<div v-for="(subSubItem, subSubIndex) in subItem.slaver" :key="subSubIndex"
class="sub-sub-item">
<div class="sub-sub-item-dot">{{ ALPHABET[subSubIndex % 26] }}.</div>
<div class="sub-sub-item-word" v-html="subItem.content"></div>
</div>
</div>
......@@ -69,7 +72,8 @@
<div class="box3-top">
<div class="organization-list">
<div class="organization-item" v-for="item in organizationInfo.list" :key="item.id">
<ActionButton @click="handleOrganization(item)" :name="item.obb" :type="item.id==organizationInfo.node.id?'active':'normal'" />
<ActionButton @click="handleOrganization(item)" :name="item.obb"
:type="item.id == organizationInfo.node.id ? 'active' : 'normal'" />
</div>
</div>
<div class="box3-top-top" @click="handleToInstitution()">
......@@ -94,7 +98,8 @@
<img :src="item.avatar || DefaultIcon1" alt="" />
</div>
<div class="box3-top-bottom-item-right">
<div class="name one-line-ellipsis text-click-hover" @click="handleClickUser(item)">{{ item.name }}</div>
<div class="name one-line-ellipsis text-click-hover" @click="handleClickUser(item)">{{ item.name }}
</div>
<div class="position">{{ item.job }}</div>
</div>
</div>
......@@ -102,7 +107,9 @@
</div>
<div class="organization-button" @click="handleClickToolBox()">
<div class="button-text">查看政令执行情况</div>
<el-icon size="16"><Right /></el-icon>
<el-icon size="16">
<Right />
</el-icon>
</div>
</div>
</AnalysisBox>
......@@ -250,10 +257,10 @@ const onMainContentData = async () => {
console.log("主要指令", res);
if (res && res.code === 200) {
contentList.value = res.data || [];
contentList.value.forEach((item, index) => { item.content = `(${simpleNumToChinese(index+1)}) ${item.content}` })
contentList.value.forEach((item, index) => { item.content = `(${simpleNumToChinese(index + 1)}) ${item.content}` })
if (keyword) {
let word = keyword.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
contentList.value.forEach(item => {onHighlight(word, item)})
contentList.value.forEach(item => { onHighlight(word, item) })
}
} else {
contentList.value = []
......@@ -261,7 +268,7 @@ const onMainContentData = async () => {
} catch (error) {
contentList.value = []
console.error("获取主要指令数据失败:", error);
}
}
};
// 搜索高亮效果
const onHighlight = (word, row) => {
......@@ -274,27 +281,27 @@ const onHighlight = (word, row) => {
}
// 数字转中文(支持 0-99 整数)
const simpleNumToChinese = (num) => {
// 1. 基础校验:只处理 0-99 的整数
if (!Number.isInteger(num) || num < 0 || num > 99) return '100';
// 2. 定义基础字符
const singleChars = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const tenChar = '十';
// 3. 核心转换逻辑
if (num < 10) {
// 0-9 直接返回对应字符
return singleChars[num];
} else if (num === 10) {
// 10 特殊处理
return tenChar;
} else if (num < 20) {
// 11-19:十 + 个位(如十一、十九)
return tenChar + singleChars[num - 10];
} else {
// 20-99:十位 + 十 + 个位(个位为0则省略,如二十、二十九)
const ten = Math.floor(num / 10); // 十位数字
const unit = num % 10; // 个位数字
return singleChars[ten] + tenChar + (unit === 0 ? '' : singleChars[unit]);
}
// 1. 基础校验:只处理 0-99 的整数
if (!Number.isInteger(num) || num < 0 || num > 99) return '100';
// 2. 定义基础字符
const singleChars = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const tenChar = '十';
// 3. 核心转换逻辑
if (num < 10) {
// 0-9 直接返回对应字符
return singleChars[num];
} else if (num === 10) {
// 10 特殊处理
return tenChar;
} else if (num < 20) {
// 11-19:十 + 个位(如十一、十九)
return tenChar + singleChars[num - 10];
} else {
// 20-99:十位 + 十 + 个位(个位为0则省略,如二十、二十九)
const ten = Math.floor(num / 10); // 十位数字
const unit = num % 10; // 个位数字
return singleChars[ten] + tenChar + (unit === 0 ? '' : singleChars[unit]);
}
}
// 思维导图
......@@ -313,26 +320,26 @@ const onDecreeMindMap = async () => {
}
isTreeDialog.value = true;
try {
let res = await getDecreeMindMap({id: route.query.id});
let res = await getDecreeMindMap({ id: route.query.id });
console.log("思维导图", res);
if (res.code === 200) {
let nodes = []
let edges = []
let edges = []
let obj = {}
let list = onUniqueArray(Object.values(res.data||{}).flat(1), 'sectionId')
let list = onUniqueArray(Object.values(res.data || {}).flat(1), 'sectionId')
list.forEach((item, index) => {
nodes.push({ id:`node-${item.orderNum}-${item.sectionId}`, label:item.textZh, maxWidth:600, labelCfg, layer:1 })
nodes.push({ id: `node-${item.orderNum}-${item.sectionId}`, label: item.textZh, maxWidth: 600, labelCfg, layer: 1 })
if (item.execAgent?.length) {
item.execAgent.forEach((label, num) => {
if (!obj[label]) {
obj[label] = `${index}-${num}`
nodes.push({ id:`node-${obj[label]}`, label, layer:0 })
nodes.push({ id: `node-${obj[label]}`, label, layer: 0 })
}
edges.push({ id:`edge-${index}-${num}`, source:`node-${obj[label]}`, target:`node-${item.orderNum}-${item.sectionId}` })
edges.push({ id: `edge-${index}-${num}`, source: `node-${obj[label]}`, target: `node-${item.orderNum}-${item.sectionId}` })
})
} else {
edges.push({ id:`edge-${index}`, source:`root-virtual`, target:`node-${item.orderNum}-${item.sectionId}` })
edges.push({ id: `edge-${index}`, source: `root-virtual`, target: `node-${item.orderNum}-${item.sectionId}` })
}
})
......@@ -345,21 +352,21 @@ const onDecreeMindMap = async () => {
// 对象数组去重
const onUniqueArray = (list, key = 'id') => {
const obj = {};
return list.reduce((total, item) => {
if (!obj[String(item[key])]) {
const obj = {};
return list.reduce((total, item) => {
if (!obj[String(item[key])]) {
obj[String(item[key])] = true;
total.push(item);
}
return total;
}, []);
}
return total;
}, []);
}
// 相关实体
const entityList = ref([]);
const onRelatedEntityData = async () => {
try {
const res = await getDecreeRelatedEntity({id: route.query.id});
const res = await getDecreeRelatedEntity({ id: route.query.id });
console.log("相关实体", res);
if (res && res.code === 200) {
entityList.value = res.data;
......@@ -369,24 +376,24 @@ const onRelatedEntityData = async () => {
} catch (error) {
entityList.value = []
console.error("获取相关实体数据失败:", error);
}
}
};
// 执行机构
const organizationInfo = reactive({
list : [],
node: {id: "", obb: "", logo: "", name: "", ename: "", leaders: []},
list: [],
node: { id: "", obb: "", logo: "", name: "", ename: "", leaders: [] },
})
const handleGetOrgnization = async () => {
try {
const res = await getDecreeOrganization({id: route.query.id});
const res = await getDecreeOrganization({ id: route.query.id });
console.log("执行机构", res);
if (res.code === 200 && res.data?.length) {
organizationInfo.list = res.data;
organizationInfo.node = res.data[0];
}
} catch (error) {
organizationInfo.node = {id: "", obb: "", logo: "", name: "", ename: "", leaders: []};
organizationInfo.node = { id: "", obb: "", logo: "", name: "", ename: "", leaders: [] };
console.error("获取执行机构数据失败", error);
}
};
......@@ -396,24 +403,36 @@ const handleOrganization = (node) => {
};
// 跳转机构主页
const handleToInstitution = () => {
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/institution",
// query: {
// id: organizationInfo.node.id
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/institution",
query: {
id: organizationInfo.node.id
}
});
window.open(curRoute.href, "_blank");
})
};
// 跳转人员详情
const handleClickUser = item => {
window.sessionStorage.setItem('curTabName', item.name)
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(routeData.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(routeData.href, "_blank");
})
};
onMounted(() => {
......@@ -450,15 +469,18 @@ onMounted(() => {
align-items: center;
padding: 0 16px;
cursor: pointer;
.mind-icon {
width: 16px;
height: 13px;
font-size: 0px;
img {
width: 100%;
height: 100%;
}
}
.mind-text {
color: var(--color-primary-100);
font-family: Source Han Sans CN;
......@@ -474,11 +496,12 @@ onMounted(() => {
.analysis-top {
font-family: var(--font-family-base);
padding: 0 20px;
padding: 0 20px;
color: var(--text-primary-65-color);
height: 60px;
display: flex;
align-items: center;
.select-input {
background-color: var(--el-fill-color-blank);
border-radius: var(--el-border-radius-base);
......@@ -497,16 +520,19 @@ onMounted(() => {
width: 4px;
background: transparent;
border-radius: 2px;
&>div {
background: #c5c7c9;
opacity: 1;
}
&>div:hover {
background: #505357;
}
}
.section {
padding: 0 20px;
padding: 0 20px;
.section-header {
display: flex;
......@@ -540,42 +566,52 @@ onMounted(() => {
font-size: 16px;
line-height: 1.7;
color: #374151;
.list-item {
position: relative;
.list-item-dot {
position: absolute;
left: 50px;
top: 10px;
}
.list-item-word {
border-bottom: 1px solid rgba(234, 236, 238, 1);
padding: 10px 16px 10px 68px;
}
}
}
.sub-list {
.sub-item {
position: relative;
.sub-item-dot {
position: absolute;
left: 66px;
top: 10px;
}
.sub-item-word {
border-bottom: 1px solid rgba(234, 236, 238, 1);
padding: 10px 16px 10px 90px;
}
}
}
.sub-sub-list {
border-bottom: 1px solid rgba(234, 236, 238, 1);
.sub-sub-item {
position: relative;
.sub-sub-item-dot {
position: absolute;
left: 82px;
top: 6px;
}
.sub-sub-item-word {
padding: 6px 16px 6px 100px;
}
......@@ -615,6 +651,7 @@ onMounted(() => {
justify-content: center;
border-radius: 6px;
cursor: pointer;
.button-text {
margin-right: 8px;
font-family: Microsoft YaHei;
......@@ -638,6 +675,7 @@ onMounted(() => {
height: 64px;
margin-left: 17px;
font-size: 0px;
img {
width: 100%;
height: 100%;
......@@ -847,6 +885,7 @@ onMounted(() => {
.box4 {
.left-bottom-main {
padding: 20px;
.main-box {
height: 48px;
border-radius: 50px;
......@@ -863,6 +902,7 @@ onMounted(() => {
height: 24px;
font-size: 0px;
}
.name {
font-size: 16px;
font-weight: 700;
......@@ -873,6 +913,7 @@ onMounted(() => {
width: 20px;
margin: 0 10px;
}
.type {
font-size: 16px;
font-weight: 400;
......@@ -889,20 +930,24 @@ onMounted(() => {
:deep(.viewpoint-dialog) {
padding: 0;
border-radius: 4px;
.el-dialog__body {
padding: 0;
}
.el-dialog__header {
padding: 0;
margin: 0;
position: relative;
height: 48px;
}
.el-dialog__headerbtn {
top: 50%;
transform: translateY(-50%);
right: 12px;
}
.viewpoint-header {
height: 48px;
display: flex;
......@@ -910,12 +955,14 @@ onMounted(() => {
padding: 0 24px;
border-bottom: 1px solid rgb(234, 236, 238);
}
.viewpoint-title {
font-size: 16px;
font-weight: 700;
font-family: "Microsoft YaHei";
line-height: 24px;
}
.viewpoint-body {
padding: 16px;
height: 77vh;
......
......@@ -822,14 +822,20 @@ const handleToPosi = id => {
// 跳转到单项制裁页面
const handleToRiskSignalDetail = item => {
window.sessionStorage.setItem("curTabName", item.title);
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: item.sanId
// }
// });
// // 打开新页面
// window.open(routeData.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: item.sanId
}
});
// 打开新页面
window.open(routeData.href, "_blank");
})
};
const sanctionList = ref([]);
......@@ -885,14 +891,21 @@ const checkedTime = ref(["全部时间"]);
// 跳转到单条制裁页面,单独打开一个新页面
const handleTitleClick = item => {
window.sessionStorage.setItem("curTabName", `${item.year}-${item.dateStr}${item.title}》`);
const route = router.resolve({
// const route = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: item.id,
// sanTypeId: item.sanTypeId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: item.id,
sanTypeId: item.sanTypeId
}
});
window.open(route.href, "_blank");
})
};
const handleCompClick = item => {
......@@ -1034,13 +1047,19 @@ onMounted(async () => {
});
// 查看社交媒体详情
const handleToSocialDetail = item => {
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(route.href, "_blank");
})
};
// 获取趋势图数据
const fetchTrendData = async () => {
......@@ -1156,37 +1175,55 @@ const handleToEntityList = item => {
"curTabName",
entitiesDataInfoList.value[currentCarouselIndex.value].postDate + " 《实体清单新增条目》"
);
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: id
// }
// });
// // 打开一个新页面
// window.open(routeData.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: id
}
});
// 打开一个新页面
window.open(routeData.href, "_blank");
})
};
// 跳转到V2.0实体清单无ID
const handleToEntityListNoId = item => {
console.log("这是什么数据 =>", item);
if (item.nameZh == "实体清单") {
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/exportControl/entityList",
// query: {
// sanTypeId: item.id
// }
// });
// // 打开一个新页面
// window.open(routeData.href, "_blank");
router.push({
path: "/exportControl/entityList",
query: {
sanTypeId: item.id
}
});
// 打开一个新页面
window.open(routeData.href, "_blank");
})
} else if (item.nameZh == "商业管制清单") {
const routeData = router.resolve({
// const routeData = router.resolve({
// path: "/exportControl/commercialControlList",
// query: {
// sanTypeId: item.id
// }
// });
// // 打开一个新页面
// window.open(routeData.href, "_blank");
router.push({
path: "/exportControl/commercialControlList",
query: {
sanTypeId: item.id
}
});
// 打开一个新页面
window.open(routeData.href, "_blank");
})
} else {
return;
}
......@@ -1660,14 +1697,21 @@ const fetchNewsInfo = async () => {
const handlePerClick = item => {
// console.log("点击了社交媒体消息:", item);
window.sessionStorage.setItem("curTabName", item.name);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: item.type || [1, 2, 3][Math.floor(Math.random() * 3)],
// personId: item.personId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
type: item.type || [1, 2, 3][Math.floor(Math.random() * 3)],
personId: item.personId
}
});
window.open(route.href, "_blank");
})
};
// 处理点击社交媒体消息的方法
// const handleInfoClick = item => {
......@@ -1749,26 +1793,35 @@ const chart1Data = ref({
const handleSanc = item => {
console.log(item);
window.sessionStorage.setItem("curTabName", `${item.postDate}${item.title}》`);
const route = router.resolve({
// const route = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: item.id,
// sanTypeId: activeResourceTabItem.value.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: item.id,
sanTypeId: activeResourceTabItem.value.id
}
});
window.open(route.href, "_blank");
})
};
// 查看更多风险信号
const handleToMoreRiskSignal = () => {
const route = router.resolve("/viewRiskSignal");
window.open(route.href, "_blank");
// const route = router.resolve("/viewRiskSignal");
// window.open(route.href, "_blank");
router.push("/viewRiskSignal")
};
// 查看更多新闻资讯
const handleToMoreNews = () => {
const route = router.resolve("/newsBrief");
window.open(route.href, "_blank");
// const route = router.resolve("/newsBrief");
// window.open(route.href, "_blank");
router.push("/newsBrief")
};
const handleNewsInfoClick = item => {
......@@ -1795,14 +1848,21 @@ const handleSwithCurPolicy = name => {
const handleSearch = () => {
window.sessionStorage.setItem("curTabName", `搜索-${searchExportControlText.value}`);
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/searchResults",
// query: {
// searchText: searchExportControlText.value,
// areaName: "实体清单"
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/searchResults",
query: {
searchText: searchExportControlText.value,
areaName: "实体清单"
}
});
window.open(curRoute.href, "_blank");
})
};
onMounted(async () => {
......
......@@ -25,12 +25,8 @@
<div class="left-center">
<AnalysisBox title="出口管制分类编码(ECCN)" :showAllBtn="false">
<div class="button-list">
<div
:class="['button', { click: item.isClick }]"
@click="changeECCN(item)"
v-for="(item, i) in ECCNList"
:key="i"
>
<div :class="['button', { click: item.isClick }]" @click="changeECCN(item)" v-for="(item, i) in ECCNList"
:key="i">
<span>{{ item.ranking }}{{ item.name }}</span>
</div>
</div>
......@@ -48,17 +44,9 @@
<AnalysisBox title="商业管制清单更新历史" :showAllBtn="false">
<template #header-btn>
<div class="filters">
<el-select
v-model="selectedDomain"
placeholder="Select"
style="width: 150px; height: 32px; margin-right: 16px"
>
<el-option
v-for="item in domainOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="selectedDomain" placeholder="Select"
style="width: 150px; height: 32px; margin-right: 16px">
<el-option v-for="item in domainOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<!-- <el-checkbox v-model="onlyChina">只看涉华动态</el-checkbox> -->
</div>
......@@ -71,21 +59,15 @@
</div>
<div class="img-zone">
<img :src="item.icon || title" alt />
<div
v-if="i < sanctionList.length - 1"
:class="['img-line', { 'img-line-last': i === sanctionList.length - 1 }]"
></div>
<div v-if="i < sanctionList.length - 1"
:class="['img-line', { 'img-line-last': i === sanctionList.length - 1 }]">
</div>
</div>
<div class="main">
<div class="main-title">{{ item.name }}</div>
<!-- <div class="main-title" @click="handleClick(item)">{{ item.name }}</div> -->
<el-tooltip
effect="dark"
:content="item.summary"
popper-class="common-prompt-popper"
placement="top"
:show-after="500"
>
<el-tooltip effect="dark" :content="item.summary" popper-class="common-prompt-popper" placement="top"
:show-after="500">
<div class="main-desc">{{ item.summary }}</div>
</el-tooltip>
<div class="tag-box">
......@@ -100,14 +82,8 @@
</div>
<div class="left-footer">
<div class="total-count">共 {{ totalAll }} 项</div>
<el-pagination
v-model:current-page="currentPageAll"
:page-size="pageSizeAll"
:total="totalAll"
layout="prev, pager, next"
background
@current-change="handlePageChangeAll"
/>
<el-pagination v-model:current-page="currentPageAll" :page-size="pageSizeAll" :total="totalAll"
layout="prev, pager, next" background @current-change="handlePageChangeAll" />
</div>
</AnalysisBox>
</div>
......@@ -135,31 +111,17 @@
<span>关键人物</span>
</div>
<div class="key-person-list">
<div
class="person-item"
v-for="(item, index) in publishInfo.personList"
:key="index"
@click="handlePerClick(item)"
>
<div class="person-item" v-for="(item, index) in publishInfo.personList" :key="index"
@click="handlePerClick(item)">
<img :src="item.imageUrl" alt />
<div class="person-info">
<el-tooltip
effect="dark"
:content="item.name"
popper-class="common-prompt-popper"
placement="top"
:show-after="500"
>
<el-tooltip effect="dark" :content="item.name" popper-class="common-prompt-popper" placement="top"
:show-after="500">
<div class="name">{{ item.name }}</div>
</el-tooltip>
<el-tooltip
effect="dark"
:content="item.position"
popper-class="common-prompt-popper"
placement="top"
:show-after="500"
>
<el-tooltip effect="dark" :content="item.position" popper-class="common-prompt-popper" placement="top"
:show-after="500">
<div class="title1">{{ item.position }}</div>
</el-tooltip>
</div>
......@@ -220,38 +182,58 @@ const route = useRoute();
// 处理点击发布机构的方法
const handleClickOrg = item => {
// console.log("点击了发布机构:", item);
const route = router.resolve({
// const route = router.resolve({
// path: "/institution",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/institution",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
// 处理点击关键人物的方法
const handlePerClick = item => {
console.log("点击了关键人物:", item);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: item.type,
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
type: item.type,
personId: item.id
}
});
window.open(route.href, "_blank");
})
};
// 处理点击实体名称的方法
const handleClick = item => {
// console.log("点击了实体名称:", item);
const route = router.resolve({
// const route = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
const selectedDomain = ref(0);
......
......@@ -212,39 +212,58 @@ const route = useRoute();
// 处理点击发布机构的方法
const handleClickOrg = item => {
// console.log("点击了发布机构:", item);
const route = router.resolve({
// const route = router.resolve({
// path: "/institution",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/institution",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
// 处理点击关键人物的方法
const handlePerClick = item => {
console.log("点击了关键人物:", item);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: item.type,
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
type: item.type,
personId: item.id
}
});
window.open(route.href, "_blank");
})
};
// 处理点击实体名称的方法
const handleClick = item => {
// console.log("点击了实体名称:", item);
window.sessionStorage.setItem("curTabName", `${item.year}-${item.date}《${item.name}》`);
const route = router.resolve({
// const route = router.resolve({
// path: "/exportControl/singleSanction",
// query: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/exportControl/singleSanction",
query: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
const selectedDomain = ref(0);
......
......@@ -49,13 +49,10 @@
<img :src="flag" alt="" class="flag" />
<div class="country-name">{{ item.name }}</div>
<div class="progress-bar-container">
<div
class="progress-bar"
:style="{
width: item.width,
background: item.gradient
}"
></div>
<div class="progress-bar" :style="{
width: item.width,
background: item.gradient
}"></div>
</div>
<div class="count" :class="{ highlight: index === 0 }">{{ item.count }}</div>
</div>
......@@ -98,25 +95,13 @@
</div>
<div class="filter-right">
<el-checkbox v-model="onlyChina" label="只看中国实体" />
<el-select
v-model="filterField"
placeholder="全部领域"
style="width: 150px; margin: 0 12px 0 16px"
>
<el-select v-model="filterField" placeholder="全部领域" style="width: 150px; margin: 0 12px 0 16px">
<el-option label="全部领域" value="" />
<el-option
v-for="item in domainOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-option v-for="item in domainOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-input
v-model="searchKeyword"
placeholder="搜索实体"
<el-input v-model="searchKeyword" placeholder="搜索实体"
style="width: 150px; border: 1px solid rgba(170, 173, 177, 0.4); border-radius: 5px"
:suffix-icon="Search"
/>
:suffix-icon="Search" />
</div>
</div>
<div class="stats-row">
......@@ -131,21 +116,14 @@
<div class="stats-info">
<div class="stat-item">
<span class="dot red"></span>
<span class="text"
>新增 <span class="num red">{{ addCount }}</span> 家 (50%规则涉及<span class="num red">{{
addRuleCount
}}</span
>家)</span
>
<span class="text">新增 <span class="num red">{{ addCount }}</span> 家 (50%规则涉及<span class="num red">{{
addRuleCount
}}</span>家)</span>
</div>
<div class="stat-item">
<span class="dot green"></span>
<span class="text"
>移除 <span class="num green">{{ removeCount }}</span> 家 (50%规则涉及<span
class="num green"
>{{ removeRuleCount }}</span
>家)</span
>
<span class="text">移除 <span class="num green">{{ removeCount }}</span> 家 (50%规则涉及<span
class="num green">{{ removeRuleCount }}</span>家)</span>
</div>
</div>
</div>
......@@ -167,14 +145,8 @@
</el-table-column>
<el-table-column label="涉及领域" width="180" align="center">
<template #default="scope">
<span
v-for="(item, index) in scope.row.fields"
:key="index"
class="tag"
:style="getTagStyle(item)"
style="margin: 0 2px"
>{{ item }}</span
>
<span v-for="(item, index) in scope.row.fields" :key="index" class="tag"
:style="getTagStyle(item)" style="margin: 0 2px">{{ item }}</span>
</template>
</el-table-column>
<el-table-column prop="location" label="上市地点" width="90" align="center" />
......@@ -182,11 +154,8 @@
<el-table-column prop="revenue" label="营收(亿元)" width="110" align="center" />
<el-table-column label="50%规则子企业" width="180" align="center">
<template #default="scope">
<span
v-if="scope.row.subsidiaryCount"
class="subsidiary-link"
@click="handleSubsidiaryClick(scope.row)"
>
<span v-if="scope.row.subsidiaryCount" class="subsidiary-link"
@click="handleSubsidiaryClick(scope.row)">
{{ scope.row.subsidiaryText }}
<span class="blue-text">{{ scope.row.subsidiaryCount }}家 ></span>
</span>
......@@ -204,12 +173,8 @@
</div>
</div>
<!-- 50%规则子企业弹框 -->
<RuleSubsidiaryDialog
v-model="subsidiaryDialogVisible"
:company-name="currentSubsidiaryCompanyName"
:total-count="currentSubsidiaryCount"
:data-list="currentSubsidiaryList"
/>
<RuleSubsidiaryDialog v-model="subsidiaryDialogVisible" :company-name="currentSubsidiaryCompanyName"
:total-count="currentSubsidiaryCount" :data-list="currentSubsidiaryList" />
</div>
</template>
......@@ -251,13 +216,19 @@ const handleCompClick = item => {
const handleClickDp = () => {
// console.log("点击了发布机构:", props.data);
window.sessionStorage.setItem("curTabName", props.data.postOrgName);
const route = router.resolve({
// const route = router.resolve({
// path: "/institution",
// query: {
// id: props.data.postOrgId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/institution",
query: {
id: props.data.postOrgId
}
});
window.open(route.href, "_blank");
})
};
// 50%规则子企业弹框逻辑
......@@ -316,8 +287,8 @@ const getSanctionOverviewList = async () => {
subsidiaryText:
org.ruleOrgList && org.ruleOrgList.length > 0
? (org.ruleOrgList[0].orgName.length > 10
? org.ruleOrgList[0].orgName.slice(0, 10) + "..."
: org.ruleOrgList[0].orgName) + "...等"
? org.ruleOrgList[0].orgName.slice(0, 10) + "..."
: org.ruleOrgList[0].orgName) + "...等"
: ""
}))
}));
......@@ -419,14 +390,22 @@ const props = defineProps({
// 跳转到人物页
const handleClick = () => {
window.sessionStorage.setItem("curTabName", props.data.postPersonName);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// // type: props.data.type,
// personId: props.data.postPersonId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
// type: props.data.type,
personId: props.data.postPersonId
}
});
window.open(route.href, "_blank");
})
};
// 计算属性处理数据
......
......@@ -916,13 +916,19 @@ const handleCurrentChange = page => {
const handleToReportDetail = (item) => {
if (!item?.id) return;
window.sessionStorage.setItem("curTabName", item.name);
const route = router.resolve({
// const route = router.resolve({
// name: "ReportDetail",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportDetail",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
//获取行业领域字典
// getHylyList
......
......@@ -14,11 +14,7 @@
<div class="tag">{{ value.industryName }}</div>
</div> -->
<AreaTag
v-for="(value, index) in thinkInfo.tags"
:key="index"
:tagName="value.industryName"
></AreaTag>
<AreaTag v-for="(value, index) in thinkInfo.tags" :key="index" :tagName="value.industryName"></AreaTag>
</div>
</div>
</div>
......@@ -129,15 +125,20 @@ const handleGetThinkTankReport = async () => {
};
const toReport = () => {
console.log(reportUrl.value, "reportUrl.valuereportUrl.value");
const route = router.resolve({
// const route = router.resolve({
// name: "ReportOriginal",
// params: {
// id: router.currentRoute._value.params.id
// }
// });
// console.log("route.href", route.href);
// window.open(route.href, "_blank");
router.push({
name: "ReportOriginal",
params: {
id: router.currentRoute._value.params.id
}
});
console.log("route.href", route.href);
window.open(route.href, "_blank");
})
};
const tabActiveName = ref("报告分析");
......@@ -213,7 +214,7 @@ const handleDownloadDocument = async () => {
try {
const { ElMessage } = await import("element-plus");
ElMessage.error("PDF 下载失败,请稍后重试");
} catch (_) {}
} catch (_) { }
}
};
</script>
......
......@@ -201,13 +201,19 @@ const scrollToWrapTop = () => {
const toReport = () => {
const route = router.resolve({
// const route = router.resolve({
// name: "ReportOriginal",
// params: {
// id: router.currentRoute._value.params.id
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportOriginal",
params: {
id: router.currentRoute._value.params.id
}
});
window.open(route.href, "_blank");
})
};
// 当前页展示的数据
const filteredOpinions = computed(() => box1Data.value);
......@@ -224,11 +230,15 @@ const handleBillMoreClick = (bill) => {
if (!billId) {
return;
}
const route = router.resolve({
// const route = router.resolve({
// path: "/billLayout/bill/introduction",
// query: { billId: String(billId) }
// });
// window.open(route.href, "_blank");
router.push({
path: "/billLayout/bill/introduction",
query: { billId: String(billId) }
});
window.open(route.href, "_blank");
})
};
/** 政策建议关联法案:新标签页打开政令介绍页*/
const handleAdministrativeMoreClick = (ad) => {
......@@ -236,11 +246,15 @@ const handleAdministrativeMoreClick = (ad) => {
if (!id) {
return;
}
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout/overview/introduction",
// query: { id: String(id) }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout/overview/introduction",
query: { id: String(id) }
});
window.open(route.href, "_blank");
})
};
const handleSearchOpinions = () => {
// 搜索时默认切回“全部”标签
......
......@@ -73,13 +73,8 @@
<template v-else>
<div class="box5Chart">
<!-- 有数据后再挂载子组件:子组件仅在 onMounted 初始化,异步数据到达后需 v-if + key 强制重新挂载 -->
<WordCloudChart
v-if="box5Data.length"
:key="box5WordCloudKey"
:data="box5Data"
width="432px"
height="272px"
/>
<WordCloudChart v-if="box5Data.length" :key="box5WordCloudKey" :data="box5Data" width="432px"
height="272px" />
</div>
<div class="box5-footer">
<TipTab :text="REPORT_ANALYSIS_TIP_BOX5" />
......@@ -244,11 +239,15 @@ import TipTab from "@/views/thinkTank/TipTab/index.vue";
const router = useRouter();
const goToAllThinkTank = () => {
const thinkTankId = props?.thinkInfo?.thinkTankId || props?.thinkInfo?.id;
const route = router.resolve({
// const route = router.resolve({
// name: "MultiThinkTankViewAnalysis",
// params: { id: thinkTankId }
// });
// window.open(route.href, "_blank");
router.push({
name: "MultiThinkTankViewAnalysis",
params: { id: thinkTankId }
});
window.open(route.href, "_blank");
})
};
......@@ -368,14 +367,19 @@ const handleClickReportAuthor = async (author) => {
const res = await getPersonSummaryInfo(params);
if (res.code !== 200 || !res.data) return;
window.sessionStorage.setItem("curTabName", author?.name || "");
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId
}
});
window.open(route.href, "_blank");
})
};
const riskSignal = computed(() => {
const info = props.thinkInfo || {};
......@@ -523,7 +527,20 @@ const majorOpinions = ref([
]);
//处理点击详情页事件
const handleOpenReportOriginal = item => {
const route = router.resolve({
// const route = router.resolve({
// name: "ReportOriginal",
// params: {
// id: router.currentRoute._value.params.id
// },
// query: {
// currentPage: currentPage.value,
// pageSize: pageSize.value,
// opinionId: item?.id ?? "",
// opinionContent: item?.content ?? ""
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportOriginal",
params: {
id: router.currentRoute._value.params.id
......@@ -534,8 +551,7 @@ const handleOpenReportOriginal = item => {
opinionId: item?.id ?? "",
opinionContent: item?.content ?? ""
}
});
window.open(route.href, "_blank");
})
};
const tabActiveName = ref("报告分析");
......
......@@ -504,11 +504,15 @@ const handleBillMoreClick = (bill) => {
if (!billId) {
return;
}
const route = router.resolve({
// const route = router.resolve({
// path: "/billLayout/bill/introduction",
// query: { billId: String(billId) }
// });
// window.open(route.href, "_blank");
router.push({
path: "/billLayout/bill/introduction",
query: { billId: String(billId) }
});
window.open(route.href, "_blank");
})
};
/** 政策建议关联法案:新标签页打开政令介绍页*/
const handleAdministrativeMoreClick = (ad) => {
......@@ -516,11 +520,15 @@ const handleAdministrativeMoreClick = (ad) => {
if (!id) {
return;
}
const route = router.resolve({
// const route = router.resolve({
// path: "/decreeLayout/overview/introduction",
// query: { id: String(id) }
// });
// window.open(route.href, "_blank");
router.push({
path: "/decreeLayout/overview/introduction",
query: { id: String(id) }
});
window.open(route.href, "_blank");
})
};
// 政策建议涉及部门分布(饼图)
const box2Data = ref([]);
......@@ -1220,13 +1228,19 @@ function mapPolicyRowToView(row) {
const toDetail = item => {
window.sessionStorage.setItem("curTabName", item.contentZh ?? item.content ?? "");
const route = router.resolve({
// const route = router.resolve({
// name: "ReportOriginal",
// params: {
// id: item.reportId
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportOriginal",
params: {
id: item.reportId
}
});
window.open(route.href, "_blank");
})
};
const total = ref(0);
......
......@@ -111,13 +111,19 @@ const searchReport = ref('')
const handleToReportDetail = (item) => {
window.sessionStorage.setItem('curTabName', item.name)
const route = router.resolve({
// const route = router.resolve({
// name: 'ReportDetail',
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
name: 'ReportDetail',
params: {
id: item.id
}
});
window.open(route.href, "_blank");
})
}
const hearingData = ref([
// 军事类(10条)
......
......@@ -726,14 +726,20 @@ const handleClickPerson = async item => {
return !Number.isNaN(typeIdNum) && !Number.isNaN(personTypeNum) && typeIdNum === personTypeNum;
});
console.log("arr", arr);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.personId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.personId
}
});
window.open(route.href, "_blank");
})
} else {
ElMessage.warning("找不到当前人员的类型值!");
......
......@@ -205,8 +205,9 @@ const handleClick = tank => {
ElMessage.warning("当前智库id为空,无法进入详情页");
return;
}
const curRoute = router.resolve({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } });
window.open(curRoute.href, "_blank");
// const curRoute = router.resolve({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } });
// window.open(curRoute.href, "_blank");
router.push({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } })
};
onMounted(async () => {
handleGetThinkTankList();
......
......@@ -695,13 +695,19 @@ const handleClickToDetail = () => {
const toDetaile = () => {
window.sessionStorage.setItem("curTabName", box1Data.value[box1DataIndex.value].reportName);
const route = router.resolve({
// const route = router.resolve({
// name: "ReportDetail",
// params: {
// id: box1Data.value[box1DataIndex.value].reportId
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportDetail",
params: {
id: box1Data.value[box1DataIndex.value].reportId
}
});
window.open(route.href, "_blank");
})
};
// 切换当前智库
......@@ -1664,13 +1670,19 @@ const handleGetHylyList = async () => {
};
// 查看社交媒体详情
const handleToSocialDetail = item => {
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// personId: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
personId: item.id
}
});
window.open(route.href, "_blank");
})
};
const selectedAreaList = ref([RESOURCE_FILTER_ALL_AREA]);
......@@ -1974,20 +1986,23 @@ const handleClick = tank => {
ElMessage.warning("当前智库id为空,无法进入详情页");
return;
}
const curRoute = router.resolve({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } });
window.open(curRoute.href, "_blank");
// const curRoute = router.resolve({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } });
// window.open(curRoute.href, "_blank");
router.push({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } })
};
// 查看更多风险信号
const handleToMoreRiskSignal = () => {
const route = router.resolve("/viewRiskSignal");
window.open(route.href, "_blank");
// const route = router.resolve("/viewRiskSignal");
// window.open(route.href, "_blank");
router.push("/viewRiskSignal")
};
// 查看更多新闻资讯
const handleToMoreNews = () => {
const route = router.resolve("/newsBrief");
window.open(route.href, "_blank");
// const route = router.resolve("/newsBrief");
// window.open(route.href, "_blank");
router.push("/newsBrief")
};
// 点击人物头像,跳转到人物主页
......@@ -2027,14 +2042,21 @@ const handleClickPerson = async item => {
return;
}
window.sessionStorage.setItem("curTabName", item.personName);
const route = router.resolve({
// const route = router.resolve({
// path: "/characterPage",
// query: {
// type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
// personId: item.personId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/characterPage",
query: {
type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId: item.personId
}
});
window.open(route.href, "_blank");
})
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
......@@ -2049,36 +2071,55 @@ const handleClickPerson = async item => {
// 点击新闻条目,跳转到新闻分析页
const handleToNewsAnalysis = news => {
const route = router.resolve({
// const route = router.resolve({
// path: "/newsAnalysis",
// query: {
// newsId: news.newsId
// }
// });
// window.open(route.href, "_blank");
router.push({
path: "/newsAnalysis",
query: {
newsId: news.newsId
}
});
window.open(route.href, "_blank");
})
};
const handleToReportDetail = item => {
window.sessionStorage.setItem("curTabName", item.name);
const route = router.resolve({
// const route = router.resolve({
// name: "ReportDetail",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
router.push({
name: "ReportDetail",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
})
};
const handleSearch = () => {
window.sessionStorage.setItem("curTabName", `搜索-${searchThinktankText.value}`);
const curRoute = router.resolve({
// const curRoute = router.resolve({
// path: "/searchResults",
// query: {
// searchText: searchThinktankText.value,
// areaName: "智库"
// }
// });
// window.open(curRoute.href, "_blank");
router.push({
path: "/searchResults",
query: {
searchText: searchThinktankText.value,
areaName: "智库"
}
});
window.open(curRoute.href, "_blank");
})
};
onMounted(async () => {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论