嵌入iframe、修改网络安全的展示、新增tab切换跳转iframe

main
吕天方 7 months ago
parent 3cfb3de1b3
commit f0a2a47062

@ -5,6 +5,6 @@ ENV = 'development'
VUE_APP_BASE_API = '/dashboard'
# VUE_APP_BASE_API2 = 'http://39.101.188.84:9027'
VUE_APP_BASE_API2 = 'http://localhost:9035'
VUE_APP_BASE_API2 = 'http://192.168.0.110:9035'
# VUE_APP_BASE_API2 = 'http://39.101.188.84:9035'
BASE_API = 'http://10.10.3.35:9070'

@ -0,0 +1,15 @@
import request from '@/utils/request'
export function singleLoginOne() {
return request({
url: '/tcZz/networkEcology/singleLogin/login1',
method: 'get',
})
}
export function singleLoginTwo() {
return request({
url: '/tcZz/networkEcology/singleLogin/login2',
method: 'get',
})
}

@ -186,3 +186,36 @@ export function dataBmtb() {
method: 'get',
})
}
// 查询众测漏洞成果统计
export function listZclds(query) {
return request({
url: '/tcZz/networkSecurity/zclds/list',
method: 'get',
params: query
})
}
// 查询众测单位排行榜
export function listZcdwpm(query) {
return request({
url: '/tcZz/networkSecurity/zcdwpm/list',
method: 'get',
params: query
})
}
// 查询众测资产成果统计
export function listZczccg(query) {
return request({
url: '/tcZz/networkSecurity/zczccg/getOne',
method: 'get',
params: query
})
}
// 查询资产列表
export function listZclb(query) {
return request({
url: '/tcZz/networkSecurity/zclb/list',
method: 'get',
params: query
})
}

@ -18,6 +18,10 @@ export const constantRoutes = [
component: (resolve) => {
require(["@/views/privateOrder/security/index"], resolve);
},
// redirect: "/screen/security/index",
// children: [
// ]
},
{
path: "sentiment",
@ -40,7 +44,40 @@ export const constantRoutes = [
require(["@/views/privateOrder/positiveEnergy/index"], resolve);
},
},
],
// {
// path: "index",
// name: "态势感知",
// component: (resolve) => {
// require(["@/views/privateOrder/security/index"], resolve);
// },
// },
{
path: "supplyChain",
name: "供应链管理",
component: (resolve) => {
require(["@/views/privateOrder/supplyChain"], resolve);
},
},
{
path: "disposeMeet",
name: "处置与应急",
component: (resolve) => {
require(["@/views/privateOrder/disposeMeet"], resolve);
},
},
]
// children: [
// {
// path: "exhibition",
// name: "态势感知",
// component: (resolve) => {
// require(["@/views/privateOrder/index"], resolve);
// },
// redirect: "/screen/exhibition/security",
// },
// ],
},
];
export const asyncRoutes = [{ path: "*", redirect: "/404", hidden: true }];

@ -2,3 +2,5 @@ $ScreenWidth: 5120px; //页面整体高度
$ScreenHeight: 1160px; //
$LeftWidth: 1527px; //
$RightWidth: 1527px; //
$iframeWidth: 5090px; // iframe
$iframeHeight: 1030px; // iframe

