From da28c3d94047424d1bd5fc981fe0b6f3f323fe88 Mon Sep 17 00:00:00 2001 From: "@changcode" Date: Wed, 19 Jan 2022 15:54:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?CN-271=20feat:=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E9=87=8D=E6=9E=84-table=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/components/views/charts/panel.scss | 95 ++++++++++++++++++- src/views/charts/Chart2.vue | 14 ++- src/views/charts/ChartHeader.vue | 63 +++++++++++- src/views/charts/PanelChart.vue | 17 +++- src/views/charts/charts/ChartSingleValue.vue | 15 +-- src/views/charts/charts/ChartTable.vue | 79 +++++++++++++++ 6 files changed, 269 insertions(+), 14 deletions(-) create mode 100644 src/views/charts/charts/ChartTable.vue diff --git a/src/assets/css/components/views/charts/panel.scss b/src/assets/css/components/views/charts/panel.scss index 16f059bc..928bf107 100644 --- a/src/assets/css/components/views/charts/panel.scss +++ b/src/assets/css/components/views/charts/panel.scss @@ -115,6 +115,86 @@ left: 0; top: -1px; } + .header__operations { + display: flex; + justify-content: end; + align-items: center; + + .header__operation-btn { + margin-left: 12px; + cursor: pointer; + color: #999; + } + + .header__operation.header__operation--table { + display: flex; + align-items: center; + height: 22px; + margin-left: 10px; + color: $--color-primary; + border: 1px solid $--color-primary; + border-radius: $--border-radius-primary; + + .option__button { + display: flex; + align-items: center; + height: 100%; + padding: 0 5px; + cursor: pointer; + background-color: white; + transition: all linear .2s; + } + .option__button:hover { + background-color: #EFF2F5; + } + .option__button.icon-group-item:first-of-type:not(:last-of-type) { + padding: 0 5px 0 0; + } + .option__button.icon-group-item:last-of-type:not(:first-of-type) { + padding: 0 0 0 5px; + } + .option__select { + .el-input__inner { + width: 80px; + padding-right: 20px; + border: none; + height: 100%; + line-height: 20px; + color: $--color-primary; + } + .el-input__prefix > div { + font-weight: normal; + line-height: 19px; + color: $--color-primary; + } + .el-input__suffix { + display: flex; + .el-input__suffix-inner { + line-height: 14px; + .el-select__caret { + line-height: 14px; + width: 16px; + color: $--color-primary; + } + } + } + } + .option__select.select-column { + .el-input__inner { + width: 86px; + padding-left: 8px; + } + } + .icon-group-divide { + height: 14px; + width: 1px; + background-color: $--color-primary; + } + i { + font-size: 12px; + } + } + } } &>.cn-chart { position: relative; @@ -419,7 +499,7 @@ height: calc(100% - 40px); } } - &>.cn-chart__table { + &>.cn-chart__table, { .cn-chart__header { border-bottom: 1px solid $--content-right-background-color; .header__operations { @@ -832,3 +912,16 @@ content: "!"; font-weight:normal; } +.ip-detail-as { + color: #999; + font-size: 12px; + padding-left: 10px; +} + +.option-popper { + .el-select-dropdown__item { + height: 24px; + line-height: 24px; + font-size: 12px; + } +} diff --git a/src/views/charts/Chart2.vue b/src/views/charts/Chart2.vue index 0d285b9e..0d209b7a 100644 --- a/src/views/charts/Chart2.vue +++ b/src/views/charts/Chart2.vue @@ -51,6 +51,15 @@ @showLoading="showLoading" > + + @@ -64,6 +73,7 @@ import ChartSingleValue from './charts/ChartSingleValue' import ChartBlock from './charts/ChartBlock' import IpBasicInfo from '@/views/charts/charts/IpBasicInfo' import ChartEchartLine from './charts/ChartEchartLine' +import ChartTable from "./charts/ChartTable"; import { isEcharts, isEchartsLine, @@ -100,6 +110,7 @@ import _ from 'lodash' export default { name: 'chart', components: { + ChartTable, IpBasicInfo, ChartSingleValue, Loading, @@ -119,7 +130,8 @@ export default { loading: Boolean, panelLock: Boolean, entity: Object, - isError: Boolean + isError: Boolean, + table: Object }, computed: { isNoData () { diff --git a/src/views/charts/ChartHeader.vue b/src/views/charts/ChartHeader.vue index 292f2329..d9da962b 100644 --- a/src/views/charts/ChartHeader.vue +++ b/src/views/charts/ChartHeader.vue @@ -1,8 +1,54 @@ + From 53202d7b0c18abf980e38165207c1988f8f3d5b7 Mon Sep 17 00:00:00 2001 From: "@changcode" Date: Wed, 19 Jan 2022 16:18:11 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5=20tiny-emitter?= =?UTF-8?q?=20=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/charts/ChartTablePagination.vue | 4 ++++ src/main.js | 4 ++++ src/views/charts/PanelChart.vue | 2 ++ 3 files changed, 10 insertions(+) diff --git a/src/components/charts/ChartTablePagination.vue b/src/components/charts/ChartTablePagination.vue index 945a2fc8..521d861c 100644 --- a/src/components/charts/ChartTablePagination.vue +++ b/src/components/charts/ChartTablePagination.vue @@ -45,6 +45,10 @@ export default { } }, mounted () { + const _this = this + this.emitter.on('chart-pageNo', function () { + _this.resetPageNo() + }) this.$el.querySelector('.el-pagination__jump').childNodes[0].nodeValue = '' } } diff --git a/src/main.js b/src/main.js index e837fc6a..f7887aa1 100644 --- a/src/main.js +++ b/src/main.js @@ -13,6 +13,8 @@ import 'highlight.js/styles/color-brewer.css' import '@/assets/css/main.scss' // 样式入口 import VueGridLayout from 'vue-grid-layout' import ElementPlus from 'element-plus' +import bus from 'tiny-emitter' +const emitter = new bus() import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' // dependent on utc plugin import timezone from 'dayjs/plugin/timezone' @@ -54,4 +56,6 @@ app.component('time-refresh', TimeRefresh) app.component('panel-chart-list', PanelChartList) app.mount('#app') + +app.config.globalProperties.emitter = emitter export default app diff --git a/src/views/charts/PanelChart.vue b/src/views/charts/PanelChart.vue index e1b7cf96..a6775668 100644 --- a/src/views/charts/PanelChart.vue +++ b/src/views/charts/PanelChart.vue @@ -232,6 +232,7 @@ export default { this.standaloneTimeRange.use = true this.standaloneTimeRange.startTime = myStartTime this.standaloneTimeRange.endTime = myEndTime + this.emitter.emit('chart-pageNo') this.getChartData(null, {}, true) }, showFullscreen (show) { @@ -288,6 +289,7 @@ export default { this.loading = show }, tableChange () { + this.emitter.emit('chart-pageNo') this.getChartData() }, getTargetPageData (pageNum, pageSize, tableData) {