杜函宇 1 year ago
commit cdac35518f

@ -1,129 +1,247 @@
import request from '@/utils/request.js'
import request from "@/utils/request.js";
// 网络安全官
export function listSafetyadmin(query) {
return request({
url: '/zongzhi/safetyadmin/list',
method: 'get',
params: query
})
url: "/zongzhi/safetyadmin/list",
method: "get",
params: query,
});
}
export function listTown(query) {
return request({
url: "/zongzhi/town/list",
method: "get",
params: query,
});
}
// 查询网评员列表
export function listCommentator(query) {
return request({
url: '/zongzhi/commentator/list',
method: 'get',
params: query
})
url: "/zongzhi/commentator/list",
method: "get",
params: query,
});
}
// 查询网络平台列表
export function listPingtai(query) {
return request({
url: '/zongzhi/pingtai/list',
method: 'get',
params: query
})
url: "/zongzhi/pingtai/list",
method: "get",
params: query,
});
}
// 查询网络安全支持单位列表
export function listNetSafetyZcUnit(query) {
return request({
url: '/zongzhi/supportunit/list',
method: 'get',
params: query
})
url: "/zongzhi/supportunit/list",
method: "get",
params: query,
});
}
// 查询网络民情责任人列表
export function listPrincipal(query) {
return request({
url: '/zongzhi/principal/list',
method: 'get',
params: query
})
url: "/zongzhi/principal/list",
method: "get",
params: query,
});
}
// 查询网络文明自愿者列表
export function listVolunteer(query) {
return request({
url: '/zongzhi/volunteer/list',
method: 'get',
params: query
})
url: "/zongzhi/volunteer/list",
method: "get",
params: query,
});
}
// 查询网络文章列表
export function listArticle(query) {
return request({
url: '/zongzhi/article/list',
method: 'get',
params: query
})
url: "/zongzhi/article/list",
method: "get",
params: query,
});
}
// 查询重点企业名录列表
export function listEnterprise(query) {
return request({
url: '/zongzhi/enterprise/list',
method: 'get',
params: query
})
url: "/zongzhi/enterprise/list",
method: "get",
params: query,
});
}
// 查询重点领域监管列表
export function listDomain(query) {
return request({
url: '/zongzhi/domain/list',
method: 'get',
params: query
})
url: "/zongzhi/domain/list",
method: "get",
params: query,
});
}
// 查询重点工作项目列表
export function listWork(query) {
return request({
url: '/zongzhi/work/list',
method: 'get',
params: query
})
url: "/zongzhi/work/list",
method: "get",
params: query,
});
}
// 查询工作动态列表
// 查询工作动态列表 dongtai/list
export function listDongtai(query) {
return request({
url: '/zongzhi/dongtai/list',
method: 'get',
params: query
})
url: "/zongzhi/managescreen/workdynamics",
method: "get",
params: query,
});
}
// 查询等保系统列表
export function listSystem(query) {
return request({
url: '/zongzhi/system/list',
method: 'get',
params: query
})
url: "/zongzhi/system/list",
method: "get",
params: query,
});
}
// 查询等保单位列表
export function listUnit(query) {
return request({
url: '/zongzhi/dengbaounit/list',
method: 'get',
params: query
})
url: "/zongzhi/dengbaounit/list",
method: "get",
params: query,
});
}
// 查询政府网站列表
export function listWeb(query) {
return request({
url: '/zongzhi/web/list',
method: 'get',
params: query
})
url: "/zongzhi/web/list",
method: "get",
params: query,
});
}
// 查询IDC单位列表
export function listIDCunit(query) {
return request({
url: '/zongzhi/idcunit/list',
method: 'get',
params: query
})
url: "/zongzhi/idcunit/list",
method: "get",
params: query,
});
}
// 查询数据来源列表
export function listSource(query) {
return request({
url: "/zongzhi/source/list",
method: "get",
params: query,
});
}
export function saftyscreenSupervise() {
return request({
url: "/zongzhi/saftyscreen/supervise",
method: "get",
});
}
// 受攻击IPTop5
export function saftyscreenUnattack() {
return request({
url: "/zongzhi/saftyscreen/unattack",
method: "get",
});
}
// 安全检测数据统计
export function saftyscreenSafety() {
return request({
url: "/zongzhi/saftyscreen/safety",
method: "get",
});
}
// 查询安全检测列表
export function listDetection(query) {
return request({
url: "/zongzhi/detection/list",
method: "get",
params: query,
});
}
// 网络平台
export function listPlatform(query) {
return request({
url: "/zongzhi/pingtai/list",
method: "get",
params: query,
});
}
// 查询安全检测详细
export function getDetection(id) {
return request({
url: "/zongzhi/detection/" + id,
method: "get",
});
}
// 查询安全隐患列表
export function listDanger(query) {
return request({
url: "/zongzhi/danger/list",
method: "get",
params: query,
});
}
// 清朗专项行动动态
export function zhuanxiang(query) {
return request({
url: "/zongzhi/zhuanxiang/list",
method: "get",
params: query,
});
}
// 查询安全隐患详细
export function getDanger(id) {
return request({
url: "/zongzhi/danger/" + id,
method: "get",
});
}
// 查询通报列表
export function listTb(query) {
return request({
url: "/zongzhi/tb/list",
method: "get",
params: query,
});
}
// 查询通报详细
export function getTb(id) {
return request({
url: "/zongzhi/tb/" + id,
method: "get",
});
}
// 举报总数和处置率
export function networkreport() {
return request({
url: "/zongzhi/managescreen/networkreport",
method: "get",
});
}
// 清朗专项行动数据统计 /zongzhi/managescreen/action
export function managescreen() {
return request({
url: "/zongzhi/managescreen/action",
method: "get",
});
}

@ -18,7 +18,7 @@
></el-table-column>
<el-table-column v-else :label="item.name" :show-overflow-tooltip="true">
<template scope="scope">
{{ $filterDict(item.dictType,scope.row[item.value]) }}
{{ $filterDict(item.dictType,scope.row[item.value],item.dictType == 'town' ? true : false) }}
</template>
</el-table-column>
</el-table>

