CN-1416 fix: 增加一些字符的国际化映射
This commit is contained in:
@@ -47,7 +47,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in categoryList"
|
v-for="item in categoryList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="$t(item.label)"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in eventTypeList"
|
v-for="item in eventTypeList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="$t(item.label)"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -109,9 +109,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { detectionRuleType, storageKey } from '@/utils/constants'
|
import { detectionRuleType, storageKey, detectionUnitList } from '@/utils/constants'
|
||||||
import { switchStatus } from '@/utils/tools'
|
import { switchStatus } from '@/utils/tools'
|
||||||
import { detectionUnitList } from '@/utils/static-data'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GeneralSettings',
|
name: 'GeneralSettings',
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in sourceList"
|
v-for="item in sourceList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="$t(item.label)"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in levelList"
|
v-for="item in levelList"
|
||||||
:key="item.label"
|
:key="item.label"
|
||||||
:label="item.label"
|
:label="$t(item.label)"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -215,8 +215,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import HistoryTopKeys from '@/components/table/detection/HistoryTopKeys'
|
import HistoryTopKeys from '@/components/table/detection/HistoryTopKeys'
|
||||||
import { eventSeverityColor, detectionRuleType } from '@/utils/constants'
|
import { eventSeverityColor, detectionRuleType, detectionUnitList, securityLevel } from '@/utils/constants'
|
||||||
import { detectionUnitList } from '@/utils/static-data'
|
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import { api } from '@/utils/api'
|
import { api } from '@/utils/api'
|
||||||
@@ -372,7 +371,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
initData () {
|
initData () {
|
||||||
this.sourceList = detectionUnitList.sourceList || []
|
this.sourceList = detectionUnitList.sourceList || []
|
||||||
this.levelList = detectionUnitList.levelList || []
|
this.levelList = securityLevel || []
|
||||||
// threshold模式还没确定,所以数据暂时静态数据,后续根据需要修改
|
// threshold模式还没确定,所以数据暂时静态数据,后续根据需要修改
|
||||||
this.conditionList = detectionUnitList.conditionList || []
|
this.conditionList = detectionUnitList.conditionList || []
|
||||||
this.metricList = detectionUnitList.metricList || []
|
this.metricList = detectionUnitList.metricList || []
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -221,27 +221,27 @@ export const dataForDnsTrafficLine = {
|
|||||||
export const dataForNpmEventsHeader = {
|
export const dataForNpmEventsHeader = {
|
||||||
chartData: [
|
chartData: [
|
||||||
{
|
{
|
||||||
eventSeverity: 'critical',
|
eventSeverity: 'overall.critical',
|
||||||
count: '-',
|
count: '-',
|
||||||
index: 0
|
index: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eventSeverity: 'high',
|
eventSeverity: 'overall.high',
|
||||||
count: '-',
|
count: '-',
|
||||||
index: 1
|
index: 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eventSeverity: 'medium',
|
eventSeverity: 'overall.medium',
|
||||||
count: '-',
|
count: '-',
|
||||||
index: 2
|
index: 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eventSeverity: 'low',
|
eventSeverity: 'overall.low',
|
||||||
count: '-',
|
count: '-',
|
||||||
index: 3
|
index: 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
eventSeverity: 'info',
|
eventSeverity: 'overall.info',
|
||||||
count: '-',
|
count: '-',
|
||||||
index: 4
|
index: 4
|
||||||
}
|
}
|
||||||
@@ -430,59 +430,3 @@ export const connectionList = [
|
|||||||
// label: 'OR'
|
// label: 'OR'
|
||||||
// }
|
// }
|
||||||
]
|
]
|
||||||
|
|
||||||
export const detectionUnitList = {
|
|
||||||
statusList: [
|
|
||||||
{ status: 1 },
|
|
||||||
{ status: 0 }
|
|
||||||
],
|
|
||||||
categoryList: [
|
|
||||||
{ value: 'security_event', label: 'Security Event' }/* ,
|
|
||||||
{ value: 'performance_event', label: 'Performance Event' } */
|
|
||||||
],
|
|
||||||
eventTypeList: [
|
|
||||||
{ value: 'Initial Access', label: 'Initial Access' },
|
|
||||||
{ value: 'Command and Control', label: 'Command and Control' },
|
|
||||||
{ value: 'Credential Access', label: 'Credential Access' },
|
|
||||||
{ value: 'Lateral Movement', label: 'Lateral Movement' },
|
|
||||||
{ value: 'Collection', label: 'Collection' },
|
|
||||||
{ value: 'Impact', label: 'Impact' },
|
|
||||||
{ value: 'Anonymity', label: 'Anonymity' },
|
|
||||||
{ value: 'Regulatory Risk', label: 'Regulatory Risk' }
|
|
||||||
],
|
|
||||||
sourceList: [
|
|
||||||
{ value: 'session_record', label: 'Session Record' }
|
|
||||||
],
|
|
||||||
levelList: [
|
|
||||||
{ value: 'critical', label: 'Critical' },
|
|
||||||
{ value: 'high', label: 'High' },
|
|
||||||
{ value: 'medium', label: 'Medium' },
|
|
||||||
{ value: 'low', label: 'Low' },
|
|
||||||
{ value: 'info', label: 'Info' }
|
|
||||||
],
|
|
||||||
metricList: [
|
|
||||||
{ value: 'tcp_lostlen_ratio', label: 'Bits/second' },
|
|
||||||
{ value: 's2c_byte_retrans_ratio', label: 'Packets/second' },
|
|
||||||
{ value: 's2c_byte_retrans_ratio1', label: 'Sessions/second' }
|
|
||||||
],
|
|
||||||
conditionList: [
|
|
||||||
{ value: 'than', label: 'Greater Than' },
|
|
||||||
{ value: 'less', label: 'Greater Less' },
|
|
||||||
{ value: 'equal', label: 'Greater Equal' }
|
|
||||||
],
|
|
||||||
libraryList: [
|
|
||||||
{ value: 'library name', knowledgeId: 7, label: 'Library name' },
|
|
||||||
{ value: 'library name1', knowledgeId: 8, label: 'Library name1' },
|
|
||||||
{ value: 'library name2', knowledgeId: 9, label: 'Library name2' }
|
|
||||||
],
|
|
||||||
intervalList: [
|
|
||||||
{ value: 'hours', label: 'hours' },
|
|
||||||
{ value: 'minutes', label: 'minutes' },
|
|
||||||
{ value: 'seconds', label: 'seconds' }
|
|
||||||
],
|
|
||||||
intervalListCN: [
|
|
||||||
{ value: 'hours', label: '小时' },
|
|
||||||
{ value: 'minutes', label: '分钟' },
|
|
||||||
{ value: 'seconds', label: '秒' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="npm-header-body" v-for="(item, index) in chartData" :key=index>
|
<div class="npm-header-body" v-for="(item, index) in chartData" :key=index>
|
||||||
<div class="npm-header-body-severity">
|
<div class="npm-header-body-severity">
|
||||||
<div class="npm-header-body-severity-icon" :class="item.eventSeverity" :test-id="`icon${index}`"></div>
|
<div class="npm-header-body-severity-icon" :class="item.eventSeverity" :test-id="`icon${index}`"></div>
|
||||||
<div class="npm-header-body-severity-value" :test-id="`severity${index}`">{{item.eventSeverity}}</div>
|
<div class="npm-header-body-severity-value" :test-id="`severity${index}`">{{ $t(item.eventSeverity) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<chart-error v-if="showError" tooltip :content="errorMsg" />
|
<chart-error v-if="showError" tooltip :content="errorMsg" />
|
||||||
<div v-else class="npm-header-body-total" :test-id="`total${index}`">{{item.count}}</div>
|
<div v-else class="npm-header-body-total" :test-id="`total${index}`">{{item.count}}</div>
|
||||||
@@ -45,7 +45,7 @@ export default {
|
|||||||
endTime: this.timeFilter && this.timeFilter.endTime ? getSecond(this.timeFilter.endTime) : '',
|
endTime: this.timeFilter && this.timeFilter.endTime ? getSecond(this.timeFilter.endTime) : '',
|
||||||
type: this.type
|
type: this.type
|
||||||
}
|
}
|
||||||
/*this.toggleLoading(true)
|
/* this.toggleLoading(true)
|
||||||
axios.get(api.npm.events.list, { params: params }).then(response => {
|
axios.get(api.npm.events.list, { params: params }).then(response => {
|
||||||
const res = response.data
|
const res = response.data
|
||||||
if (response.status === 200) {
|
if (response.status === 200) {
|
||||||
@@ -69,7 +69,7 @@ export default {
|
|||||||
this.errorMsg = this.errorMsgHandler(e)
|
this.errorMsg = this.errorMsgHandler(e)
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.toggleLoading(false)
|
this.toggleLoading(false)
|
||||||
})*/
|
}) */
|
||||||
this.toggleLoading(false)
|
this.toggleLoading(false)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -203,7 +203,6 @@ export default {
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// todo 调用接口删除
|
|
||||||
this.toggleLoading(true)
|
this.toggleLoading(true)
|
||||||
axios.delete(api.detection.delete + '?ruleIds=' + ids).then(response => {
|
axios.delete(api.detection.delete + '?ruleIds=' + ids).then(response => {
|
||||||
if (response.status === 200) {
|
if (response.status === 200) {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<div class="drawer-basic-function">
|
<div class="drawer-basic-function">
|
||||||
<div class="detection-drawer-title">{{ $t('config.user.source') }}</div>
|
<div class="detection-drawer-title">{{ $t('config.user.source') }}</div>
|
||||||
<div class="basic-function-value">{{ $_.get(detailData, 'category', '-') || '-' }}</div>
|
<div class="basic-function-value">{{ changeCategory(detailData.category) }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="detailData.ruleType==='indicator_match'">
|
<div v-if="detailData.ruleType==='indicator_match'">
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<div class="detection-drawer-title">{{ $t('detection.level') }}</div>
|
<div class="detection-drawer-title">{{ $t('detection.level') }}</div>
|
||||||
<div class="detection-drawer-title">
|
<div class="detection-drawer-title">
|
||||||
<div class="detection__icon" :style="`background-color: ${eventSeverityColor[detailData.ruleConfigObj.level]}`"></div>
|
<div class="detection__icon" :style="`background-color: ${eventSeverityColor[detailData.ruleConfigObj.level]}`"></div>
|
||||||
<div class="basic-function-value">{{ $_.get(detailData, 'ruleConfigObj.level', '-') || '-' }}</div>
|
<div class="basic-function-value">{{ changeSecurityLevel(detailData.ruleConfigObj) }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -82,11 +82,11 @@
|
|||||||
<div class="detection-drawer-collapse" style="margin: 20px 0">
|
<div class="detection-drawer-collapse" style="margin: 20px 0">
|
||||||
<el-collapse v-model="activeTrigger">
|
<el-collapse v-model="activeTrigger">
|
||||||
<el-collapse-item :title="$t('detection.create.trigger')" name="trigger">
|
<el-collapse-item :title="$t('detection.create.trigger')" name="trigger">
|
||||||
<div class="drawer-collapse-content">
|
<div class="drawer-collapse-content" v-if="language==='en'">
|
||||||
<div class="drawer-collapse-trigger">
|
<div class="drawer-collapse-trigger">
|
||||||
Triggered when conditions occur at least
|
Triggered when conditions occur at least
|
||||||
<span style="color: #046ECA">
|
<span style="color: #046ECA">
|
||||||
{{ $_.get(detailData, 'ruleTriggerObj.atLeast', '-') || '-' }} time
|
{{ atLeast }} {{ times }}
|
||||||
</span> in
|
</span> in
|
||||||
<span style="color: #046ECA">
|
<span style="color: #046ECA">
|
||||||
{{ getNumberFromStr($_.get(detailData, 'ruleTriggerObj.interval', '0')) || '-' }}
|
{{ getNumberFromStr($_.get(detailData, 'ruleTriggerObj.interval', '0')) || '-' }}
|
||||||
@@ -102,6 +102,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="drawer-collapse-content" v-if="language==='cn'">
|
||||||
|
<div class="drawer-collapse-trigger">
|
||||||
|
当条件为
|
||||||
|
<span style="color: #046ECA">
|
||||||
|
{{ getNumberFromStr($_.get(detailData, 'ruleTriggerObj.interval', '0')) || '-' }}
|
||||||
|
{{ changeValueToLabel(detailData.ruleTriggerObj) }}
|
||||||
|
</span>内至少出现
|
||||||
|
<span style="color: #046ECA">
|
||||||
|
{{ $_.get(detailData, 'ruleTriggerObj.atLeast', '-') || '-' }} 次
|
||||||
|
</span>时触发
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="drawer-basic-function">
|
||||||
|
<div class="detection-drawer-title">评估频率</div>
|
||||||
|
<div class="drawer-trigger-minutes">
|
||||||
|
{{ getNumberFromStr($_.get(detailData, 'ruleTriggerObj.resetInterval', '0')) || '-' }}
|
||||||
|
{{ changeValueToLabel(detailData.ruleTriggerObj) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
</div>
|
</div>
|
||||||
@@ -111,7 +131,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { switchStatus, toUpperCaseByString } from '@/utils/tools'
|
import { switchStatus, toUpperCaseByString } from '@/utils/tools'
|
||||||
import { eventSeverityColor } from '@/utils/constants'
|
import { detectionUnitList, eventSeverityColor, securityLevel, storageKey } from '@/utils/constants'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { api } from '@/utils/api'
|
import { api } from '@/utils/api'
|
||||||
|
|
||||||
@@ -128,7 +148,10 @@ export default {
|
|||||||
activeTrigger: 'trigger',
|
activeTrigger: 'trigger',
|
||||||
detailData: {},
|
detailData: {},
|
||||||
eventSeverityColor,
|
eventSeverityColor,
|
||||||
severityList: []
|
severityList: [],
|
||||||
|
language: 'en',
|
||||||
|
atLeast: 0,
|
||||||
|
times: 'time'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -142,6 +165,9 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted () {
|
||||||
|
this.language = localStorage.getItem(storageKey.language) || 'en'
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
switchStatus,
|
switchStatus,
|
||||||
toUpperCaseByString,
|
toUpperCaseByString,
|
||||||
@@ -159,8 +185,13 @@ export default {
|
|||||||
|
|
||||||
axios.get(`${api.detection.detail}/${this.drawerInfo.ruleId}`).then(res => {
|
axios.get(`${api.detection.detail}/${this.drawerInfo.ruleId}`).then(res => {
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
const data = res.data.data
|
this.detailData = res.data.data
|
||||||
this.detailData = data
|
this.atLeast = this.$_.get(this.detailData, 'ruleTriggerObj.atLeast', '-')
|
||||||
|
if (!isNaN(this.atLeast) && this.atLeast > 1) {
|
||||||
|
this.times = 'times'
|
||||||
|
} else {
|
||||||
|
this.times = 'time'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
@@ -168,6 +199,50 @@ export default {
|
|||||||
},
|
},
|
||||||
getNumberFromStr (str) {
|
getNumberFromStr (str) {
|
||||||
return str.match(/\d+(\.\d+)?/g)[0]
|
return str.match(/\d+(\.\d+)?/g)[0]
|
||||||
|
},
|
||||||
|
changeCategory (value) {
|
||||||
|
if (value) {
|
||||||
|
const obj = detectionUnitList.categoryList.find(d => d.value === value)
|
||||||
|
let label = value
|
||||||
|
if (obj) {
|
||||||
|
label = this.$t(obj.label)
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
} else {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeSecurityLevel (config) {
|
||||||
|
if (config) {
|
||||||
|
if (config.level) {
|
||||||
|
const obj = securityLevel.find(d => d.value === config.level)
|
||||||
|
let label = config.level
|
||||||
|
if (obj) {
|
||||||
|
label = this.$t(obj.label)
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
} else {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeValueToLabel (config) {
|
||||||
|
if (config) {
|
||||||
|
if (config.intervalVal) {
|
||||||
|
const obj = detectionUnitList.intervalListCN.find(d => d.value === config.intervalVal)
|
||||||
|
let label = config.intervalVal
|
||||||
|
if (obj) {
|
||||||
|
label = this.$t(obj.label)
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
} else {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<div class="new-filter-content-content">
|
<div class="new-filter-content-content">
|
||||||
<el-checkbox-group v-model="checkCategory" @change="onChangeCategory">
|
<el-checkbox-group v-model="checkCategory" @change="onChangeCategory">
|
||||||
<el-checkbox v-for="item in categoryList" :key="item.name" class="new-filter-content-checkbox" :label="item.name">
|
<el-checkbox v-for="item in categoryList" :key="item.name" class="new-filter-content-checkbox" :label="item.name">
|
||||||
{{ item.name }}
|
{{ item.label }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<div class="new-filter-content-content">
|
<div class="new-filter-content-content">
|
||||||
<el-checkbox-group v-model="checkEventType" @change="onChangeCategory" style="display: flex;flex-direction: column">
|
<el-checkbox-group v-model="checkEventType" @change="onChangeCategory" style="display: flex;flex-direction: column">
|
||||||
<el-checkbox v-for="item in eventTypeList" :key="item.name" class="new-filter-content-checkbox" :label="item.name">
|
<el-checkbox v-for="item in eventTypeList" :key="item.name" class="new-filter-content-checkbox" :label="item.name">
|
||||||
{{ item.name }}
|
{{ item.label }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { api } from '@/utils/api'
|
import { api } from '@/utils/api'
|
||||||
import { switchStatus } from '@/utils/tools'
|
import { switchStatus } from '@/utils/tools'
|
||||||
|
import { detectionUnitList } from '@/utils/constants'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DetectionFilter',
|
name: 'DetectionFilter',
|
||||||
@@ -81,13 +82,25 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.categoryList) {
|
if (data.categoryList) {
|
||||||
this.categoryList = data.categoryList
|
this.categoryList = []
|
||||||
|
data.categoryList.forEach(item => {
|
||||||
|
const obj = detectionUnitList.categoryList.find(d => d.value === item.name)
|
||||||
|
if (obj) {
|
||||||
|
this.categoryList.push({ ...item, label: this.$t(obj.label) })
|
||||||
|
}
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
this.categoryList = []
|
this.categoryList = []
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.eventTypeList) {
|
if (data.eventTypeList) {
|
||||||
this.eventTypeList = data.eventTypeList
|
this.eventTypeList = []
|
||||||
|
data.eventTypeList.forEach(item => {
|
||||||
|
const obj = detectionUnitList.eventTypeList.find(d => d.value === item.name)
|
||||||
|
if (obj) {
|
||||||
|
this.eventTypeList.push({ ...item, label: this.$t(obj.label) })
|
||||||
|
}
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
this.eventTypeList = []
|
this.eventTypeList = []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,12 @@
|
|||||||
{{ $t(switchStatus(scope.row[item.prop])) }}
|
{{ $t(switchStatus(scope.row[item.prop])) }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="item.prop === 'category'">
|
||||||
|
{{ changeCategory(scope.row[item.prop]) }}
|
||||||
|
</template>
|
||||||
|
<template v-else-if="item.prop === 'eventType'">
|
||||||
|
{{ changeEventType(scope.row[item.prop]) }}
|
||||||
|
</template>
|
||||||
<template v-else-if="item.prop === 'description'">
|
<template v-else-if="item.prop === 'description'">
|
||||||
<div style="padding-right: 20px">{{ scope.row[item.prop] }}</div>
|
<div style="padding-right: 20px">{{ scope.row[item.prop] }}</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -78,6 +84,7 @@ import table from '@/mixins/table'
|
|||||||
import { dateFormatByAppearance } from '@/utils/date-util'
|
import { dateFormatByAppearance } from '@/utils/date-util'
|
||||||
import { switchStatus } from '@/utils/tools'
|
import { switchStatus } from '@/utils/tools'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
import { detectionUnitList } from '@/utils/constants'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DetectionTable',
|
name: 'DetectionTable',
|
||||||
@@ -128,15 +135,13 @@ export default {
|
|||||||
show: true
|
show: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// label: this.$t('config.user.createTime'),
|
label: this.$t('detection.create.dimensions'),
|
||||||
label: 'Dimensions',
|
|
||||||
prop: 'dimensions',
|
prop: 'dimensions',
|
||||||
minWidth: 204,
|
minWidth: 204,
|
||||||
show: true
|
show: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// label: this.$t('config.user.createTime'),
|
label: this.$t('detection.library'),
|
||||||
label: 'Library',
|
|
||||||
prop: 'library',
|
prop: 'library',
|
||||||
minWidth: 204,
|
minWidth: 204,
|
||||||
show: true
|
show: true
|
||||||
@@ -166,6 +171,26 @@ export default {
|
|||||||
switchStatus,
|
switchStatus,
|
||||||
rowDoubleClick (data) {
|
rowDoubleClick (data) {
|
||||||
this.$emit('rowDoubleClick', data)
|
this.$emit('rowDoubleClick', data)
|
||||||
|
},
|
||||||
|
changeCategory (value) {
|
||||||
|
if (value) {
|
||||||
|
const obj = detectionUnitList.categoryList.find(d => d.value === value)
|
||||||
|
let label = value
|
||||||
|
if (obj) {
|
||||||
|
label = this.$t(obj.label)
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeEventType (value) {
|
||||||
|
if (value) {
|
||||||
|
const obj = detectionUnitList.eventTypeList.find(d => d.value === value)
|
||||||
|
let label = value
|
||||||
|
if (obj) {
|
||||||
|
label = this.$t(obj.label)
|
||||||
|
}
|
||||||
|
return label
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,8 +75,8 @@
|
|||||||
<div class="row__content" v-if="$_.get(basicInfo, 'domainInfo.category.reputationLevel')">
|
<div class="row__content" v-if="$_.get(basicInfo, 'domainInfo.category.reputationLevel')">
|
||||||
<div
|
<div
|
||||||
class="row__tag row__tag__level"
|
class="row__tag row__tag__level"
|
||||||
:style="`background-color:${eventSeverityColor[basicInfo.domainInfo.category.reputationLevel]}`">
|
:style="`background-color:${riskLevelColor1[basicInfo.domainInfo.category.reputationLevel]}`">
|
||||||
{{ basicInfo.domainInfo.category.reputationLevel }}
|
{{ reputationLevel(basicInfo.domainInfo.category.reputationLevel) || '-' }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row__content" v-else>-</div>
|
<div class="row__content" v-else>-</div>
|
||||||
@@ -346,7 +346,7 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { api } from '@/utils/api'
|
import { api } from '@/utils/api'
|
||||||
import { getMillisecond, dateFormatByAppearance } from '@/utils/date-util'
|
import { getMillisecond, dateFormatByAppearance } from '@/utils/date-util'
|
||||||
import { eventSeverityColor, unitTypes, countryNameIdMapping, riskLevelMapping, riskLevelColor } from '@/utils/constants'
|
import { eventSeverityColor, unitTypes, countryNameIdMapping, riskLevelMapping, riskLevelColor, riskLevelColor1 } from '@/utils/constants'
|
||||||
import unitConvert from '@/utils/unit-convert'
|
import unitConvert from '@/utils/unit-convert'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
export default {
|
export default {
|
||||||
@@ -358,6 +358,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
eventSeverityColor,
|
eventSeverityColor,
|
||||||
riskLevelColor,
|
riskLevelColor,
|
||||||
|
riskLevelColor1,
|
||||||
basicInfo: {},
|
basicInfo: {},
|
||||||
events: [],
|
events: [],
|
||||||
reference: 'https://attack.mitre.org',
|
reference: 'https://attack.mitre.org',
|
||||||
@@ -391,7 +392,15 @@ export default {
|
|||||||
const m = riskLevelMapping.find(mapping => {
|
const m = riskLevelMapping.find(mapping => {
|
||||||
return mapping.value == level
|
return mapping.value == level
|
||||||
})
|
})
|
||||||
return (m && m.name) || level
|
return (m && this.$t(m.label)) || level
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reputationLevel () {
|
||||||
|
return function (level) {
|
||||||
|
const m = riskLevelMapping.find(mapping => {
|
||||||
|
return mapping.name == level
|
||||||
|
})
|
||||||
|
return (m && this.$t(m.label)) || level
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
locationRegion (info) {
|
locationRegion (info) {
|
||||||
|
|||||||
Reference in New Issue
Block a user