@ -69,6 +69,18 @@
<commandControl />
</div>
</el-dialog>
<div class="left-tabs-box" v-if="isShow">
<router-link
v-for="item in menusTwo"
:key="item.id"
class="nav_item_two"
active-class="selected_nav_two"
exact
:to="{ path: item.path }"
>
{{ item.name }}
</router-link>
</div>
</div>
<!-- </div> -->
</template>
@ -100,9 +112,27 @@ export default {
{ label: "近1年", rightLine: false },
],
isActive: 0,
menusTwo: [
{ id: 1, name: "态势感知", path: "/screen/security" },
{ id: 2, name: "供应链管理", path: "/screen/supplyChain" },
{ id: 3, name: "处置与应急", path: "/screen/disposeMeet" },
],
isShow: true,
};
},
watch: {},
watch: {
$route: {
handler(route) {
if(route.path !== "/screen/security" || route.path !== "/screen/supplyChain" || route.path !== "/screen/disposeMeet") {
this.isShow = true;
}
if(route.path == "/screen/sentiment" || route.path == "/screen/ecosphere" || route.path == "/screen/positiveEnergy"){
this.isShow = false;
}
},
immediate:true
}
},
created() {
this.menus = [
{ id: 1, name: "网络安全", path: "/screen/security" },
@ -153,6 +183,80 @@ export default {
position: relative;
background: url("~@/assets/privateOrder/topNar/line_right_left.png") no-repeat;
background-size: 100% 100%;
position: relative;
.left-tabs-box {
position: absolute;
left: 0px;
width: 50px;
top: 15%;
background-color: transparent;
z-index: 1000;
display: flex;
flex-direction: column;
.nav_item_two {
// width: 281px;
// width: 250px;
// height: 69px;
// height: 50px;
width: 50px;
height: 250px;
font-family: PangMenZhengDao;
font-size: 40px;
// font-size: 27px;
letter-spacing: 4px;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
cursor: pointer;
color: #85c9ff;
margin-bottom: 30px;
// z-index: 1000;
// display: inline-block; /* 使 transform */
// transform: rotate(90deg); /* 90 */
// transform-origin: left bottom; /* */
// white-space: nowrap; /* */
}
.selected_nav_two {
// width: 281px;
// width: 250px;
// height: 69px;
// height: 50px;
width: 50px;
height: 250px;
position: relative;
// display: flex;
// align-items: center;
// justify-content: center;
// cursor: pointer;
color: #ffffff;
z-index: 1000;
// transform: rotate(90deg); /* 90 */
// transform-origin: left bottom; /* */
// white-space: nowrap; /* */
}
.selected_nav_two::before {
content:'';
position: absolute;
left: 0;
top: -50px;
width: 250px;
height: 50px;
background: url("~@/assets/privateOrder/topNar/seleted_nav.png");
background-size: 100% 100%;
transform: rotate(90deg); /* 旋转90度 */
transform-origin: left bottom; /* 设置旋转的基点为左上角 */
clip-path: inset(0 0 0 0); /* 调整裁剪区域 */
z-index: -1;
}
// div {
// font-size: 28px;
// color: #fff;
// font-family: SourceHanSansCN-Regular;
// text-shadow: 0 0 10px #77adeb;
// }
}
}
.top_nav {
@ -183,6 +287,7 @@ export default {
font-size: 56px;
letter-spacing: 6px;
color: #ffffff;
text-align: center;
}
.top_right {

@ -0,0 +1,33 @@
<template>
<div>
<iframe :src="iframeSrc" id="disposeMeet" allowtransparency="true" style="background-color: rgba(0, 24, 50, 0.5);"></iframe>
</div>
</template>
<script>
import { singleLoginOne } from "@/api/login.js"
export default {
data() {
return {
iframeSrc:"",
}
},
mounted(){
this.getToken();
},
methods:{
getToken() {
singleLoginOne().then(res=>{
console.log(res);
this.iframeSrc = res.data;
// document.cookie = "a=1";
})
}
},
}
</script>
<style lang="scss" scoped>
#disposeMeet {
width: $ScreenWidth;
height: $iframeHeight;
}
</style>

@ -0,0 +1,549 @@
<template>
<!-- <div class="pc"> -->
<div class="container">
<div class="main-container">
<div class="top_nav">
<div class="top_left">
<router-link
v-for="item in menus.slice(0, 2)"
:key="item.id"
class="nav_item left_nav"
active-class="selected_nav"
exact
:to="{ path: item.path }"
>
{{ item.name }}
</router-link>
</div>
<div class="center_title">太仓市网络综合治理平台</div>
<div class="top_right">
<router-link
v-for="item in menus.slice(2, 4)"
:key="item.id"
class="nav_item right_nav"
active-class="selected_nav"
exact
:to="{ path: item.path }"
>
{{ item.name }}
</router-link>
</div>
<div class="time-wrap">
<div class="icon" />
<span class="date">{{ now.date }}</span>
<span class="time">
{{ now.hour + ":" + now.minute + ":" + now.second }}
</span>
</div>
<div class="year-wrap"></div>
</div>
<router-view />
</div>
<div>
<el-button
v-if="!dialogDetails && $route.name === '网络舆情'"
type="primary"
style="
background-color: rgba(255, 255, 255, 0.2);
position: absolute;
top: 160px;
left: 1600px;
z-index: 9999;
"
@click="dialogDetails = !dialogDetails"
>切换</el-button
>
</div>
<el-dialog
v-if="dialogDetails"
v-el-drag-dialog
class="screen-dialog"
:visible.sync="dialogDetails"
width="2530px"
top="20px"
:modal-append-to-body="true"
center
:modal="false"
>
<div class="iframeBox">
<commandControl />
</div>
</el-dialog>
</div>
<!-- </div> -->
</template>
<script>
import commandControl from "@/views/privateOrder/sentiment/components/commandControl/index.vue";
export default {
components: {
commandControl,
},
data() {
return {
dialogDetails: false,
// id
selectMenuId: 0,
//
menus: [],
//
now: {
date: "",
hour: "",
minute: "",
second: "",
},
//
yearChange: [
{ label: "近1月", rightLine: true },
{ label: "近3月", rightLine: true },
{ label: "近1年", rightLine: false },
],
isActive: 0,
};
},
watch: {},
created() {
this.menus = [
{ id: 1, name: "网络安全", path: "/screen/exhibition/security" },
{ id: 2, name: "网络舆情", path: "/screen/exhibition/sentiment" },
{ id: 3, name: "网络管理", path: "/screen/exhibition/ecosphere" },
{ id: 4, name: "网络生态", path: "/screen/exhibition/positiveEnergy" },
];
setInterval(() => {
this.now.date = this.$moment().format("YYYY-MM-DD");
this.now.hour = this.$moment().format("HH");
this.now.minute = this.$moment().format("mm");
this.now.second = this.$moment().format("ss");
}, 1000);
setInterval(() => {
// this.getHoursWeather();
}, 1000 * 60 * 10);
},
methods: {
changeTime(val, index) {
this.isActive = index;
},
},
};
</script>
<style lang="scss" scoped>
.pc {
width: 100%;
height: $ScreenHeight;
overflow: scroll;
}
.iframeBox {
position: relative;
width: 3305px;
height: 1006px;
margin-left: 14px;
margin-top: -16px;
overflow: hidden;
}
// .container {
// width: $ScreenWidth;
// height: $ScreenHeight;
// width: 1920;
// height: 1080;
// position: relative;
// background: url("~@/assets/privateOrder/topNar/line_right_left.png") no-repeat;
// background-size: 100% 100%;
// }
.top_nav {
width: $ScreenWidth;
position: absolute;
height: 130px;
background: url("~@/assets/privateOrder/topNar/topNav.png");
background-size: 100% 100%;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
.top_left {
width: 50%;
height: 100%;
display: flex;
padding-right: 230px;
align-items: center;
justify-content: flex-end;
}
.center_title {
width: 737px;
line-height: 106px;
height: 100%;
font-family: PangMenZhengDao;
font-size: 56px;
letter-spacing: 6px;
color: #ffffff;
}
.top_right {
width: 50%;
height: 100%;
display: flex;
padding-left: 230px;
align-items: center;
justify-content: flex-start;
}
}
.nav_item {
width: 281px;
height: 69px;
font-family: PangMenZhengDao;
font-size: 44px;
letter-spacing: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: #85c9ff;
}
.selected_nav {
width: 281px;
height: 69px;
background: url("~@/assets/privateOrder/topNar/seleted_nav.png");
background-size: 100% 100%;
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.left_nav {
margin-left: 187px;
}
.right_nav {
margin-right: 187px;
}
/* .top-nar {
width: $ScreenWidth;
position: absolute;
height: 107px;
background: url("~@/assets/privateOrder/topNar/bg_banner.png");
background-size: 100% 100%;
z-index: 2;
justify-content: space-between;
border: 1px solid red;
}
.top-content {
width: $ScreenWidth;
height: 107px;
// background: url("~@/assets/privateOrder/topNar/top_bg.png");
display: flex;
justify-content: space-between;
}
.title-wrap {
margin: 23px 0 0 100px;
display: flex;
flex-direction: column;
& > span:nth-child(1) {
font-size: 42px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 4px;
text-align: center;
font-family: YouSheBiaoTiHei;
background-image: -webkit-linear-gradient(#fff, #b2ddff);
background-clip: text;
-webkit-text-fill-color: transparent;
}
& > span:nth-child(2) {
font-family: ConthraxSb-Regular;
font-size: 11px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: rgba($color: #fff, $alpha: 0.5);
}
}
.nav-wrap {
display: flex;
margin-top: 21px;
height: 110px;
& > a {
width: 241px;
height: 65px;
font-family: YouSheBiaoTiHei;
font-size: 34px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 2px;
color: #b7dfff;
text-align: center;
line-height: 65px;
}
.active {
color: #fff;
background: url("~@/assets/privateOrder/topNar/bg_nav_item.png");
background-size: 100% 100%;
}
} */
.time-wrap {
display: flex;
align-items: center;
position: absolute;
left: 15px;
top: 33px;
.icon {
width: 100px;
height: 100px;
}
.date {
font-family: DIN-Medium;
font-size: 32px;
font-weight: normal;
font-stretch: normal;
line-height: 32px;
letter-spacing: 2px;
color: #b7dfff;
margin-left: -15px;
margin-top: -17px;
}
.time {
font-family: DIN-Bold;
margin-left: 48px;
margin-top: -17px;
font-size: 37px;
font-weight: normal;
font-stretch: normal;
line-height: 32px;
letter-spacing: 2px;
color: #ffffff;
}
}
.year-wrap {
position: absolute;
display: flex;
align-items: center;
align-content: space-between;
right: 30px;
width: 460px;
height: 67px;
//background-color: #1fb6e5;
}
.time_name {
width: 110px;
text-align: center;
display: inline-block;
height: 27px;
font-family: SourceHanSansCN-Regular;
font-size: 28px;
font-weight: normal;
font-stretch: normal;
line-height: 27px;
letter-spacing: 0;
color: #68cff9;
cursor: pointer;
}
.active_time {
width: 110px;
text-align: center;
display: inline-block;
height: 27px;
font-family: SourceHanSansCN-Bold;
font-size: 28px;
font-weight: normal;
font-stretch: normal;
line-height: 54px;
letter-spacing: 0;
color: #ffffff;
cursor: pointer;
}
.line-style {
display: inline-block;
width: 2px;
height: 24px;
background: #b7dfff url("~@/assets/privateOrder/topNar/top-cutline.png");
opacity: 0.5;
margin: 0 30px;
}
.wrap-bottom {
margin-top: 10px;
width: 110px;
height: 4px;
background: url("~@/assets/privateOrder/topNar/tab-act-line.png") 50% 100%;
border-radius: 2px;
}
.line {
position: absolute;
z-index: 999;
}
.line-top {
top: 8px;
left: 30px;
}
.line-bottom {
bottom: 8px;
left: 30px;
}
.line-left {
top: 15px;
left: 10px;
height: 1590px;
}
.line-right {
top: 15px;
right: 10px;
height: 1590px;
}
.main-container {
position: relative;
top: 0;
left: 0;
width: $ScreenWidth;
height: 100%;
z-index: 1;
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
background-color: rgba(#1fb6e5, 0.06);
}
.screen-dialog {
position: absolute;
z-index: 9999;
.dialog-btn {
background: url("~@/assets/dialog/btn-bg.png") no-repeat;
background-size: 100% 100%;
width: 160px;
height: 50px;
font-family: SourceHanSansCN-Regular;
font-size: 24px;
font-weight: normal;
font-stretch: normal;
line-height: 10px;
letter-spacing: 2px;
color: #ffffff;
}
// ::v-deep .el-button {
// border: none;
// }
.dialog-footer :hover {
.dialog-btn {
background: url("~@/assets/dialog/btn-bg-act.png") no-repeat;
background-size: 100% 100%;
}
}
::v-deep .el-dialog__header {
background: rgba(255, 255, 255, 0);
text-align: left;
padding-left: 40px;
.el-dialog__title {
font-family: SourceHanSansCN-Bold, san-serif;
font-size: 24px;
font-weight: normal;
font-stretch: normal;
line-height: 38px;
letter-spacing: 0px;
color: #ffffff;
}
}
::v-deep .el-dialog {
background: url("~@/assets/dialog/弹窗背景-一般.png") no-repeat;
width: 1820px;
height: 1092px;
overflow: hidden;
background-size: 100% 100%;
}
::v-deep .el-dialog_body {
height: 1092px;
}
::v-deep .el-dialog__headerbtn {
top: 0;
font-size: 30px;
font-weight: bolder;
}
::v-deep .el-dialog__footer {
background: rgba(255, 255, 255, 0);
}
::v-deep .el-table th.el-table__cell {
background-color: rgba(0, 0, 0, 0);
}
::v-deep .el-table {
background-color: rgba(0, 0, 0, 0);
color: #fff;
border: none;
}
::v-deep.el-table::before {
display: none;
}
::v-deep .el-table tr {
background-color: rgba(0, 0, 0, 0);
}
::v-deep .el-table .cell {
font-size: 26px;
height: 40px;
line-height: 40px;
}
::v-deep .el-table__header {
background-color: rgba(76, 162, 248, 0.2);
color: #fff;
}
::v-deep .el-table__row {
font-family: SourceHanSansCN-Regular, sans-serif;
font-size: 26px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #b7dfff;
background-color: rgba(106, 184, 255, 0.2);
border: solid 1px #6ab8ff;
}
::v-deep .el-table {
tbody tr {
&:hover {
td {
background-color: rgba(228, 223, 223, 0.3) !important;
}
}
}
}
::v-deep .el-table td.el-table__cell {
border: none;
}
::v-deep .el-table th.el-table__cell {
border: none;
}
}
</style>
<div class="left-tabs-box">
<router-link
v-for="item in menus"
:key="item.id"
class="nav_item left_nav"
active-class="selected_nav"
:to="{ path: item.path }"
>
{{ item.name }}
</router-link>
</div>

@ -19,7 +19,7 @@
<div class="left-country-attack">
<div class="attack-left">
<div
style="height: 550px; overflow: hidden"
style="height: 550px; overflow: hidden; scrollbar-width: none;"
:style="`overflow:${animateFlagTwo ? 'hidden' : 'auto'}`"
>
<ul class="attack-wrap" :class="{ marquee_top: animateFlag }">
@ -49,7 +49,7 @@
<div class="right-country-attack">
<div class="attack-right">
<div
style="height: 550px; overflow: hidden"
style="height: 550px; overflow: hidden; scrollbar-width: none;"
:style="`overflow:${animateFlagTwo ? 'hidden' : 'auto'}`"
>
<ul class="attack-wrap" :class="{ marquee_top: animateFlagTwo }">

@ -2,13 +2,13 @@
* @Author: lough11
* @Date: 2021-12-24 13:17:50
* @LastEditors: JC9527
* @LastEditTime: 2023-10-31 16:33:12
* @LastEditTime: 2024-08-07 14:11:53
* @Description:
-->
<template>
<div>
<!-- 饼图 -->
<div v-show="announceCurrentIndex === 0">
<!-- <div v-show="announceCurrentIndex === 0">
<div style="display: flex">
<div class="countpie">
<div id="pie1" />
@ -23,13 +23,16 @@
</div>
</div>
</div>
</div>
</div> -->
<!-- 通报 -->
<div v-if="announceCurrentIndex === 1">
<!-- <div v-if="announceCurrentIndex === 1"> -->
<div>
<div class="table_outside">
<div class="table_title">
<span class="title_one">部门名称</span>
<span class="title_two">通报次数</span>
<!-- <span class="title_one">部门名称</span>
<span class="title_two">通报次数</span> -->
<span class="title_one">单位名称</span>
<span class="title_two">积分</span>
</div>
<div>
<!-- <vue-seamless-scroll
@ -42,22 +45,22 @@
v-for="(item, index) in notificationList"
:key="index"
class="ctn_item"
@click="clickTop4(item)"
>
<!-- @click="clickTop4(item)" -->
<div class="item_icon">
{{ index + 1 }}
</div>
<div class="item_name" :title="item.depName">
{{ item.depName }}
<div class="item_name" :title="item.unitName">
{{ item.unitName }}
</div>
<div class="item_num">{{ item.count }}</div>
<div class="item_num">{{ item.integral }}</div>
</div>
</div>
<!-- </vue-seamless-scroll> -->
</div>
</div>
</div>
<el-dialog
<!-- <el-dialog
v-if="dialogStatus"
:title="dialogTitle"
class="screen-dialog"
@ -89,7 +92,7 @@
>
</span>
</span>
</el-dialog>
</el-dialog> -->
<el-dialog
v-if="dialogStatus2"
:title="'通报详情'"
@ -144,7 +147,7 @@
</template>
<script>
import { listBmtb, listSdtb, dataSdtb, dataBmtb } from "@/api/networkSecurity";
import { listBmtb, listSdtb, dataSdtb, dataBmtb, listZcdwpm } from "@/api/networkSecurity";
import vueSeamlessScroll from "vue-seamless-scroll";
import qs from "qs";
const docx = require("docx-preview");
@ -205,7 +208,7 @@ export default {
},
mounted() {
this.getBMData();
this.getSDData();
// this.getSDData();
},
methods: {
inItPie() {
@ -386,9 +389,12 @@ export default {
},
//
getBMData() {
dataBmtb().then((res) => {
this.notificationList = res.data;
});
// dataBmtb().then((res) => {
// this.notificationList = res.data;
// });
listZcdwpm().then(res=>{
this.notificationList = res.rows;
})
},
//
getSDData() {
@ -404,7 +410,7 @@ export default {
}.png`),
});
});
this.inItPie();
// this.inItPie();
});
},
// top4
@ -510,14 +516,17 @@ export default {
margin-top: 18px;
.table_title {
width: 718px;
height: 55px;
// height: 55px;
height: 70px;
background-color: #4da3f825;
display: flex;
justify-content: space-between;
align-items: center;
font-family: SourceHanSansCN-Regular;
font-size: 28px;
line-height: 20px;
// font-size: 28px;
font-size: 36px;
// line-height: 20px;
line-height: 32px;
color: #a6d5ff;
.title_one {
margin-left: 77px;
@ -534,9 +543,11 @@ export default {
display: flex;
align-items: center;
width: 720px;
height: 60px;
// height: 60px;
height: 75px;
margin: 15px 0;
background: url("~@/assets/privateOrder/general/first/部门通报tr-bg.png");
background: url("~@/assets/privateOrder/general/first/部门通报tr-bg.png") no-repeat;
background-size:100% 100%;
.item_icon {
width: 38px;
height: 38px;
@ -567,7 +578,6 @@ export default {
margin-right: 60px;
text-align: right;
}
// }
}
}
.screen-dialog {

@ -1,8 +1,8 @@
<!--
* @Author: lough
* @Date: 2021-12-24 11:11:58
* @LastEditors: lough
* @LastEditTime: 2022-08-02 13:17:05
* @LastEditors: JC9527
* @LastEditTime: 2024-08-07 14:06:32
* @Description:
-->
<template>
@ -142,7 +142,7 @@ export default {
});
});
listFbqk().then((res) => {
console.log(res);
// console.log(res);
res.rows.forEach((value) => {
this.pieImg.push({
name: value.cityName,
@ -181,7 +181,7 @@ export default {
itemGap: 17,
padding: 8,
formatter: (name) => {
console.log(name);
// console.log(name);
let target;
this.pieImg.forEach((v) => {
if (v.name === name) {

@ -3,7 +3,7 @@
* @Author: kery.chen
* @Description: 总体概览左侧
* @Date: 2021-11-30 11:08:50
* @LastEditTime: 2023-08-22 11:04:28
* @LastEditTime: 2024-08-07 14:06:40
* @FilePath : \\tcingiocpro\\src\\views\\privateOrder\\security\\components\\componentLeft.vue
-->
<template>
@ -572,7 +572,7 @@ export default {
getsjly() {
//APT(M)
listDataSourceTj().then((res) => {
console.log(res);
// console.log(res);
this.dataSource.top[0].currentNum = res.rows[0].lable1;
this.dataSource.top[0].total = res.rows[0].lable1Sum;
this.dataSource.top[1].currentNum = res.rows[0].lable2;
@ -586,7 +586,7 @@ export default {
});
//
objSupervisionNum().then((res) => {
console.log(res);
// console.log(res);
this.superviseObject[0].num = res.data.count2;
this.superviseObject[1].num = res.data.count3;
this.superviseObject[2].num = res.data.count5;

@ -13,14 +13,15 @@
</div>
</div>
<div class="section section-threeStatistics">
<module-title> 通报完成情况 </module-title>
<!-- <module-title> 通报完成情况 </module-title> -->
<module-title> 众测漏洞成果统计 </module-title>
<div class="wrapCtn">
<div class="leftNotification">
<img
src="@/assets/privateOrder/general/icon-本年度通报.png"
alt=""
/>
<div class="leftNotification-bottom">
<!-- <div class="leftNotification-bottom">
<div>本年度通报</div>
<div>
{{ new Date().getFullYear() }}-01 -
@ -31,21 +32,29 @@
<span>/{{ positionTimer.notificationCount }}</span>
</div>
<div>{{ positionTimer.completionPercent | numFilter }}%</div>
</div> -->
<div class="leftNotification-bottom">
<div class="bug-number">
<div>漏洞总数</div>
<div>{{ sums }}</div>
</div>
</div>
</div>
<div class="right_table_list">
<div class="table_title">
<div class="title_one">通报数量</div>
<!-- <div class="title_one">通报数量</div>
<div class="title_two">完成期数</div>
<div class="title_three">完成比例</div>
<div class="title_three">完成比例</div> -->
<div>漏洞等级</div>
<div>漏洞数量</div>
</div>
<div
<!-- <div
v-for="(item, index) in notificationFinishList"
:key="index"
class="table_item"
>
<div class="item_one">
<!-- {{ notificationStatus(item.timeRangeFlag) }} -->
{{ notificationStatus(item.timeRangeFlag) }}
{{ item.timeRangeFlag }}
</div>
<div class="item_two">{{ item.notificationCount }}</div>
@ -53,17 +62,29 @@
<div class="item_four">
{{ item.completionPercent | numFilter }}%
</div>
</div> -->
<div
v-for="(item, index) in bugNumberList"
:key="index"
class="table_item"
>
<div class="item_one">
{{ item.ldLevel == 4 ? '紧急' : item.ldLevel == 3 ? '高危' : item.ldLevel == 2 ? '中危' : item.ldLevel == 1 ? '低危' : '' }}
</div>
<div class="item_three">{{ item.ldNumber }}</div>
</div>
</div>
</div>
</div>
<div
class="section section-plateStatistics"
<!--
@mouseover="mouseOver('announce')"
@mouseleave="mouseLeave('announce')"
-->
<div
class="section section-plateStatistics"
>
<module-title>
<!-- <module-title>
通报统计
<div slot="operate" class="btn-wrap">
<div
@ -77,17 +98,22 @@
<div />
</div>
</div>
</module-title>
<ReportingStatistics :announce-current-index="announceCurrentIndex" />
</module-title> -->
<module-title>众测单位排行榜</module-title>
<!-- <ReportingStatistics :announce-current-index="announceCurrentIndex" /> -->
<ReportingStatistics />
</div>
<!-- 隐患处置 -->
<!--
@mouseover="mouseOver('danger')"
@mouseleave="mouseLeave('danger')"
-->
<div
class="section section-newestRisk"
style="margin-top: 60px"
@mouseover="mouseOver('danger')"
@mouseleave="mouseLeave('danger')"
>
<module-title>
<!-- <module-title>
隐患处置
<div slot="operate" class="btn-wrap">
<div
@ -101,9 +127,68 @@
<div />
</div>
</div>
</module-title>
</module-title> -->
<module-title>众测资产成果统计</module-title>
<div class="report-top">
<!-- @click="reportDetails(1)" -->
<div class="Tips" style="cursor: pointer">
<i class="report-icon"></i>
<!-- <div style="display: inline-block; margin: 33px 0 0 14px"> -->
<div style="display: inline-block; margin: 15px 0 0 14px">
<div class="report-title">涉及单位数</div>
<div class="report-num">{{ zczccgtj.unitNumber }}</div>
</div>
</div>
<!-- @click="reportDetails(2)" -->
<div
class="Transfer"
style="cursor: pointer"
>
<i class="report-icon"></i>
<!-- <div style="display: inline-block; margin: 33px 0 0 14px"> -->
<div style="display: inline-block; margin: 15px 0 0 14px">
<div class="report-title">新增资产数</div>
<div class="report-num">{{ zczccgtj.addNumber }}</div>
</div>
</div>
</div>
<div class="section-monitor-bottom">
<div class="monitor-box">
<div class="monitor-title">
<span>所属单位</span>
<span>资产名称</span>
<span>资产地址</span>
</div>
<div>
<vue-seamless-scroll
:data="tableData"
:class-option="classOption"
class="monitorScroll"
>
<!-- @click="getAttackSource(item)" -->
<div
v-for="(item, idx) in tableData"
:key="idx"
class="monitor-list"
>
<!-- <el-tooltip :content="item.unit" placement="top"> -->
<span :data-id="item.id">{{
item.unit
}}</span>
<!-- </el-tooltip> -->
<!-- <el-tooltip :content="item.zcName" placement="top"> -->
<span :data-id="item.id">{{ item.zcName }}</span>
<!-- </el-tooltip> -->
<!-- <el-tooltip :content="item.zcAddress" placement="top"> -->
<span :data-id="item.id">{{ item.zcAddress }}</span>
<!-- </el-tooltip> -->
</div>
</vue-seamless-scroll>
</div>
</div>
</div>
<!-- 最新隐患 -->
<div v-show="dangerCurrentIndex === 0">
<!-- <div v-show="dangerCurrentIndex === 0">
<div class="dangerTitle">
<span>单位名称</span>
<span>隐患名称</span>
@ -128,9 +213,9 @@
</div>
</vue-seamless-scroll>
</div>
</div>
</div> -->
<!-- 通报处置 -->
<div v-if="dangerCurrentIndex === 1">
<!-- <div v-if="dangerCurrentIndex === 1">
<div class="table_outside">
<div class="table_title">
<span class="title_one">单位名称</span>
@ -161,10 +246,10 @@
</vue-seamless-scroll>
</div>
</div>
</div>
</div> -->
</div>
</div>
<el-dialog
<!-- <el-dialog
v-if="dialogStatus"
title=""
class="screen-dialog"
@ -187,7 +272,7 @@
>
</span>
</span>
</el-dialog>
</el-dialog> -->
<el-dialog
v-if="dialogDetails"
:title="dialogTitle"
@ -235,6 +320,7 @@
<script>
import { safeRisks, tbFinish, listCounty } from "@/api/wlSafe";
import { listDanger, getDanger, listTb, getTb } from "@/api/zongzhi/st.js";
import { listZclds, listZczccg, listZclb } from "@/api/networkSecurity"
import vueSeamlessScroll from "vue-seamless-scroll";
import ModuleTitle from "../../common/ModuleTitle.vue";
import ReportingStatistics from "./ReportingStatistics.vue";
@ -247,6 +333,7 @@ import axios from "axios";
window.JSZip = require("jszip");
import pdf from "vue-pdf";
export default {
dicts: ["ld_level"],
components: {
vueSeamlessScroll,
ModuleTitle,
@ -350,6 +437,8 @@ export default {
completionPercent: "",
},
],
//
bugNumberList: [],
animate: true,
positionTimer: {
timeRangeFlag: "本年度",
@ -371,6 +460,12 @@ export default {
fileExtension: "",
numPages: 1,
pdfUrl: "",
zczccgtj:{
unitNumber:0,
addNumber:0,
},
tableData:[],
sums: 0,
};
},
computed: {
@ -385,10 +480,22 @@ export default {
return myMap.get(flag);
};
},
// classOption() {
// return {
// step: 0.6, //
// limitMoveNum: 4, // this.dataList.length
// hoverStop: true, // stop
// direction: 1, // 0 1 2 3
// openWatch: true, // dom
// singleHeight: 0, // (0) direction => 0/1
// singleWidth: 0, // (0) direction => 2/3
// waitTime: 1000, // (1000ms)
// };
// },
classOption() {
return {
step: 0.6, //
limitMoveNum: 4, // this.dataList.length
step: 0.4, //
limitMoveNum: 3, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
@ -406,7 +513,7 @@ export default {
clearInterval(this.tbTime);
},
mounted() {
this.dangerChange();
// this.dangerChange();
this.getListDanger();
this.dangerListTime = setInterval(() => {
//
@ -449,8 +556,37 @@ export default {
// getNotificationList().then((res) => {
// this.notificationFinishList = res.data
// })
//
this.getZccgtj();
this.getZczccgtj();
//
this.getZclb();
},
methods: {
//
getZclb(){
listZclb({pageNum: 1,pageSize: 100,}).then(res=>{
this.tableData = res.rows;
})
},
//
getZczccgtj(){
listZczccg().then(res=>{
this.zczccgtj.addNumber = res.data.addNumber
this.zczccgtj.unitNumber = res.data.unitNumber
})
},
getZccgtj(){
listZclds().then(res=>{
this.bugNumberList = res.rows;
let sums = 0;
res.rows.forEach((item)=>{
sums += item.ldNumber
})
this.sums = sums;
// console.log(res);
})
},
/**
* 安全隐患大屏数据
*/
@ -692,10 +828,143 @@ export default {
}
.section-newestRisk {
padding-top: 40px;
display: flex;
flex-direction: column;
.report-top {
// flex: 1;
padding-top: 20px;
display: flex;
align-items: center;
// align-content: space-between;
justify-content: space-between;
> div {
// width: 344px;
// height: 160px;
width: 344px;
height: 100px;
background: url("~@/assets/sentimeent/舆情报告-bg-top.png") no-repeat;
background-size: 100% 100%;
}
:nth-child(1) {
margin-right: 8px;
}
}
.Tips .report-icon {
display: inline-block;
width: 80px;
height: 80px;
background: url("~@/assets/sentimeent/icon-提示单.png") no-repeat;
background-size: 100% 100%;
margin-left: 49px;
}
.Transfer .report-icon {
display: inline-block;
width: 80px;
height: 80px;
background: url("~@/assets/sentimeent/icon-转办单.png") no-repeat;
background-size: 100% 100%;
margin-left: 49px;
}
.report-title {
font-family: SourceHanSansCN-Medium;
// font-size: 28px;
font-size: 20px;
font-weight: normal;
font-stretch: normal;
// line-height: 54px;
line-height: 40px;
letter-spacing: 0px;
color: #ffffff;
}
.report-num {
font-family: DIN-Bold;
// font-size: 70px;
font-size: 50px;
font-weight: normal;
font-stretch: normal;
text-align: center;
// line-height: 54px;
line-height: 40px;
letter-spacing: 2px;
color: #ffe21c;
}
.section-monitor-bottom {
width: 100%;
height: 229px;
display: flex;
// margin-top: -33px;
margin-top: -10px;
justify-content: space-around;
.monitor-box {
// width: 720px;
height: 229px;
margin-top: 28px;
overflow: hidden;
.monitor-title {
// width: 720px;
height: 50px;
line-height: 50px;
background-color: #133458;
display: grid;
grid-template-columns: 253px 306px 180px;
span {
font-family: SourceHanSansCN-Regular;
font-size: 28px;
color: #b7dfff;
}
span:nth-child(1) {
margin-left: 39px;
}
}
.monitorScroll {
// width: 720px;
// height: 180px;
height: 180px;
overflow: hidden;
margin-top: 5px;
}
.monitor-list {
margin-top: 12px;
// width: 720px;
height: 80px;
line-height: 80px;
background-color: rgb(19, 52, 88, 0.3);
display: flex;
span {
display: inline-block;
font-family: DIN-Medium;
font-size: 28px;
letter-spacing: 0px;
color: #ffffff;
}
span:nth-child(1) {
width: 185px;
margin-left: 39px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
span:nth-child(2) {
width: 315px;
margin-left: 45px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
span:nth-child(3) {
width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
}
}
.section-newestRisk,
.section-notification {
height: 402px;
// height: 402px;
height: 442px;
:hover {
cursor: pointer;
}
@ -773,53 +1042,87 @@ export default {
.leftNotification {
display: inline-block;
width: 214px;
height: 300px;
// height: 300px;
height: 400px;
margin-top: 59px;
img {
margin-left: 40px;
}
// .leftNotification-bottom {
// width: 207px;
// height: auto;
// text-align: center;
// margin-left: 15px;
// div:nth-child(1) {
// font-family: SourceHanSansCN-Regular;
// font-size: 22px;
// font-weight: normal;
// font-stretch: normal;
// letter-spacing: 1px;
// color: #b7dfff;
// }
// div:nth-child(2) {
// margin-top: 10px;
// font-family: SourceHanSansCN-Regular;
// font-size: 20px;
// font-weight: normal;
// font-stretch: normal;
// letter-spacing: 1px;
// color: #b7dfff;
// }
// div:nth-child(3) {
// margin-top: 35px;
// font-family: DIN-Medium;
// font-size: 30px;
// font-weight: normal;
// letter-spacing: 2px;
// color: #ffffff;
// span:nth-child(1) {
// color: #7dfa9f;
// }
// }
// div:nth-child(4) {
// margin-top: 20px;
// font-family: DIN-Medium;
// font-size: 30px;
// font-weight: normal;
// font-stretch: normal;
// letter-spacing: 2px;
// color: #fff36f;
// background: url("~@/assets/privateOrder/general/bg-.png");
// }
// }
.leftNotification-bottom {
width: 207px;
height: auto;
text-align: center;
margin-left: 15px;
div:nth-child(1) {
font-family: SourceHanSansCN-Regular;
font-size: 22px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: #b7dfff;
}
div:nth-child(2) {
margin-top: 10px;
font-family: SourceHanSansCN-Regular;
font-size: 20px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: #b7dfff;
}
div:nth-child(3) {
margin-top: 35px;
font-family: DIN-Medium;
font-size: 30px;
font-weight: normal;
letter-spacing: 2px;
color: #ffffff;
span:nth-child(1) {
color: #7dfa9f;
// margin-top: 40px;
margin-top: 85px;
.bug-number {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
div:nth-child(1) {
font-family: SourceHanSansCN-Regular;
// font-size: 33px;
font-size: 45px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: #b7dfff;
}
div:nth-child(2) {
margin-top: 20px;
font-family: PangMenZhengDao-3;
// font-size: 30px;
font-size: 42px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 2px;
font-style: italic;
color: #fff36f;
}
}
div:nth-child(4) {
margin-top: 20px;
font-family: DIN-Medium;
font-size: 30px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 2px;
color: #fff36f;
background: url("~@/assets/privateOrder/general/bg-年度通报占比.png");
}
}
}
@ -829,31 +1132,44 @@ export default {
height: 385px;
margin: 30px 0 0 30px;
background: url("~@/assets/privateOrder/general/first/通报完成情况-border.png");
// .table_title {
// height: 70px;
// width: 100%;
// display: flex;
// align-items: center;
// font-family: SourceHanSansCN-Regular;
// font-size: 26px;
// color: #b7dfff;
// margin-bottom: 5px;
// .title_one {
// margin-left: 134px;
// }
// .title_two {
// margin-left: 16px;
// }
// .title_three {
// margin-left: 17px;
// }
// }
.table_title {
height: 70px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 80px;
font-family: SourceHanSansCN-Regular;
font-size: 26px;
color: #b7dfff;
margin-bottom: 5px;
.title_one {
margin-left: 134px;
}
.title_two {
margin-left: 16px;
}
.title_three {
margin-left: 17px;
}
}
.table_item {
display: flex;
width: 472px;
height: 60px;
margin-left: 9px;
padding-left: 25px;
// margin-left: 9px;
// padding-left: 25px;
padding: 0 100px 0 110px;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
@ -862,31 +1178,32 @@ export default {
font-family: SourceHanSansCN-Bold;
font-size: 26px;
color: #b7dfff;
width: 104px;
}
.item_two {
flex: 1;
text-align: center;
font-family: DIN-Medium;
font-size: 30px;
color: #ffffff;
// width: 104px;
}
// .item_two {
// flex: 1;
// text-align: center;
// font-family: DIN-Medium;
// font-size: 30px;
// color: #ffffff;
// }
.item_three {
flex: 1;
text-align: center;
font-family: DIN-Medium;
font-size: 30px;
line-height: 75px;
color: #7dfa9f;
}
.item_four {
flex: 1;
text-align: center;
// text-align: center;
text-align: right;
font-family: DIN-Medium;
font-size: 30px;
line-height: 75px;
color: #7dfa9f;
}
// .item_four {
// flex: 1;
// text-align: center;
// font-family: DIN-Medium;
// font-size: 30px;
// line-height: 75px;
// color: #7dfa9f;
// }
}
}
}

@ -0,0 +1,32 @@
<template>
<div>
<iframe :src="iframeSrc" id="supplyChain" allowtransparency="true" style="background-color: rgba(0, 24, 50, 0.5);"></iframe>
</div>
</template>
<script>
import { singleLoginTwo } from "@/api/login.js"
export default {
data() {
return {
iframeSrc:"",
}
},
mounted(){
this.getToken();
},
methods:{
getToken() {
singleLoginTwo().then(res=>{
console.log(res);
this.iframeSrc = res.data;
})
}
},
}
</script>
<style lang="scss" scoped>
#supplyChain {
width: $ScreenWidth;
height: $iframeHeight;
}
</style>
Loading…
Cancel
Save