@ -1,24 +1,41 @@
/*
* @Descripttion:
* @version:
* @Author: JC9527
* @Date: 2023-08-21 08:54:24
* @LastEditors: JC9527
* @LastEditTime: 2023-08-21 15:29:23
*/
import { getDictList } from '@/api/zongzhi/common.js'
import { listTown } from '@/api/zongzhi/st.js'
const dict = {
state: {
dictObject: {}
dictObject: {},
townList: []
},
mutations: {
SET_DICT: (state, dict) => {
state.dictObject = dict
},
SET_TOWN: (state, town) => {
state.townList = town
}
},
actions: {
getDictType({ commit }) {
return new Promise((resolve, reject) => {
const query = {
list: 'sys_user_sex,tc_net_sx,tc_yq_media,tc_enter_type,tc_inlet_yewu,tc_item_type,tc_yq_type,tc_event_type,tc_cy_type,tc_yq_state'
list: 'sys_user_sex,tc_net_sx,tc_yq_media,tc_enter_type,tc_inlet_yewu,tc_item_type,tc_net_safety_level,tc_yes_no,tc_unit_type,tc_tmt_type,tc_db_steam_state,tc_attack_type,tc_yh_level,tc_yh_source,tc_yq_type,tc_event_type,tc_cy_type,tc_yq_state'
}
getDictList(query)
.then((res) => {
// console.log(res)
commit('SET_DICT', res.data)
getownList().then((town) => {
commit('SET_TOWN', town)
resolve()
})
})
.catch((error) => {
reject(error)
})
@ -26,5 +43,20 @@ const dict = {
}
}
}
// 获取各镇/村
function getownList() {
return new Promise((resolve, reject) => {
const lsit = []
listTown({ pageNum: 1, pageSize: 200 })
.then((res) => {
res.rows.forEach((item) => {
lsit.push({ value: item.id, label: item.name })
})
resolve(lsit)
})
.catch((error) => {
reject(error)
})
})
}
export default dict

@ -1,13 +1,26 @@
import store from '@/store'
export function filterDict(type, value) {
export function filterDict(type, value, isTown = false) {
if (!value) return
if (isTown) {
return filterTown(value)
} else {
const dict = store.getters.dictObject
// console.log(dict, type, value)
// debugger
const result = dict[type].filter((item) => item.dictValue == value)
if (result.length > 0) {
return result[0].dictLabel
} else {
return '未匹配到'
}
}
}
export function filterTown(id) {
const townList = store.state.dict.townList
const result = townList.filter((item) => item.value == id)
if (result.length > 0) {
return result[0].label
} else {
return '未匹配到'
}
}

@ -3,7 +3,7 @@
* Copyright (c) 2019 safesoft
*/
const baseURL = process.env.VUE_APP_BASE_API
const baseURL = process.env.VUE_APP_BASE_API2
// 日期格式化
export function parseTime(time, pattern) {
@ -110,7 +110,7 @@ export function selectDictLabels(datas, value, separator) {
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + '/common/download?fileName=' + encodeURI(fileName) + '&delete=' + true
window.location.href = baseURL + '/zongzhi/common/download?fileName=' + encodeURI(fileName) + '&delete=' + true
}
// 字符串格式化(%s )

@ -1,8 +1,8 @@
<!--
* @Author: lough
* @Date: 2021-12-21 14:12:54
* @LastEditors: lough
* @LastEditTime: 2022-09-08 10:26:49
* @LastEditors: JC9527
* @LastEditTime: 2023-08-21 16:54:37
* @Description:
-->
<template>
@ -30,7 +30,7 @@
</template>
<script>
import { getreportNum } from '@/api/common'
import { networkreport } from '@/api/zongzhi/st.js'
export default {
data() {
return {
@ -39,12 +39,18 @@ export default {
}
},
mounted() {
this.reportTotalCount = 45
this.completedPercent = 100
// this.reportTotalCount = 45
// this.completedPercent = 100
// getreportNum().then(res => {
// this.reportTotalCount = res.data.reportTotalCount
// this.completedPercent = res.data.completedPercent
// })
networkreport().then(res => {
this.reportTotalCount = res.data.count
this.completedPercent = res.data.handle
});
// console.log(data)
}
}

@ -3,7 +3,7 @@
* @Author: kery.chen
* @Description: 总体概览左侧
* @Date: 2021-11-30 11:08:50
* @LastEditTime: 2022-08-22 17:25:45
* @LastEditTime: 2023-08-21 16:01:49
* @FilePath : \\tcingiocpro\\src\\views\\privateOrder\\ecosphere\\components\\componentLeft.vue
-->
<template>
@ -155,8 +155,9 @@
@click.stop="dynamicClick(item)"
>
<div class="item_txt">
<span :data-obj="item.materialsName">
{{ item.materialsName }}
<!-- materialsName -->
<span :data-obj="item.name">
{{ item.name }}
</span>
</div>
<div class="item_bottom">
@ -201,7 +202,7 @@
@mouseover="zoologyMouseOver(idx)"
@mouseleave="zoologyMouseLeave"
@click="
networkPlatformClick(item.name);
networkPlatformClick(item.name,item.type);
currentIndex = idx;
"
>
@ -482,7 +483,7 @@
<script>
import vueSeamlessScroll from 'vue-seamless-scroll'
import ModuleTitle from '../../common/ModuleTitle.vue'
import { listEnterprise, listDomain, listWork, listDongtai } from '@/api/zongzhi/st.js'
import { listEnterprise, listDomain, listWork, listDongtai, listPlatform } from '@/api/zongzhi/st.js'
import {
getBilibiliData,
getRedBookData,
@ -534,24 +535,28 @@ export default {
name: '网站',
num: 0,
subList: [],
type:1,
url: require('@/assets/ecosphere/icon-网站.png')
},
{
name: '抖音',
num: 0,
subList: [],
type:2,
url: require('@/assets/ecosphere/icon-抖音.png')
},
{
name: '微信',
num: 0,
subList: [],
type:3,
url: require('@/assets/ecosphere/icon-微信.png')
},
{
name: '微博',
num: 0,
subList: [],
type:4,
url: require('@/assets/ecosphere/icon微博.png')
},
@ -559,24 +564,28 @@ export default {
name: '今日头条',
num: 0,
subList: [],
type:5,
url: require('@/assets/ecosphere/icon-头条.png')
},
{
name: '快手',
num: 0,
subList: [],
type:6,
url: require('@/assets/ecosphere/icon-快手.png')
},
{
name: 'B站',
num: 0,
subList: [],
type:7,
url: require('@/assets/ecosphere/icon-b站.png')
},
{
name: '小红书',
num: 0,
subList: [],
type:8,
url: require('@/assets/ecosphere/icon-小红书.png')
}
],
@ -634,16 +643,17 @@ export default {
methods: {
//
getDynamicData() {
listDongtai(this.dtParams).then(res => {
this.dynamicList = res.rows
this.dtTotal = res.total
listDongtai().then(res => {
console.log(res)
this.dynamicList = res.data
// this.dtTotal = res.total
})
// const tableObject = require('./data.json')
// this.dynamicList = tableObject['']
},
//
networkPlatformClick(val) {
async networkPlatformClick(val,type) {
this.currentPage = 1
this.pageSize = 10
this.dialogTitle = val
@ -653,9 +663,16 @@ export default {
this.tableHeader = ['账号ID', 'URL']
this.zoologyWidth = '1000px'
this.tableData = []
this.tableData = [
{ 账号ID: 1, URL: 'https://www.bilibili.com/' }
]
// this.tableData = [
// { ID: 1, URL: 'https://www.bilibili.com/' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['URL'] = item.dns
this.tableData.push(obj)
})
// res['T_DATA_BILIBILI[]'].forEach((item) => {
// this.tableData.push({ ID: item.account_id, URL: item.url })
// })
@ -666,12 +683,19 @@ export default {
this.tableHeader = ['账号ID', 'URL']
this.zoologyWidth = '1000px'
this.tableData = []
this.tableData = [
{ 账号ID: 1, URL: 'https://www.xiaohongshu.com/explore' }
]
// this.tableData = [
// { ID: 1, URL: 'https://www.xiaohongshu.com/explore' }
// ]
// res['T_DATA_RED_BOOK[]'].forEach((item) => {
// this.tableData.push({ ID: item.account_id, URL: item.url })
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['URL'] = item.dns
this.tableData.push(obj)
})
this.networkPlatformData()
// })
} else if (val === '今日头条') {
@ -679,9 +703,16 @@ export default {
this.tableHeader = ['账号ID', '简介']
this.zoologyWidth = '1200px'
this.tableData = []
this.tableData = [
{ 账号ID: 1, 简介: '今日头条是北京字节跳动科技有限公司开发的一款基于数据挖掘的推荐引擎产品为用户推荐信息、提供连接人与信息的服务的产品。由张一鸣于2012年3月创建2012年8月发布第一个版本。' }
]
// this.tableData = [
// { ID: 1, : '2012320128' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['简介'] = item.intro
this.tableData.push(obj)
})
// res['T_DATA_TODAY_HEADLINE[]'].forEach((item) => {
// this.tableData.push({
// ID: item.account_id,
@ -695,9 +726,16 @@ export default {
this.tableHeader = ['账号ID', '简介']
this.zoologyWidth = '1000px'
this.tableData = []
this.tableData = [
{ 账号ID: 1, 简介: '快手是北京快手科技有限公司旗下的产品。快手 [1-2]的前身叫“GIF快手”诞生于2011年3月最初是一款用来制作、分享GIF图片的手机应用。2012年11月快手从纯粹的工具应用转型为短视频社区用于用户记录和分享生产、生活的平台。后来随着智能手机、平板电脑的普及和移动流量成本的下降快手在2015年以后迎来市场' }
]
// this.tableData = [
// { ID: 1, : ' [1-2]GIF20113GIF2012112015' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['简介'] = item.intro
this.tableData.push(obj)
})
// res['T_DATA_QUICK_WORKER[]'].forEach((item) => {
// this.tableData.push({
// ID: item.account_id,
@ -711,9 +749,16 @@ export default {
this.tableHeader = ['账号ID', '行业属性']
this.zoologyWidth = '1000px'
this.tableData = []
this.tableData = [
{ 账号ID: 1, 行业属性: '自媒体' }
]
// this.tableData = [
// { ID: 1, : '' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['行业属性'] = this.getProps(item.props)
this.tableData.push(obj)
})
// res['T_DATA_WECHAT[]'].forEach((item) => {
// this.tableData.push({
// ID: item.account_id,
@ -727,12 +772,21 @@ export default {
this.tableHeader = ['网站名称', '真实IP', '网站域名', '备案许可证号']
this.zoologyWidth = '2000px'
this.tableData = []
this.tableData.push({
网站名称: '百度',
真实IP: '220.181.111.188',
网站域名: 'https://www.xiaohongshu.com/explore',
备案许可证号: '京ICP证030173号',
numOrder: 1
// this.tableData.push({
// : '',
// IP: '220.181.111.188',
// : 'https://www.xiaohongshu.com/explore',
// : 'ICP030173',
// numOrder: 1
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['网站名称'] = item.name
obj['真实IP'] = item.ipAddress
obj['网站域名'] = item.dns
obj['备案许可证号'] = item.licenceNum
this.tableData.push(obj)
})
// res['T_big_screen_website_data[]'].forEach((item) => {
// const startIndex = item.licence_num.indexOf('')
@ -754,10 +808,18 @@ export default {
this.zoologyWidth = '1000px'
this.tableData = []
// res['T_big_screen_weibo_data[]'].forEach((item) => {
this.tableData.push({
账号名称: '大红矛',
认证: '微博原创视频博主',
地区: '北京'
// this.tableData.push({
// : '',
// : '',
// : ''
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号名称'] = item.name
obj['认证'] = item.authentication
obj['地区'] = item.area
this.tableData.push(obj)
})
// })
this.networkPlatformData()
@ -768,16 +830,42 @@ export default {
this.zoologyWidth = '1500px'
this.tableData = []
// res['T_big_screen_tik_tok[]'].forEach((item) => {
this.tableData.push({
账号: '1124693722',
简介: '无',
粉丝数: 25
})
// this.tableData.push({
// : '1124693722',
// : '',
// : 25
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {};
obj['账号'] = item.name;
obj['简介'] = item.intro;
obj['粉丝数'] = item.fansNum;
this.tableData.push(obj)
})
this.tableData.sort((a, b) => b.粉丝数 - a.粉丝数)
this.networkPlatformData()
// })
}
this.networkPlatformData()
},
getProps(props){
switch(props){
case 1:
return '房产';
case 2:
return '汽车';
case 3:
return '自媒体';
case 4:
return '餐饮';
case 5:
return '电子竞技';
case 6:
return '财务'
default :
break;
}
},
networkPlatformData() {
this.total = this.tableData.length

@ -3,7 +3,7 @@
* @Author: kery.chen
* @Description: 总体概览右侧
* @Date: 2021-11-30 11:08:50
* @LastEditTime: 2022-11-15 13:46:59
* @LastEditTime: 2023-08-22 08:57:33
* @FilePath : \\tcingiocpro\\src\\views\\privateOrder\\ecosphere\\components\\componentRight.vue
-->
<template>
@ -162,7 +162,9 @@
window.JSZip = require('jszip')
import { qlzxdtData } from './json'
import { getreportNum } from '@/api/common'
import { zhuanxiang, managescreen } from '@/api/zongzhi/st.js'
import { echartsJump } from '../../../../../public/static/echartsJump'
import { download } from "@/utils/safesoft"
import vueSeamlessScroll from 'vue-seamless-scroll'
import image from '../../../../assets/ecosphere/饼图标注.png'
import ModuleTitle from '../../common/ModuleTitle.vue'
@ -324,8 +326,10 @@ export default {
},
mounted() {
this.qlzxdtList = qlzxdtData
// this.zhuanxiangList()
//
this.reportingProcessTimer()
this.inItPie()
// getreportNum().then(res => {
// this.pieData[0].value = res.data.reportTotalCount - 12
@ -340,6 +344,25 @@ export default {
changeImg(item, index) {
item.index = index
},
//
async zhuanxiangList(){
let res = await zhuanxiang();
let imgArr
let qlzxdtList = JSON.parse(JSON.stringify(res.rows))
this.qlzxdtList = qlzxdtList
for(let i = 0; i < qlzxdtList.length; i++){
imgArr = qlzxdtList[i].zhuanxiangImg
imgArr = imgArr.split(',')
this.qlzxdtList[i].zhuanxiangImg = imgArr
for(let j = 0; j < imgArr.length; j++){
imgArr[j] = process.env.VUE_APP_BASE_API3 + imgArr[j]
}
}
// zhuanxiang().then(res => {
// console.log(this.qlzxdtList)
// })
},
//
inItPie() {
const chartDom = document.getElementById('pie')

@ -66,6 +66,7 @@
</template>
<script>
import { saftyscreenUnattack } from '@/api/zongzhi/st.js'
import { echartsJump } from '../../../../../public/static/echartsJump'
import { getAttackTypeDistribution, getTopIp } from '@/api/common'
export default {
@ -94,31 +95,31 @@ export default {
{ value: 443961, name: '其他' }
],
attackRanking: [
{
total: '10.53.221.176',
num: 1821207,
url: require('@/assets/privateOrder/general/top前三.png')
},
{
total: '10.52.121.112',
num: 1271992,
url: require('@/assets/privateOrder/general/top前三.png')
},
{
total: '10.53.236.147',
num: 1184362,
url: require('@/assets/privateOrder/general/top前三.png')
},
{
total: '10.53.18.231',
num: 1014549,
url: require('@/assets/privateOrder/general/top5-其他.png')
},
{
total: '172.96.100.207',
num: 836344,
url: require('@/assets/privateOrder/general/top5-其他.png')
}
// {
// total: '10.53.221.176',
// num: 1821207,
// url: require('@/assets/privateOrder/general/top.png')
// },
// {
// total: '10.52.121.112',
// num: 1271992,
// url: require('@/assets/privateOrder/general/top.png')
// },
// {
// total: '10.53.236.147',
// num: 1184362,
// url: require('@/assets/privateOrder/general/top.png')
// },
// {
// total: '10.53.18.231',
// num: 1014549,
// url: require('@/assets/privateOrder/general/top5-.png')
// },
// {
// total: '172.96.100.207',
// num: 836344,
// url: require('@/assets/privateOrder/general/top5-.png')
// }
],
controlList: []
// controlList: ['', '', ''] //
@ -142,14 +143,15 @@ export default {
// }
},
mounted() {
this.data = [
{ value: 1, name: '韩国' },
{ value: 80, name: '日本' },
{ value: 90, name: '美国' },
{ value: 20, name: '英国' },
{ value: 50, name: '加拿大' }
]
this.initDistribution()
this.getSaftyscreenUnattack()
// this.data = [
// { value: 1, name: '' },
// { value: 80, name: '' },
// { value: 90, name: '' },
// { value: 20, name: '' },
// { value: 50, name: '' }
// ]
// this.initDistribution()
// getAttackTypeDistribution().then((res) => {
// this.data = []
// res['T_ATTACK_TYPE_DISTRIBUTION[]'].forEach((ele) => {
@ -167,6 +169,25 @@ export default {
// })
},
methods: {
/**
* TOP5
*/
getSaftyscreenUnattack() {
saftyscreenUnattack().then(res => {
console.log(res.data)
this.attackRanking = res.data.map((item, index) => {
return {
name: item.attackIpRegion,
value: item.pt,
total: item.attackedIp,
num: item.count,
url: index + 1 <= 3 ? require('@/assets/privateOrder/general/top前三.png') : require('@/assets/privateOrder/general/top5-其他.png')
}
})
this.initDistribution()
// console.log(this.attackRanking)
})
},
//
initDistribution() {
const chartDom = document.getElementById('section-pie')
@ -198,7 +219,7 @@ export default {
formatter: (name) => {
let total = 0
let target
this.data.forEach((v) => {
this.attackRanking.forEach((v) => {
total += Number(v.value)
if (v.name === name) {
target = v.value
@ -247,7 +268,7 @@ export default {
labelLine: {
show: false
},
data: this.data
data: this.attackRanking
}
]
}

@ -84,6 +84,7 @@
<div class="monitor-detail">
<div
v-for="(item, index) in securityMonitor.detail"
v-show="index<3"
:key="index"
class="monitor-detail-item"
>
@ -111,9 +112,9 @@
:data-obj="'安全监测'"
@click="getAttackSource(item.id)"
>
<span :data-obj="'安全监测'">{{ item.date }}</span>
<span :data-obj="'安全监测'">{{ item.ip }}</span>
<span :data-obj="'安全监测'" :title="item.type">{{ item.type }}</span>
<span>{{ item.attackTime }}</span>
<span>{{ item.attackedIp }}</span>
<span>{{ $filterDict('tc_attack_type',item.attackType) }}</span>
</div>
</vue-seamless-scroll>
</div>
@ -177,7 +178,7 @@
<div class="dialog_little_title">攻击类型</div>
</el-col>
<el-col :span="18">
<div class="dialog_little_ctn">{{ tableDataPop.attackType }}</div>
<div class="dialog_little_ctn">{{ $filterDict('tc_attack_type',tableDataPop.attackType) }}</div>
</el-col>
</el-row>
<el-row>
@ -208,26 +209,26 @@
</div>
</el-col>
</el-row>
<el-row>
<!-- <el-row>
<el-col :span="6">
<div class="dialog_little_title">受攻击目标类型</div>
</el-col>
<el-col :span="18">
<div class="dialog_little_ctn">{{ tableDataPop.attackedType }}</div>
<div class="dialog_little_ctn">{{ $filterDict('tc_attack_type',tableDataPop.attackType) }}</div>
</el-col>
</el-row>
</el-row> -->
<el-row>
<el-col :span="6">
<div class="dialog_little_title">网站安全等级</div>
</el-col>
<el-col :span="6">
<div class="dialog_little_ctn">{{ tableDataPop.webLevel }}</div>
<div class="dialog_little_ctn">{{ $filterDict('tc_net_safety_level',tableDataPop.level) }}</div>
</el-col>
<el-col :span="6">
<div class="dialog_little_title">联系电话</div>
</el-col>
<el-col :span="6">
<div class="dialog_little_ctn">{{ tableDataPop.contactTel }}</div>
<div class="dialog_little_ctn">{{ tableDataPop.phoneNum }}</div>
</el-col>
</el-row>
<el-row>
@ -236,14 +237,14 @@
</el-col>
<el-col :span="6">
<div class="dialog_little_ctn">
{{ tableDataPop.subordinateDept }}
{{ tableDataPop.affUnit }}
</div>
</el-col>
<el-col :span="6">
<div class="dialog_little_title">联系人</div>
</el-col>
<el-col :span="6">
<div class="dialog_little_ctn">{{ tableDataPop.contactName }}</div>
<div class="dialog_little_ctn">{{ tableDataPop.linkMan }}</div>
</el-col>
</el-row>
</template>
@ -271,7 +272,7 @@
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getAllList"
@pagination="showAttack"
/>
</div>
</template>
@ -293,7 +294,9 @@ import vueSeamlessScroll from 'vue-seamless-scroll'
import ModuleTitle from '../../common/ModuleTitle.vue'
import attackSituation from './attackSituation.vue'
import ExcelTable from '@/components/ExcelTable'
import { listSystem, listUnit, listWeb, listIDCunit } from '@/api/zongzhi/st.js'
import { listSystem, listUnit, listWeb, listIDCunit, listSource, saftyscreenSupervise, saftyscreenSafety,
listDetection, getDetection
} from '@/api/zongzhi/st.js'
import {
yingTanZhen,
yingTanZhenKeyValue,
@ -336,10 +339,15 @@ export default {
*/
queryParams: {
pageNum: 1,
pageSize: 1
pageSize: 10
}, //
total: 0, //
time: null,
checkTotal: 0,
checkParams: {
pageNum: 1,
pageSize: 10
},
//
dialogWidth: 0,
dialogStatus: false,
@ -388,100 +396,100 @@ export default {
superviseObject: [
{
title: '政府网站',
num: 446,
num: 0,
className: 'item1',
url: require('@/assets/privateOrder/general/icon-政府网站.png')
},
{
title: '监管单位',
num: 2098,
num: 0,
className: 'item2',
url: require('@/assets/privateOrder/general/icon-监管单位.png')
},
{
title: '网站监测',
num: 2658,
num: 0,
className: 'item3',
url: require('@/assets/privateOrder/general/icon-网站监测.png')
},
{
title: 'IDC单位',
num: 1,
num: 0,
className: 'item4',
url: require('@/assets/privateOrder/general/icon-IDC单位.png')
},
{
title: '等保系统',
num: 181,
num: 0,
className: 'item5',
url: require('@/assets/privateOrder/general/icon-等保系统.png')
},
{
title: '等保单位',
num: 109,
num: 0,
className: 'item6',
url: require('@/assets/privateOrder/general/icon-等保单位.png')
}
],
securityMonitor: {
url: require('@/assets/privateOrder/general/icon-网络攻击.png'),
title: '网络攻击()',
total: 3225.5,
title: '网络攻击()',
total: 0,
detail: [
{
title: '入侵攻击',
num: 1455.92
},
{
title: '恶意扫描',
num: 2325.24
},
{
title: '僵木蠕病毒',
num: 796.152
}
// {
// title: '',
// num: 1455.92
// },
// {
// title: '',
// num: 2325.24
// },
// {
// title: '',
// num: 796.152
// }
]
},
tableDataPop: {
id: 1,
attackTime: '2023-07-30',
sourceIp: '192.168.0.114',
attackType: '网络爬虫',
attackIpRegion: '美国',
attackedIp: '192.168.5.0',
attackedIpRegion: '太仓',
attackedType: '网络爬虫',
webLevel: '1级别',
contactTel: '18703885598',
subordinateDept: '网络安全部',
contactName: '张三'
// id: 1,
// attackTime: '2023-07-30',
// sourceIp: '192.168.0.114',
// attackType: '',
// attackIpRegion: '',
// attackedIp: '192.168.5.0',
// attackedIpRegion: '',
// attackedType: '',
// webLevel: '1',
// contactTel: '18703885598',
// subordinateDept: '',
// contactName: ''
},
tableData: [
{
date: '2022-02-13',
ip: '荷兰/178.128.242.134',
type: '挖矿'
},
{
date: '2022-02-13',
ip: '荷兰/178.128.242.134',
type: '挖矿'
},
{
date: '2022-02-13',
ip: '杭州市/60.190.232.14',
type: '扫描行为'
},
{
date: '2022-02-13',
ip: '荷兰/178.128.242.134',
type: '挖矿'
},
{
date: '2022-02-13',
ip: '荷兰/178.128.242.134',
type: '挖矿'
}
// {
// date: '2022-02-13',
// ip: '/178.128.242.134',
// type: ''
// },
// {
// date: '2022-02-13',
// ip: '/178.128.242.134',
// type: ''
// },
// {
// date: '2022-02-13',
// ip: '/60.190.232.14',
// type: ''
// },
// {
// date: '2022-02-13',
// ip: '/178.128.242.134',
// type: ''
// },
// {
// date: '2022-02-13',
// ip: '/178.128.242.134',
// type: ''
// }
],
excelData: null,
excelDataHeader: null
@ -505,9 +513,21 @@ export default {
destroyed() {
clearInterval(this.attackTime) //
clearInterval(this.tableTime)
clearInterval(this.time)
},
mounted() {
this.changeBtn() //
this.getSaftyscreenSupervise()
this.getSaftyscreenSafety()
this.getListDetection()
this.time = setInterval(() => { //
if (this.tableData.length >= this.checkTotal) {
clearInterval(this.time)
} else {
this.checkParams.pageNum = this.checkParams.pageNum + 1
this.getListDetection()
}
}, 6000)
// this.getDataSource() //
//
// getLatest().then((res) => {
@ -565,72 +585,157 @@ export default {
},
async getAttackSource(id) {
this.dialogWidth = '1000px'
// await this.AttackClick(id)
this.dialogStatus = true
getDetection(id).then(res => {
this.tableDataPop = res.data
this.dialogType = '安全监测'
this.dialogStatus = true
})
// await this.AttackClick(id)
},
showAttack(item = '安全监测', total) {
this.dialogType = item
if (item === '等保系统') {
this.dialogWidth = '4000px'
/**
* 安全监管List
*/
getListDetection() {
listDetection(this.checkParams).then(res => {
this.tableData = [...this.tableData, ...res.rows]
this.checkTotal = res.total
})
},
/**
* 安全监测攻击类型统计
*/
getSaftyscreenSafety() {
saftyscreenSafety().then(res => {
this.securityMonitor.detail = res.data.list.map((item, index) => {
this.securityMonitor.total = this.securityMonitor.total + item.count
return {
title: this.$filterDict('tc_attack_type', item.attackType),
num: item.count
}
})
})
},
/**
* 监管对象各类别统计量
*/
getSaftyscreenSupervise() {
saftyscreenSupervise().then(res => {
// this.superviseObject[4].num = res.data.
res.data.forEach(item => {
this.superviseObject.forEach(it => {
if (item.name == it.title) {
it.num = item.count
}
})
})
console.log(res, 'aaa')
})
},
/**
* 表格参数重置
* */
reset() {
this.total = 0
this.queryParams = {
pageNum: 1,
pageSize: 10
}
this.excelData = []
this.excelDataHeader = []
},
/**
* 等保系统
*/
getDbSteam() {
listSystem(this.queryParams).then(res => {
this.excelData = res.rows
this.excelDataHeader = dbxtKeyValue
this.total = res.total
this.dialogStatus = true
})
},
/**
* 等保单位
*/
getDbUnit() {
listUnit(this.queryParams).then(res => {
this.excelData = res.rows
this.excelDataHeader = dbdwKeyValue
this.total = res.total
})
},
/**
* 政府网站
*/
getZfWeb() {
listWeb(this.queryParams).then(res => {
this.excelData = res.rows
this.excelDataHeader = zfdwKeyValue
this.total = res.total
})
},
/**
* IDC单位
*/
getIdcUnit() {
listIDCunit(this.queryParams).then(res => {
this.excelData = res.rows
this.excelDataHeader = IDCKeyValue
this.total = res.total
})
},
/**
* 监管单位 || 网站监测 || 系统监测
*/
getJgUnit() {
listSource(this.queryParams).then(res => {
this.excelData = res.rows
this.excelDataHeader = xitongjianceKeyValue
this.total = res.total
})
},
showAttack(item = '安全监测', total) {
if (typeof item === 'object') {
//
} else {
this.reset()
this.dialogType = item
}
// this.tableTotal = total //
// this.dialogStatus = false
// setTimeout(() => {
// if (item === '') {
// this.dialogWidth = '1800px'
// this.excelData = yingTanZhen
// this.excelDataHeader = yingTanZhenKeyValue
// }
// if (item === '' || item === '') {
// this.dialogWidth = '2100px'
// this.excelData = xitongjiance
// this.excelDataHeader = xitongjianceKeyValue
// }
// if (item === '') {
// this.dialogWidth = '2100px'
// this.excelData = xitongjiance
// this.excelDataHeader = xitongjianceKeyValue
// }
// if (item === 'IDC') {
// this.dialogWidth = '1800px'
// this.excelData = IDC
// this.excelDataHeader = IDCKeyValue
// }
// if (item === '') {
// this.dialogWidth = '3300px'
// this.excelData = dbdw
// this.excelDataHeader = dbdwKeyValue
// }
// if (item === '') {
// this.dialogWidth = '4000px'
// listSystem().then(res => {
// this.excelData = res.rows
// this.excelDataHeader = dbxtKeyValue
// this.dialogStatus = true
// })
// }
// if (item === '') {
// this.dialogWidth = '1800px'
// this.excelData = zfdw
// this.excelDataHeader = zfdwKeyValue
// }
// if (item === '') {
// this.dialogWidth = '1800px'
// this.excelData = rtz
// this.excelDataHeader = rtzKeyValue
// }
// this.dialogType = item
// if (item.target?.dataset.obj) {
// this.dialogType = item.target.dataset.obj
// }
// }, 0)
if (this.dialogType === '等保系统') {
this.dialogWidth = '4000px'
this.getDbSteam()
}
if (this.dialogType === '等保单位') {
this.dialogWidth = '4000px'
this.getDbUnit()
}
if (this.dialogType === '政府网站') {
this.dialogWidth = '1800px'
this.getZfWeb()
}
if (this.dialogType === 'IDC单位') {
this.dialogWidth = '1800px'
this.getIdcUnit()
}
if (this.dialogType === '监管单位' || this.dialogType === '系统监测' || this.dialogType === '网站监测' || this.dialogType === '软探针' || this.dialogType === '硬探针') {
this.dialogWidth = '2100px'
if (this.dialogType === '软探针') {
this.queryParams.type = 4
} else if (this.dialogType === '硬探针') {
this.queryParams.type = 3
} else if (this.dialogType === '监管单位') {
this.queryParams.type = 5
} else if (this.dialogType === '网站监测') {
this.queryParams.type = 6
} else {
this.queryParams.type = 7
}
this.getJgUnit()
}
this.$nextTick(() => {
this.dialogStatus = true
})
},
//
getDataSource() {

@ -101,7 +101,7 @@
</div>
</module-title>
<!-- 最新隐患 -->
<div v-show="dangerCurrentIndex === 0" @click="rowDetails($event)">
<div v-show="dangerCurrentIndex === 0">
<div class="dangerTitle">
<span>单位名称</span>
<span>隐患名称</span>
@ -117,18 +117,17 @@
v-for="(item, idx) in dangerList"
:key="idx"
class="dangerText"
:data-obj="JSON.stringify(item)"
@click="rowDetails(item)"
>
<span :data-obj="JSON.stringify(item)" :title="item.systemName">{{
item.systemName
<span>{{
item.unitName
}}</span>
<span :data-obj="JSON.stringify(item)" :title="item.dangerNmae">{{
item.dangerNmae
}}</span>
<span :data-obj="JSON.stringify(item)">{{ item.grade }}</span>
<span :data-obj="JSON.stringify(item)" :title="item.source">{{
item.source
<span>{{
item.riskName
}}</span>
<span>{{ $filterDict('tc_yh_level',item.level) }}</span>
<span>
{{ $filterDict('tc_yh_source',item.riskSource) }}</span>
</div>
</vue-seamless-scroll>
</div>
@ -149,23 +148,19 @@
v-for="(item, index) in informList"
:key="index"
class="ctn_item"
:data-obj="JSON.stringify(item)"
>
<div
:data-obj="JSON.stringify(item)"
class="item_name"
:title="item.name"
>
{{ item.name }}
{{ item.depName }}
</div>
<div
:data-obj="JSON.stringify(item)"
class="item_ip"
:title="item.domainName"
>
{{ item.domainName }}
</div>
<span :data-obj="JSON.stringify(item)" class="item_num">{{
<span class="item_num">{{
item.status
}}</span>
</div>
@ -242,6 +237,7 @@
</template>
<script>
import { listDanger, getDanger, listTb, getTb } from '@/api/zongzhi/st.js'
import vueSeamlessScroll from 'vue-seamless-scroll'
import ModuleTitle from '../../common/ModuleTitle.vue'
import ReportingStatistics from './ReportingStatistics.vue'
@ -274,6 +270,16 @@ export default {
},
data() {
return {
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10
},
total2: 0,
queryParams2: {
pageNum: 1,
pageSize: 10
},
loading: true,
//
announceCurrentIndex: 0,
@ -347,11 +353,11 @@ export default {
animate: true,
positionTimer: null,
//
dangerList: dangerList,
dangerList: [],
animate2: false,
positionTimer2: null,
//
informList: informList,
informList: [],
dialogStatus: false,
rowDta: {},
dialogDetails: false,
@ -391,10 +397,31 @@ export default {
destroyed() {
clearInterval(this.announceTime)
clearInterval(this.dangerTime)
clearInterval(this.dangerListTime)
clearInterval(this.tbTime)
},
mounted() {
this.dangerChange()
this.getListDanger()
this.dangerListTime = setInterval(() => { //
if (this.dangerList.length >= this.total) {
clearInterval(this.dangerListTime)
} else {
this.queryParams.pageNum = this.queryParams.pageNum + 1
this.getListDanger()
}
}, 6000)
this.getlistTb()
this.tbTime = setInterval(() => { //
if (this.informList.length >= this.total2) {
clearInterval(this.tbTime)
} else {
this.queryParams2.pageNum = this.queryParams2.pageNum + 1
this.getlistTb()
}
}, 6000)
// this.announceChange()
// this.dangerChange()
// getSafeHazardSatistic().then((res) => {
// if (res['T_HAZARD_SATISTIC[]']) {
// this.safetyList = []
@ -414,6 +441,25 @@ export default {
// })
},
methods: {
/**
* 最新隐患
*/
getListDanger() {
listDanger(this.queryParams).then(res => {
this.dangerList = [...this.dangerList, ...res.rows]
this.total = res.total
})
},
/**
* 通报处置
*/
getlistTb() {
listTb(this.queryParams2).then(res => {
console.log(res, 'www')
this.informList = [...this.informList, ...res.rows]
this.total2 = res.total
})
},
//
mouseOver(status) {
if (status === 'danger') {

@ -10,16 +10,17 @@
// IDC数据
const IDCKeyValue = [
{
key: 'IDC名称',
value: 'name'
name: 'IDC名称',
value: 'unitName'
},
{
key: '所属区域',
value: 'region'
name: '所属区域',
value: 'areaId',
dictType: 'town'
},
{
key: 'IP段信息',
value: 'IDCmsg'
name: 'IP段信息',
value: 'ipData'
}
]
const IDC = [
@ -34,61 +35,63 @@ const IDC = [
const dbdwKeyValue = [
{
value: 'unitName', // 单位 名称
key: '单位名称',
name: '单位名称',
width: 350
},
{
value: 'postalCode', // 邮政 编码
key: '邮政编码'
value: 'postCode', // 邮政 编码
name: '邮政编码'
},
{
value: 'province', // 单位地址 —省
key: '单位地址—省'
value: 'unitProvince', // 单位地址 —省
name: '单位地址—省'
},
{
value: 'city', // 单位地址 —市
key: '单位地址—市'
value: 'unitCity', // 单位地址 —市
name: '单位地址—市'
},
{
value: 'county', // 单位地址—区 /县
key: '单位地址—区/县'
value: 'unitCounty', // 单位地址—区 /县
name: '单位地址—区/县'
},
{
value: 'unitAdress',
key: '单位地址'
value: 'unitStreet',
name: '单位地址'
},
{
value: 'regionCode', // 行政区域 代码
key: '行政区域代码'
value: 'areaCode', // 行政区域 代码
name: '行政区域代码'
},
{
value: 'Subordination', // 隶属 关系
key: '隶属关系',
value: 'affiliation', // 隶属 关系
name: '隶属关系',
width: 280
},
{
value: 'UnitType', // 单位 类型
key: '单位类型'
value: 'unitType', // 单位 类型
name: '单位类型',
dictType: 'tc_unit_type'
},
{
value: 'IndustryType', // 行业 类型
key: '行业类型'
value: 'tmtType', // 行业 类型
name: '行业类型',
dictType: 'tc_tmt_type'
},
{
value: 'unitPrincipal', // 单位责任人—姓名
key: '单位责任人—姓名'
value: 'fuzeName', // 单位责任人—姓名
name: '单位责任人—姓名'
},
{
value: 'unitTitle', // 单位责任人—职务/职称
key: '单位责任人—职务'
value: 'fuzeDuty', // 单位责任人—职务/职称
name: '单位责任人—职务'
},
{
value: 'unitPhone', // 单位责任人— 办公电话
key: '单位责任人—办公电话'
value: 'fuzeTel', // 单位责任人— 办公电话
name: '单位责任人—办公电话'
},
{
value: 'unitEmail', // 单位责任人— 电子邮件
key: '单位责任人—电子邮件'
value: 'fuzeEmail', // 单位责任人— 电子邮件
name: '单位责任人—电子邮件'
// width: 300
}
// {
@ -1513,16 +1516,17 @@ const dbdw = [
// 政府网站数据
const zfdwKeyValue = [
{
key: '网址',
name: '网址',
value: 'url'
},
{
key: '资产名称',
value: 'name'
name: '资产名称',
value: 'assetName'
},
{
key: '资产重要等级',
value: 'leave'
name: '资产重要等级',
value: 'assetLevel',
dictType: 'tc_net_safety_level'
}
]
@ -5152,13 +5156,14 @@ const dbxtKeyValue = [
width: 450
},
{
value: 'recordCode',
value: 'beianNum',
name: '备案编号',
width: 300
},
{
value: 'safetyLevel',
name: '信息系统安全保护等级'
name: '信息系统安全保护等级',
dictType: 'tc_net_safety_level'
},
{
value: 'unitName',
@ -5199,7 +5204,8 @@ const dbxtKeyValue = [
},
{
value: 'isRate',
name: '系统是否分级'
name: '系统是否分级',
dictType: 'tc_yes_no'
},
{
value: 'rankTime',
@ -5212,7 +5218,8 @@ const dbxtKeyValue = [
},
{
value: 'isParent',
name: '是否有主管部门'
name: '是否有主管部门',
dictType: 'tc_yes_no'
},
{
value: 'rankReport',
@ -5221,6 +5228,7 @@ const dbxtKeyValue = [
{
value: 'systemState',
name: '系统状态',
dictType: 'tc_db_steam_state',
with: 300
}
]

@ -83,35 +83,37 @@ const yingTanZhen = [
]
const xitongjianceKeyValue = [
{
key: '单位名称',
value: 'unitName',
width:450
name: "单位名称",
value: "affUnit",
width: 450,
},
{
key: '网站/系统名称',
value: 'systemName',
width:450
name: "网站/系统名称",
value: "systeamName",
width: 450,
},
{
key: 'URL',
value: 'URL',
width:450
name: "URL",
value: "url",
width: 450,
},
{
key: 'IP地址',
value: 'IPAddress'
name: "IP地址",
value: "ipAddress",
},
{
key: '采用端口',
value: 'portName'
name: "采用端口",
value: "portName",
},
{
key: '是否关注重点',
value: 'isFocus'
name: "是否关注重点",
value: "isFocus",
dictType: "tc_yes_no",
},
{
key: '等保级别',
value: 'level'
name: "等保级别",
value: "level",
dictType: "tc_net_safety_level",
},
// {
// key: '网站联系人',
@ -133,7 +135,7 @@ const xitongjianceKeyValue = [
// key: '备注',
// value: 'remarks'
// }
]
];
const xitongjiance=[
{
"unitName": "太仓市通源汽车检测服务有限公司",

Loading…
Cancel
Save