This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/src/components/charts/ChartTable.vue

73 lines
1.8 KiB
Vue
Raw Normal View History

<template>
<div class="cn-chart cn-chart__table">
<div class="cn-chart__header chart-header-position" >
<slot name="chartErrorInfo"></slot>
<div class="header__title">
<slot name="title"></slot>
</div>
<div class="header__operations">
<slot name="operations"></slot>
</div>
</div>
<div class="chart__loading" v-show="loading">
2021-09-07 11:38:06 +08:00
<i class="el-icon-loading"></i>
</div>
<div class="cn-chart__body" v-no-data="noData">
<el-table
style="width: 100%"
2021-06-21 20:33:39 +08:00
tooltip-effect="light"
:data="tableData"
>
<el-table-column
type="index"
label="#"
>
</el-table-column>
<el-table-column
v-for="(c, i) in tableColumns"
2021-06-21 20:33:39 +08:00
show-overflow-tooltip
:key="i"
2021-07-08 10:43:48 +08:00
:label="c.label"
:prop="c.prop"
>
2021-07-08 10:43:48 +08:00
<template #header>{{c.label}}</template>
<template #default="{ row }">{{}}
<span v-if="c.prop === 'bytes'">
{{unitConvert(row[c.prop], unitTypes.byte).join(' ')}}
</span>
<span v-else-if="c.prop === 'packets' || c.prop === 'sessions'">
{{unitConvert(row[c.prop], unitTypes.number).join(' ')}}
2021-07-08 10:43:48 +08:00
</span>
<span v-else>
{{row[c.prop]}}
</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="cn-chart__footer">
2021-06-21 20:33:39 +08:00
<slot name="footer"></slot>
</div>
</div>
</template>
<script>
import unitConvert from '@/utils/unit-convert'
import { unitTypes } from '@/utils/constants'
export default {
name: 'ChartTable',
props: {
tableColumns: Array,
2021-08-11 22:14:23 +08:00
tableData: Array,
2021-08-15 15:49:29 +08:00
loading: Boolean,
noData: Boolean
2021-07-08 10:43:48 +08:00
},
setup () {
return {
unitTypes,
unitConvert
}
}
}
</script>