2019-12-26 13:00:22 +08:00
< template >
2022-03-25 15:40:05 +08:00
< div class = "panel list-page" v-my-loading = "panelTabLoading" >
2021-04-26 21:42:15 +08:00
< div class = "main-list" >
2021-08-26 14:38:03 +08:00
< div >
< transition name = "el-zoom-in-center" >
2021-11-01 17:23:01 +08:00
< div v-if = "isLoading" class="panel-loading" > < / div >
2021-08-26 14:38:03 +08:00
< / transition >
< / div >
2021-11-15 14:00:54 +08:00
< div class = "main-container" >
2021-12-21 19:48:01 +08:00
< div class = "top-tools panel-top-tools" >
2021-11-19 09:40:21 +08:00
< div v-if = "panelData.length === 0" class="top-tool-left" style="margin-left: 10px;" >
2021-04-26 21:42:15 +08:00
< button id = "panel-add-panel" class = "nz-btn nz-btn-style-light nz-btn-size-small" @click ="toAdd" > < i class = "nz-icon nz-icon-create-square" > < / i > & nbsp ; & nbsp ; { { $t ( "dashboard.panel.createPanelTitleSec" ) } } < / button >
2020-02-14 18:07:21 +08:00
< / div >
2021-04-26 21:42:15 +08:00
< template v-else >
2021-09-08 11:37:41 +08:00
< div class = "top-tool-left" style = "cursor: pointer;" >
2021-04-26 21:42:15 +08:00
< select-panel ref = "selectPanel" :filter-panel = "filterPanel" :panel-data = "panelData" :panel-lock = "panelLock" :placement = "'bottom-start'"
2021-08-25 16:19:44 +08:00
: show - panel = "showPanel" style = "display: inline-block;padding: 0" @ deletePanel = "del" @ editPanel = "edit" @ selectPanel = "panelChange" >
2021-04-26 21:42:15 +08:00
< template v -slot : header >
< div class = "panel-select-header" >
2021-08-25 16:19:44 +08:00
< el-input id = "panel-list-search" v-model = "filterPanel" :placeholder="$t('overall.search')" clearable size="mini" style="width: 286px;" > < / el -input >
2022-01-11 11:00:03 +08:00
<!-- < span id = "panel-list-toadd" v-has = "'main_add'" :title='$t("dashboard.panel.createPanelTitleSec")' class="panel-select-add" @click="toAdd"><i class="nz-icon nz-icon-plus" > < / i > < / span > - - >
2021-04-26 21:42:15 +08:00
< / div >
< / template >
< template v -slot : trigger >
2021-08-25 16:19:44 +08:00
< i style = "color: #BEBEBE" class = "el-icon-menu" > < / i >
2021-09-24 17:57:24 +08:00
< span : title = "showPanel.name + ' (' + showPanel.chartNum +' charts) ' " class = "show-panel-name" > { { showPanel . name } } < / span >
2021-08-25 16:19:44 +08:00
< i style = "font-size: 12px;color: #BEBEBE;" class = "nz-icon nz-icon-arrow-down" > < / i >
2021-04-26 21:42:15 +08:00
< / template >
2021-08-25 10:38:46 +08:00
< template v -slot : tail >
< div class = "panel-select-tail" >
2022-01-11 11:00:03 +08:00
< span id = "panel-list-toadd" v-has = "'main_add'" :title='$t("dashboard.panel.createPanelTitleSec")' class="panel-select-add" @click="toAdd"><i class="nz-icon nz-icon-create-square" > < / i > & nbsp ; & nbsp ; {{ $ t ( ' overall.addProject ' ) }} < / span >
2021-08-25 10:38:46 +08:00
< / div >
< / template >
2021-04-26 21:42:15 +08:00
< / select-panel >
< / div >
< div class = "top-tool-right" >
2021-12-23 11:29:29 +08:00
<!-- < div class = "top-tool-search margin-r-20" > -- >
<!-- < el-input id = "queryPanel" ref = "queryPanel" v-model = "filter.searchName" class="query-input-inactive" clearable size="small" @blur="blurInput" @clear="clearInput" @focus="focusInput" > - - >
<!-- < i slot = "suffix" class = "el-input__icon nz-icon nz-icon-search" style = "float: right" @click ="focusInput" > < / i > - - >
<!-- < / el-input > -- >
<!-- < / div > -- >
2020-02-14 18:07:21 +08:00
2022-04-25 10:07:10 +08:00
< pick-time id = "panel" ref = "pickTime" v-model = "searchTime" :refresh-data-func="dateChange" :use-chart-unit="false" class="margin-r-10" :sign="showPanel.id" > < / pick -time >
2021-04-27 16:26:22 +08:00
2022-01-11 11:00:03 +08:00
< button id = "panel-add-chart" v-has = "'main_add'" :title="$t('overall.createChart')" class="top-tool-btn margin-r-10"
2021-12-08 16:20:03 +08:00
type = "button" @ click = "addChartBefore" >
2021-04-27 16:26:22 +08:00
< i class = "nz-icon-create-square nz-icon" > < / i >
< / button >
2021-11-02 15:47:17 +08:00
< top-tool-more-options
: delete - objs = "batchDeleteObjs"
2021-04-26 21:42:15 +08:00
id = "panel"
: params = "filter"
: permissions = " {
2022-01-11 11:00:03 +08:00
import : 'main_add' ,
2022-01-11 17:05:21 +08:00
export : 'main_edit'
2021-04-26 21:42:15 +08:00
} "
2021-07-19 17:04:46 +08:00
: paramsType = "'dashboard'"
2021-04-26 21:42:15 +08:00
class = "top-tool-export"
export - file - name = "chart"
export - url = "/visual/panel/export"
import - url = "/visual/panel/import"
2022-03-08 10:01:10 +08:00
@ afterImport = "afterImport"
2021-04-26 21:42:15 +08:00
>
2021-04-27 16:26:22 +08:00
< template v -slot : before >
< el-dropdown-item >
2022-02-14 17:48:13 +08:00
< div id = "panel-lock" @click ="$store.dispatch('dispatchPanelLock',{flag:!panelLock})" > < i : class = "{'nz-icon nz-icon-lock':!panelLock,'nz-icon nz-icon-unlock':panelLock}" > < / i > { { ! panelLock ? $t ( 'overall.locked' ) : $t ( 'overall.unlocked' ) } } < / div >
2021-04-27 16:26:22 +08:00
< / el-dropdown-item >
< / template >
< template v -slot : after >
2022-01-11 11:00:03 +08:00
< el-dropdown-item v-has = "'main_add'" >
2021-05-19 23:17:24 +08:00
< div id = "chart-temp-add" @click ="addChartByTemp" > < i class = "nz-icon nz-icon-add" > < / i > { { $t ( 'overall.AddByTemplate' ) } } < / div >
2021-04-27 16:26:22 +08:00
< / el-dropdown-item >
2022-01-11 17:05:21 +08:00
< el-dropdown-item v-has = "'panel_view'" >
2021-05-20 14:07:58 +08:00
< div id = "chart-temp-sync" @click ="chartBySync" > < i class = "nz-icon nz-icon-sync" > < / i > { { $t ( 'overall.syncChart' ) } } < / div >
< / el-dropdown-item >
2022-04-08 11:26:17 +08:00
< el-dropdown-item v-has = "'main_add'" >
2022-04-12 17:19:51 +08:00
< div id = "chart-htmltopdf" @click ="htmlToPdf" > < i class = "nz-icon nz-icon-export-pdf" > < / i > { { $t ( 'overall.downloadToPdf' ) } } < / div >
2022-04-08 11:26:17 +08:00
< / el-dropdown-item >
2022-04-11 15:49:10 +08:00
< el-dropdown-item v-has = "'main_add'" >
2022-04-29 18:50:01 +08:00
<!-- < div id = "chart-export-html" @click ="exportHtml" > < i class = "nz-icon nz-icon-download1" > < / i > { { $t ( 'overall.downloadToPdf' ) } } < / div > -- >
< div id = "chart-export-html" @click ="exportData" > < i class = "nz-icon nz-icon-download1" > < / i > { { $t ( 'overall.downloadToPdf' ) } } < / div >
2022-04-11 15:49:10 +08:00
< / el-dropdown-item >
2021-04-26 21:42:15 +08:00
< / template >
2021-04-27 16:26:22 +08:00
< / top-tool-more-options >
2021-04-26 21:42:15 +08:00
< / div >
< / template >
2020-08-02 22:43:53 +08:00
< / div >
2021-12-21 18:05:36 +08:00
< div id = "tableList" class = "table-list" style = 'overflow-y: unset' >
2021-12-27 14:24:35 +08:00
< div class = "table-list-box" >
2022-03-25 15:40:05 +08:00
< div id = "dashboardScrollbar" class = "box-content" v-my-loading = "chartListLoading" ref="dashboardScrollbar" style = 'overflow-y: auto' >
2021-11-19 09:40:21 +08:00
< chart-list
ref = "chartList"
2021-12-13 17:07:41 +08:00
name = "panel"
2021-12-14 15:50:33 +08:00
: panelId = "showPanel.id"
2021-11-19 09:40:21 +08:00
: class = "{'show-top':showTopBtn}"
2022-04-29 18:50:01 +08:00
: data - list = "dataJson"
: is - export - html = "true"
2021-11-29 16:19:13 +08:00
: nowTimeType = "nowTimeType"
2021-11-19 09:40:21 +08:00
: from = "fromRoute.panel"
2021-11-26 20:13:54 +08:00
: time - range = "searchTime"
2021-12-06 15:25:09 +08:00
@ edit - chart = "editChart"
2021-11-19 09:40:21 +08:00
@ on - refresh - time = "refreshTime"
@ on - remove - chart = "delChart"
@ on - add - group - item - chart = "addGroupItem"
2022-03-10 11:31:48 +08:00
@ refreshPanel = "refreshPanel"
2021-12-08 14:53:52 +08:00
: loading = "chartListLoading"
2021-11-19 09:40:21 +08:00
> < / chart-list >
2021-04-26 21:42:15 +08:00
< / div >
< / div >
2020-08-02 22:43:53 +08:00
< / div >
2020-12-14 20:25:24 +08:00
< / div >
2020-01-03 17:17:09 +08:00
< / div >
2021-04-26 21:42:15 +08:00
2020-12-14 20:25:24 +08:00
< button : class = "{'to-top-is-hover': tableHover}" @click ="toTop(scrollbarWrap)" class = "to-top" style = "bottom: 0;" v-show = "showTopBtn"><i class="nz-icon nz-icon-top" > < / i > < / button >
2019-12-26 13:00:22 +08:00
2020-07-30 18:37:04 +08:00
< transition name = "right-box" >
2021-11-30 17:51:09 +08:00
< chart-right-box
2021-12-08 16:20:03 +08:00
v - if = "chartRightBoxShow"
2022-03-25 15:40:05 +08:00
v - my - loading = "rightBox.loading"
2021-11-30 17:51:09 +08:00
ref = "addChartModal"
: chart = "chart"
: from = "fromRoute.panel"
: panel - data = "panelData"
: show - panel = "showPanel"
@ close = "closeChartBox"
@ reload = "panelReload"
@ reloadOnlyPanel = "panelReloadOnlyPanel"
@ delete - chart = "delChart"
@ on - create - success = "createSuccess"
@ on - delete - success = "delChartOk"
> < / chart-right-box >
2020-07-30 18:37:04 +08:00
< / transition >
2021-04-25 18:35:35 +08:00
< transition name = "right-box" >
2021-05-21 15:06:58 +08:00
< chart-temp-box v-if = "rightBox.chartTemp.show" :from="fromRoute.panel" :obj="chart" :panel-data="panelData" :show-panel="showPanel" @close="closeChartTempBox" @on-create-success="createSuccess" > < / chart -temp -box >
2021-04-25 18:35:35 +08:00
< / transition >
2020-07-30 18:37:04 +08:00
< transition name = "right-box" >
2021-05-18 14:01:29 +08:00
< panel-box v-if = "rightBox.panel.show" ref="panelBox" :obj="panel" @close="closePanelBox" @reload="panelReload" @reloadForDel="panelReloadForDel" > < / panel-box >
2020-07-30 18:37:04 +08:00
< / transition >
2020-02-03 21:30:07 +08:00
< / div >
2020-01-03 17:17:09 +08:00
< / template >
2020-01-17 16:50:17 +08:00
2020-01-03 17:17:09 +08:00
< script >
2021-11-30 16:39:21 +08:00
import chartRightBox from '@/components/common/rightBox/chart/chartRightBox'
2021-03-19 18:52:19 +08:00
import bus from '../../../libs/bus'
import pickTime from '../../common/pickTime'
import selectPanel from '../../common/popBox/selectPanel'
2021-04-09 15:07:15 +08:00
import panelBox from '@/components/common/rightBox/panelBox'
2021-04-25 18:35:35 +08:00
import chartTempBox from '@/components/common/rightBox/chartTempBox'
2021-04-27 16:26:22 +08:00
import topToolMoreOptions from '@/components/common/popBox/topToolMoreOptions'
2021-05-21 15:06:58 +08:00
import { fromRoute } from '@/components/common/js/constants'
2021-12-07 14:19:16 +08:00
import { randomcolor } from '@/components/common/js/radomcolor/randomcolor'
2021-12-21 15:41:46 +08:00
import { lineChartMove } from '@/components/common/js/common'
2021-12-23 14:54:00 +08:00
import routerPathParams from '@/components/common/mixin/routerPathParams'
2022-04-08 11:26:17 +08:00
import htmlToPdfMixin from '@/components/common/mixin/htmlToPdfMixin'
2022-04-11 15:49:10 +08:00
import exportHtmlMixin from '@/components/common/mixin/exportHtml'
2022-04-11 17:13:56 +08:00
import FileSaver from 'file-saver'
2021-12-17 10:11:31 +08:00
// import chartData from './testData'
2022-04-29 18:50:01 +08:00
const dataJson = [ { id : 698268 , name : 'Total assets' , panelId : 1487 , groupId : 0 , span : 2 , height : 1 , updateBy : 1 , updateAt : '2022-02-02 00:00:00' , type : 'stat' , unit : 2 , weight : 0 , param : { system : 'asset' , refer : 0 , enable : { thresholds : false , legend : true , valueMapping : false } , datasource : [ { filter : [ ] , select : { name : 'count' , expr : 'count(1)' , type : 1 } , legend : 'Total assets' , name : 'System' , limit : 100 , sort : 'desc' , type : 'asset' , systemGroup : [ ] , systemSelect : 'count' , group : '' } ] , legend : { values : [ ] , show : true , placement : 'bottom' } , link : '/#/asset' , valueMapping : [ { regx : '\\d*' , color : { bac : '#1250B000' , text : '#000000FF' } , display : '{{value}}' , show : true , type : 'regx' } ] , text : 'value' , nullType : 'null' , statistics : 'last' } , pid : null , buildIn : 0 , remark : 'Total number of assets in the system' , seq : 'v3.2-buildin' , x : 2 , y : 1 , elements : null , sync : null , panel : { id : 1487 , name : 'Overview' , createBy : null , type : null , link : null , pid : null , weight : null , buildIn : null , seq : null , children : null , parent : null , chartNum : null } , group : { id : 0 , name : null , panelId : null , groupId : null , span : null , height : null , updateBy : null , updateAt : null , type : null , unit : null , weight : null , param : null , pid : null , buildIn : null , remark : null , seq : null , x : null , y : null , elements : null , sync : null , panel : null , group : null , children : null , chartNums : null , asset : null , varType : null , varId : null , varName : null , datasource : null } , children : null , chartNums : null , asset : null , varType : null , varId : null , varName : null , datasource : 'system' , hide : false , loaded : false , chartData : [ [ { metric : { _ _name _ _ : 'count' } , values : [ [ 1651157100919 , 55 ] ] } ] ] } , { id : 698269 , name : 'Total Datacenters' , panelId : 1487 , groupId : 0 , span : 2 , height : 1 , updateBy : 1 , updateAt : '2022-02-02 00:00:00' , type : 'stat' , unit : 2 , weight : 1 , param : { system : 'datacenter' , refer : 0 , enable : { thresholds : false , legend : true , valueMapping : false } , datasource : [ { filter : [ ] , select : { name : 'count' , expr : 'count(1)' , type : 1 } , legend : 'Total Datacenters' , name : 'System' , limit : 100 , sort : 'desc' , type : 'datacenter' , systemGroup : [ ] , systemSelect : 'count' , group : '' } ] , legend : { values : [ ] , show : true , placement : 'bottom' } , link : '/#/asset' , valueMapping : [ { regx : '\\d*' , color : { bac : '#5794F200' , text : '#000000FF' } , display : '{{value}}' , show : true , type : 'regx' } ] , text : 'value' , nullType : 'null' , statistics : 'last' } , pid : null , buildIn : 0 , remark : 'Total number of datacenters in the system' , seq : 'v3.2-buildin' , x : 0 , y : 1 , elements : null , sync : null , panel : { id : 1487 , name : 'Overview' , createBy : null , type : null , link : null , pid : null , weight : null , buildIn : null , seq : null , children : null , parent : null , chartNum : null } , group : { id : 0 , name : null , panelId : null , groupId : null , span : null , height : null , updateBy : null , updateAt : null , type : null , unit : null , weight : null , param : null , pid : null , buildIn : null , remark : null , seq : null , x : null , y : null , elements : null , sync : null , panel : null , group : null , children : null , chartNums : null , asset : null , varType : null , varId : null , varName : null , datasource : null } , children : null , chartNums : null , asset : null , varType : null , varId : null , varName : null , datasource : 'system' , hide : false , loaded : false , chartData : [ [ { metric : { _ _name _ _ : 'count' } , values : [ [ 1651157100921 , 16 ] ] } ] ] } , { id : 698275 , name : 'Map of datacenter' , panelId : 1487 , groupId : 0 , span : 6 , height : 3 , updateBy : 1 , updateAt : '2022-02-02 00:00:00' , type : 'map' , unit : 2 , weight : 2 , param : { url : '' } , pid : null , buildIn : 0 , remark : 'Mark data center locations on the map' , seq : 'v3.2-buildin' , x : 6 , y : 2 , elements : null , sync : null , panel : { id : 1487 , name : 'Overview' , createBy : null , type : null , link : null , pid : null , weight : null , buildIn : null , seq : null , children : null , parent : null , chartNum : null } , group : { id : 0 , name : null , panelId : null , groupId : null , span : null , height : null , updateBy : null , updateAt : null , type : null , unit : null , weight : null , param : null , pid : null , buildIn : null , remark : null , seq : null
2021-03-19 18:52:19 +08:00
export default {
name : 'panel' ,
2022-04-11 15:49:10 +08:00
mixins : [ routerPathParams , htmlToPdfMixin , exportHtmlMixin ] ,
2021-03-19 18:52:19 +08:00
data ( ) {
return {
2021-05-21 15:06:58 +08:00
fromRoute ,
2022-04-29 18:50:01 +08:00
dataJson : dataJson ,
2022-04-08 11:26:17 +08:00
pdfId : 'pdfDom' ,
htmlTitle : 'panel' ,
2021-11-27 12:07:25 +08:00
panelTabLoading : false ,
2021-04-28 15:32:50 +08:00
overScroll10 : false ,
2021-08-26 14:38:03 +08:00
isLoading : true ,
2021-03-19 18:52:19 +08:00
showTopBtn : false , // top按钮
visible : false ,
2021-10-28 15:16:57 +08:00
chartListLoading : true ,
2021-03-19 18:52:19 +08:00
rightBox : { // 面板弹出框相关
chart : { show : false } ,
2021-04-25 18:35:35 +08:00
chartTemp : { show : false } ,
2021-12-09 14:15:06 +08:00
panel : { show : false } ,
loading : false
2021-03-19 18:52:19 +08:00
} ,
tableHover : false ,
searchTime : bus . getTimezontDateRange ( ) ,
intervalTimer : null ,
interval : 0 ,
showPanel : { // panel下拉列表
id : '' ,
2021-04-08 17:49:07 +08:00
name : '' ,
type : 'panel'
2021-03-19 18:52:19 +08:00
} ,
panel : { // 新增panel
id : '' ,
name : ''
} ,
chart : { } ,
blankChart : {
id : '' ,
2021-04-07 16:41:11 +08:00
name : '' ,
2021-03-19 18:52:19 +08:00
type : 'line' ,
2021-12-01 17:12:02 +08:00
span : 4 ,
2021-12-06 15:25:09 +08:00
datasource : 'metrics' ,
2021-11-30 17:51:09 +08:00
height : 4 ,
2021-03-19 18:52:19 +08:00
unit : 2 ,
2021-12-01 16:34:50 +08:00
param : {
stack : 0 ,
nullType : 'null' ,
legend : { placement : 'bottom' , values : [ ] , show : true } ,
2021-12-16 18:13:47 +08:00
enable : {
legend : true ,
2021-12-17 11:18:49 +08:00
valueMapping : false ,
thresholds : false
2021-12-16 18:13:47 +08:00
} ,
2021-12-01 16:34:50 +08:00
thresholdShow : true ,
2021-12-07 14:19:16 +08:00
thresholds : [ { value : undefined , color : randomcolor ( ) } ]
2021-12-01 16:34:50 +08:00
} ,
elements : [ { expression : '' , legend : '' , type : 'expert' , id : '' , name : 'A' } ] ,
2021-03-19 18:52:19 +08:00
panel : '' ,
2021-04-07 16:41:11 +08:00
sync : 0 ,
remark : '' ,
2021-12-06 15:25:09 +08:00
groupId : ''
2021-03-19 18:52:19 +08:00
} ,
pageObj : {
pageNo : 1 ,
pageSize : - 1 , // 此处获取所有数据,所以设置一个较大的值
total : 0
} ,
2021-04-25 18:35:35 +08:00
blankChartTemp : {
varType : 1 ,
pid : '' ,
panelId : '' ,
varIds : [ ]
} ,
2021-03-19 18:52:19 +08:00
panelData : [ ] ,
panelDataDragTmp : [ ] ,
searchMsg : { // 给搜索框子组件传递的信息
searchLabelList : [
2021-05-10 15:59:39 +08:00
{
name : 'ID' ,
type : 'input' ,
label : 'ids' ,
disabled : false
} ,
{
name : this . $t ( 'overall.name' ) ,
type : 'input' ,
label : 'name' ,
disabled : false
} ,
{
name : this . $t ( 'overall.type' ) ,
type : 'selectString' ,
label : 'chartType' ,
disabled : false
} ,
{
name : this . $t ( 'dashboard.panel.chartForm.varType' ) ,
type : 'select' ,
label : 'varType' ,
disabled : false
}
2021-03-19 18:52:19 +08:00
]
} ,
searchLabel : { } , // 搜索参数
// ---图表相关参数--start
dataList : [ ] , // 数据列表
filter : { // 过滤条件
2020-02-03 21:30:07 +08:00
panelId : 0 ,
2021-03-19 18:52:19 +08:00
start _time : '' ,
end _time : '' ,
2021-03-31 10:02:12 +08:00
searchName : '' ,
id : 4
2021-03-19 18:52:19 +08:00
} ,
panelId : 0 ,
filterPanel : '' ,
// ---图表相关参数--end
2021-11-02 15:47:17 +08:00
scrollbarWrap : null ,
2021-11-24 09:38:06 +08:00
batchDeleteObjs : [ ] ,
2022-01-04 16:26:15 +08:00
nowTimeType : { }
2021-03-19 18:52:19 +08:00
}
} ,
components : {
'pick-time' : pickTime ,
2021-04-25 18:35:35 +08:00
'panel-box' : panelBox ,
2021-04-27 16:26:22 +08:00
topToolMoreOptions ,
selectPanel ,
2021-11-30 16:39:21 +08:00
chartTempBox ,
chartRightBox
2021-03-19 18:52:19 +08:00
} ,
2021-12-08 16:20:03 +08:00
computed : {
chartRightBoxShow ( ) {
return this . $store . getters . getShowRightBox
} ,
delChartFlag ( ) {
return this . $store . getters . getDelChart
2022-02-14 17:48:13 +08:00
} ,
panelLock ( ) {
return this . $store . getters . getPanelLock
2021-12-08 16:20:03 +08:00
}
} ,
2021-03-19 18:52:19 +08:00
methods : {
// 刷新
2022-03-10 11:31:48 +08:00
refreshPanel ( ) {
this . getData ( this . filter )
2021-03-19 18:52:19 +08:00
} ,
// 面板相关操作
panelChange ( val ) {
if ( ! val ) {
return false
2020-02-03 21:30:07 +08:00
}
2021-03-19 18:52:19 +08:00
this . filter . searchName = ''
// this.$refs.searchInput.select();
this . showPanel = val
2021-04-09 15:12:07 +08:00
this . showPanel . type = 'dashboard'
2021-03-19 18:52:19 +08:00
this . filter . panelId = this . showPanel . id
2021-12-23 14:54:00 +08:00
this . panelId = this . showPanel . id
const param = {
2021-12-23 20:22:40 +08:00
panelId : this . panelId ,
nowTimeType : JSON . stringify ( this . nowTimeType ) ,
searchTime : JSON . stringify ( this . searchTime )
2021-12-23 14:54:00 +08:00
}
2021-12-21 19:48:01 +08:00
// this.getTableData()
2021-12-23 14:54:00 +08:00
const path = this . fromRoute . panel
this . updatePath ( param , path )
2022-04-02 18:24:47 +08:00
this . dateChange ( )
// this.getData(this.filter)
2021-03-19 18:52:19 +08:00
this . $refs . chartList . cleanData ( )
2020-02-03 21:30:07 +08:00
} ,
2021-01-12 20:39:59 +08:00
2021-03-19 18:52:19 +08:00
del ( u ) {
this . $confirm ( this . $t ( 'tip.confirmDelete' ) , {
confirmButtonText : this . $t ( 'tip.yes' ) ,
cancelButtonText : this . $t ( 'tip.no' ) ,
type : 'warning'
} ) . then ( ( ) => {
2021-04-07 11:21:12 +08:00
this . $delete ( 'visual/panel?ids=' + u . id ) . then ( response => {
2021-03-19 18:52:19 +08:00
if ( response . code === 200 ) {
this . $message ( {
duration : 1000 ,
type : 'success' ,
message : this . $t ( 'tip.deleteSuccess' )
} )
this . getTableData ( true )
} else {
this . $message . error ( response . msg )
2022-03-23 15:06:36 +08:00
this . $store . dispatch ( 'clearPanel' )
2021-03-19 18:52:19 +08:00
}
} )
2022-03-23 15:06:36 +08:00
} ) . catch ( ( ) => {
this . $store . dispatch ( 'clearPanel' )
2021-03-19 18:52:19 +08:00
} )
} ,
edit ( u ) {
this . panel = Object . assign ( { } , u )
2021-05-18 14:01:29 +08:00
this . rightBox . panel . show = true
2021-03-19 18:52:19 +08:00
} ,
toAdd ( ) {
if ( ! this . hasButton ( 'panel_view' ) ) {
return
}
2021-05-12 16:19:43 +08:00
this . rightBox . panel . show = true
2021-03-19 18:52:19 +08:00
this . $refs . panelBox . show ( true )
this . panel = {
id : '' ,
name : ''
}
this . $refs . panelBox . setTitle ( this . $t ( 'dashboard.panel.createPanelTitle' ) )
} ,
panelReload ( clearShowPanel ) {
this . getTableData ( clearShowPanel )
} ,
refreshTime ( st , et ) {
const startTime = bus . timeFormate ( st , 'yyyy-MM-dd hh:mm' )
const endTime = bus . timeFormate ( et , 'yyyy-MM-dd hh:mm' )
2021-03-31 10:02:12 +08:00
this . searchTime = [ startTime , endTime , '' ]
2021-03-19 18:52:19 +08:00
} ,
panelReloadForDel : function ( ) {
if ( this . showPanel . id === this . panel . id ) {
this . showPanel . id = ''
}
this . getTableData ( )
} ,
/* 图表相关操作--start */
addChart ( ) {
this . chart = this . newChart ( )
2021-12-09 10:39:16 +08:00
this . chart . param . thresholds = [ { value : undefined , color : randomcolor ( ) } ]
2021-04-08 17:49:07 +08:00
this . chart . panelId = this . showPanel . id
this . chart . panelName = this . showPanel . name
2021-03-19 18:52:19 +08:00
} ,
2021-04-25 18:35:35 +08:00
addChartByTemp ( ) {
2021-12-08 15:15:18 +08:00
this . chart = JSON . parse ( JSON . stringify ( this . blankChartTemp ) )
2021-04-25 18:35:35 +08:00
this . chart . panelId = this . showPanel . id
this . rightBox . chartTemp . show = true
} ,
2021-05-20 14:07:58 +08:00
chartBySync ( ) {
2021-11-27 12:07:25 +08:00
this . panelTabLoading = true
2021-05-20 14:07:58 +08:00
this . $post ( 'visual/panel/chart/syncTmpl' , { panelId : this . showPanel . id } ) . then ( res => {
2021-11-27 12:07:25 +08:00
this . panelTabLoading = false
2021-05-20 14:07:58 +08:00
if ( res . code === 200 ) {
this . getData ( this . filter )
this . $message . success ( this . $t ( 'tip.syncSuccess' ) )
} else {
this . $message . error ( res . msg )
}
} )
} ,
2021-04-08 17:49:07 +08:00
addGroupItem ( groupId ) {
this . chart = this . newChart ( )
this . chart . groupId = groupId
this . chart . panelId = this . showPanel . id
this . chart . panelName = this . showPanel . name
this . chart . isGroup = true
} ,
2021-03-19 18:52:19 +08:00
newChart ( ) {
return JSON . parse ( JSON . stringify ( this . blankChart ) )
} ,
// 编辑图表信息,打开编辑弹窗
2021-06-18 16:57:49 +08:00
editChart ( data , copy ) {
if ( copy ) {
this . chart = JSON . parse ( JSON . stringify ( data ) )
2021-12-29 16:18:46 +08:00
this . chart . x = 0
this . chart . y = 0
2021-06-18 16:57:49 +08:00
this . chart . panelId = this . showPanel . id
this . chart . panelName = this . showPanel . name
2021-12-08 16:20:03 +08:00
this . chart . id = ''
2021-12-23 19:37:52 +08:00
this . chart . elements . forEach ( ( item ) => {
item . id = ''
item . chartId = ''
delete item . seq
} )
2021-12-29 16:18:46 +08:00
if ( this . chart . datasource !== 'metrics' && this . chart . datasource !== 'log' ) {
delete this . chart . elements
}
2021-12-29 18:12:40 +08:00
if ( ! this . chart . groupId || this . chart . groupId == - 1 ) {
this . chart . groupId = ''
}
2021-06-18 16:57:49 +08:00
} else {
2021-12-09 14:15:06 +08:00
this . rightBox . loading = true
2021-06-18 16:57:49 +08:00
this . $get ( 'visual/panel/chart/' + data . id ) . then ( res => {
2021-12-09 14:15:06 +08:00
this . rightBox . loading = false
2021-06-18 16:57:49 +08:00
if ( res . code === 200 ) {
2022-03-02 10:46:57 +08:00
const chartData = res . data
2021-06-18 16:57:49 +08:00
this . chart = JSON . parse ( JSON . stringify ( chartData ) )
this . chart . panelId = this . showPanel . id
this . chart . panelName = this . showPanel . name
2022-03-10 11:08:40 +08:00
if ( this . chart . param ) {
this . chart . param = JSON . parse ( this . chart . param )
} else {
this . chart . param = { }
}
2021-12-06 15:25:09 +08:00
if ( ! this . chart . groupId || this . chart . groupId == - 1 ) {
this . chart . groupId = ''
}
2021-12-15 09:51:04 +08:00
if ( this . chart . type == 'table' ) {
2021-12-15 17:55:56 +08:00
const arr = this . chart . param . indexs ? this . chart . param . indexs . split ( ',' ) : [ ]
this . chart . param . tags = arr . map ( ( item ) => {
return {
text : item ,
tiClasses : [ 'ti-valid' ]
}
} )
2021-12-15 09:51:04 +08:00
}
2021-06-18 16:57:49 +08:00
} else {
this . $message . error ( res . msg )
2021-06-03 17:12:45 +08:00
}
2021-06-18 16:57:49 +08:00
} )
}
2021-03-19 18:52:19 +08:00
} ,
closeChartBox ( refresh ) {
2021-12-08 16:20:03 +08:00
// this.rightBox.chart.show = false
2021-12-09 14:15:06 +08:00
this . chart = { }
2021-12-08 16:20:03 +08:00
this . $store . dispatch ( 'clearPanel' )
2021-03-19 18:52:19 +08:00
/ * i f ( r e f r e s h ) {
2021-05-18 19:18:14 +08:00
this . getData ( this . filter )
2021-03-19 18:52:19 +08:00
} * /
} ,
2021-05-18 19:18:14 +08:00
closeChartTempBox ( refresh ) {
2021-04-25 18:35:35 +08:00
this . rightBox . chartTemp . show = false
2021-05-18 19:18:14 +08:00
if ( refresh ) {
this . getData ( this . filter )
}
2021-04-25 18:35:35 +08:00
} ,
2021-03-19 18:52:19 +08:00
closePanelBox ( refresh ) {
this . rightBox . panel . show = false
2021-05-12 16:19:43 +08:00
if ( refresh ) {
this . getTableData ( )
}
2021-03-19 18:52:19 +08:00
} ,
// 移除图表:弹出确认框询问
delChart ( data , from ) {
this . $confirm ( this . $t ( 'tip.confirmDelete' ) , {
confirmButtonText : this . $t ( 'tip.yes' ) ,
cancelButtonText : this . $t ( 'tip.no' ) ,
type : 'warning'
} ) . then ( ( ) => {
2021-04-07 11:21:12 +08:00
this . $delete ( 'visual/panel/chart?ids=' + data . id ) . then ( response => {
2021-03-19 18:52:19 +08:00
if ( response . code === 200 ) {
this . $message ( {
duration : 2000 ,
type : 'success' ,
message : this . $t ( 'tip.deleteSuccess' )
} )
2021-12-08 16:20:03 +08:00
this . getData ( this . filter )
2021-12-09 14:15:06 +08:00
this . chart = { }
this . $store . dispatch ( 'clearPanel' )
2021-11-30 16:39:21 +08:00
// this.$refs.chartList.loadChartData(this.scrollbarWrap.scrollTop)
2021-03-19 18:52:19 +08:00
// if(nextChart&&prevChart){ //删除图表为中间位置
// prevChart.next = nextChart.id;
// nextChart.prev = prevChart.id;
// }else{
// if(!nextChart) prevChart.next = -1;
// if(!prevChart) nextChart.prev = 0;
// }
// this.getTableData(); //删除相关图表后,刷新面板数据
} else {
this . $message . error ( response . msg )
2022-03-22 15:42:50 +08:00
this . $store . dispatch ( 'clearPanel' )
2020-02-03 21:30:07 +08:00
}
2021-03-19 18:52:19 +08:00
} )
2021-12-14 18:57:21 +08:00
} ) . catch ( ( ) => {
this . chart = { }
this . $store . dispatch ( 'clearPanel' )
2021-03-19 18:52:19 +08:00
} )
} ,
delChartOk ( ) {
this . filter . panelId = this . showPanel . id
this . getData ( this . filter )
} ,
// 图表创建成功, 回调panel页面, 进行图表的刷新
createSuccess ( msg , data , params , panel ) {
this . filter . panelId = this . showPanel . id
this . getData ( this . filter )
2022-03-11 10:45:19 +08:00
this . $store . dispatch ( 'clearPanel' )
2021-03-19 18:52:19 +08:00
} ,
// 获取数据,用在子页面
getData ( params ) {
if ( ! this . hasButton ( 'panel_view' ) ) {
return
}
2021-11-19 09:40:21 +08:00
this . chartListLoading = true
2021-03-19 18:52:19 +08:00
if ( params . start _time === '' || params . end _time === '' ) {
const now = bus . getTimezontDateRange ( )
2021-12-30 19:17:22 +08:00
const endTimeTmp = bus . timeFormate ( now [ 1 ] . getTime ( ) , this . panelDateFormatTime )
const startTimeTmp = bus . timeFormate ( now [ 0 ] . getTime ( ) , this . panelDateFormatTime )
2021-03-19 18:52:19 +08:00
params . start _time = startTimeTmp
params . end _time = endTimeTmp
}
2021-11-19 09:40:21 +08:00
this . $get ( 'visual/panel/chart?panelId=' + params . panelId + '&groupId=0' + '&pageSize=-1' ) . then ( response => {
if ( response . code === 200 ) {
this . chartListLoading = false
2021-12-16 19:50:23 +08:00
// response = chartData
2021-12-08 14:37:57 +08:00
this . dataList = response . data . list . map ( item => {
2021-11-19 09:40:21 +08:00
return {
... item ,
hide : item . name . indexOf ( this . filter . searchName ) === - 1 , // 搜索条件
loaded : false
}
} )
}
} )
2021-03-19 18:52:19 +08:00
} ,
/* 图表相关操作--end */
/* 时间条件查询--start */
// 选择日期变化
dateChange ( val ) {
const nowTimeType = this . $refs . pickTime . $refs . timePicker . nowTimeType
2021-11-24 09:38:06 +08:00
this . nowTimeType = this . $refs . pickTime . $refs . timePicker . nowTimeType
2021-03-31 10:02:12 +08:00
this . setSearchTime ( nowTimeType . type , nowTimeType . value , nowTimeType )
2021-12-30 19:17:22 +08:00
this . filter . start _time = bus . timeFormate ( this . searchTime [ 0 ] , this . panelDateFormatTime )
this . filter . end _time = bus . timeFormate ( this . searchTime [ 1 ] , this . panelDateFormatTime )
this . filter . end _time = bus . timeFormate ( this . searchTime [ 1 ] , this . panelDateFormatTime )
2021-03-31 10:02:12 +08:00
this . filter . value = this . searchTime [ 2 ]
2021-03-31 11:10:04 +08:00
this . filter . id = this . $refs . pickTime . $refs . timePicker . showTime . id
2021-12-23 20:22:40 +08:00
// this.getTableData()
2021-03-19 18:52:19 +08:00
this . getData ( this . filter )
2021-12-23 20:22:40 +08:00
const param = {
panelId : this . panelId ,
nowTimeType : JSON . stringify ( this . nowTimeType ) ,
searchTime : JSON . stringify ( this . searchTime )
}
const path = this . fromRoute . panel
this . updatePath ( param , path )
2021-12-14 18:57:21 +08:00
this . $store . dispatch ( 'dispatchPanelTime' , {
2021-12-09 16:59:46 +08:00
time : this . searchTime ,
nowTimeType : this . nowTimeType
} )
2021-03-19 18:52:19 +08:00
} ,
2021-03-31 10:02:12 +08:00
setSearchTime ( type , val , nowTimeType ) { // 设置searchTime
2021-03-19 18:52:19 +08:00
if ( type === 'minute' ) {
2021-12-30 19:17:22 +08:00
const startTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . setMinutes ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . getMinutes ( ) - val ) , this . panelDateFormatTime )
const endTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) , this . panelDateFormatTime )
2021-03-19 18:52:19 +08:00
this . $set ( this . searchTime , 0 , startTime )
this . $set ( this . searchTime , 1 , endTime )
this . $set ( this . searchTime , 2 , val + 'm' )
} else if ( type === 'hour' ) {
2021-12-30 19:17:22 +08:00
const startTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . setHours ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . getHours ( ) - val ) , this . panelDateFormatTime )
const endTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) , this . panelDateFormatTime )
2021-03-19 18:52:19 +08:00
this . $set ( this . searchTime , 0 , startTime )
this . $set ( this . searchTime , 1 , endTime )
this . $set ( this . searchTime , 2 , val + 'h' )
} else if ( type === 'date' ) {
2021-12-30 19:17:22 +08:00
const startTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . setDate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) . getDate ( ) - val ) , this . panelDateFormatTime )
const endTime = bus . timeFormate ( new Date ( bus . computeTimezone ( new Date ( ) . getTime ( ) ) ) , this . panelDateFormatTime )
2021-03-19 18:52:19 +08:00
this . $set ( this . searchTime , 0 , startTime )
this . $set ( this . searchTime , 1 , endTime )
this . $set ( this . searchTime , 2 , val + 'd' )
}
2021-12-23 20:22:40 +08:00
this . $refs . pickTime && ( this . $refs . pickTime . $refs . timePicker . searchTime = this . searchTime )
2021-03-19 18:52:19 +08:00
} ,
/* 时间条件查询--end */
// 公用操作
jumpTo ( data , id ) {
bus . $emit ( 'menu-change' , data )
this . $router . push ( {
path : '/' + data ,
query : {
t : + new Date ( )
2020-12-15 21:13:07 +08:00
}
2021-03-19 18:52:19 +08:00
} )
} ,
panelReloadOnlyPanel ( ) { // 仅刷新panel数据
if ( ! this . hasButton ( 'panel_view' ) ) {
return
}
2021-04-07 11:21:12 +08:00
this . $get ( 'visual/panel?pageSize=-1' ) . then ( response => {
2021-03-19 18:52:19 +08:00
if ( response . code === 200 ) {
this . panelData = response . data . list
for ( let i = 0 ; i < this . panelData . length ; i ++ ) {
if ( this . panelData [ i ] . id == this . showPanel . id ) {
2021-09-24 15:07:23 +08:00
this . showPanel = this . panelData [ i ]
2021-03-19 18:52:19 +08:00
break
2020-02-07 19:57:39 +08:00
}
2020-02-06 18:50:40 +08:00
}
2021-03-19 18:52:19 +08:00
}
} )
} ,
2021-01-13 15:27:17 +08:00
2021-03-19 18:52:19 +08:00
getTableData ( clearShowPanel ) {
const vm = this
2021-04-07 11:21:12 +08:00
this . $get ( 'visual/panel?type=dashboard&pageSize=-1' ) . then ( response => {
2021-03-19 18:52:19 +08:00
if ( response . code === 200 ) {
2022-04-27 16:55:01 +08:00
this . panelData = JSON . parse ( JSON . stringify ( response . data . list ) )
2021-03-19 18:52:19 +08:00
let isInitData = false
if ( response . data . list . length > 0 ) {
if ( this . $store . state . showPanel . id > 0 && this . $store . state . showPanel . name ) {
this . showPanel = JSON . parse ( JSON . stringify ( this . $store . state . showPanel ) )
2019-12-26 13:00:22 +08:00
}
2021-03-19 18:52:19 +08:00
if ( clearShowPanel ) {
this . showPanel . id = ''
2020-01-06 17:10:57 +08:00
}
2021-03-19 18:52:19 +08:00
if ( ! this . showPanel . id ) {
this . showPanel = response . data . list [ 0 ]
this . filter . panelId = this . showPanel . id
this . getData ( this . filter )
isInitData = true
} else {
handler ( response . data . list )
this . filter . panelId = this . showPanel . id
2020-02-21 22:01:33 +08:00
}
2021-03-19 18:52:19 +08:00
this . $nextTick ( ( ) => {
2021-05-26 14:15:35 +08:00
try {
this . $refs . selectPanel . $refs . panelTree . setCurrentKey ( this . showPanel )
} catch ( e ) { }
2021-03-19 18:52:19 +08:00
} )
2021-08-26 14:38:03 +08:00
this . isLoading = false
2021-03-19 18:52:19 +08:00
} else {
this . showPanel . id = ''
this . filter . panelId = ''
2021-10-08 13:41:53 +08:00
this . isLoading = ! response . data . list . length === 0
2020-02-07 19:57:39 +08:00
}
2021-03-19 18:52:19 +08:00
this . pageObj . total = response . data . total
if ( ! isInitData && ( this . panel . id === '' || this . panel . id === this . showPanel . id ) ) {
this . getData ( this . filter )
2020-02-21 22:01:33 +08:00
}
2021-03-19 18:52:19 +08:00
this . $store . state . showPanel . id = 0
this . $store . state . showPanel . name = ''
this . $store . state . showPanel . type = 'dashboard'
} else {
if ( response . msg ) {
this . $message . error ( response . msg )
} else if ( response . error ) {
this . $message . error ( response . error )
} else {
this . $message . error ( response )
2020-02-03 21:30:07 +08:00
}
}
2021-03-19 18:52:19 +08:00
} ) . catch ( ( error ) => {
// console.log('error................'+JSON.stringify(error));
if ( error ) {
console . error ( error )
this . $message . error ( error . toString ( ) )
2020-04-27 22:17:31 +08:00
}
2021-03-19 18:52:19 +08:00
} )
function handler ( panelData ) {
panelData . forEach ( panel => {
if ( panel . id == vm . showPanel . id ) {
vm . showPanel = panel
} else {
if ( panel . children && panel . children . length > 0 ) {
handler ( panel . children )
}
}
} )
}
} ,
// 定期刷新
selectInterval ( val ) {
this . visible = false
clearInterval ( this . intervalTimer )
if ( val ) {
this . interval = val
const start = new Date ( this . searchTime [ 1 ] )
const now = new Date ( )
const interval = Math . floor ( ( now . getTime ( ) - start . getTime ( ) ) / 1000 ) // 计算当前结束时间到现在的间隔(秒)
if ( interval >= 60 ) { // 如果结束时间到现在超过1分钟, 则
this . getIntervalData ( interval )
2020-02-14 18:07:21 +08:00
}
2021-03-19 18:52:19 +08:00
this . intervalTimer = setInterval ( ( ) => {
this . getIntervalData ( this . interval )
} , val * 1000 )
}
} ,
getIntervalData ( interval ) { // interval:结束时间到现在的秒数
const start = new Date ( this . searchTime [ 0 ] )
const end = new Date ( this . searchTime [ 1 ] )
start . setSeconds ( start . getSeconds ( ) + interval )
end . setSeconds ( end . getSeconds ( ) + interval )
const startTime = bus . timeFormate ( start , 'yyyy-MM-dd hh:mm' )
const endTime = bus . timeFormate ( end , 'yyyy-MM-dd hh:mm' )
this . searchTime = [ startTime , endTime ]
// 刷新数据
this . dateChange ( )
} ,
pageNo ( val ) {
this . pageObj . pageNo = val
this . getTableData ( )
} ,
pageSize ( val ) {
this . pageObj . pageSize = val
this . getTableData ( )
} ,
search : function ( ) {
if ( this . $refs . chartList ) {
2021-11-19 09:40:21 +08:00
// this.$refs.chartList.searchCharts(this.filter.searchName)
2021-03-19 18:52:19 +08:00
}
} ,
// 滚动事件触发下拉加载
onScroll ( ) {
const _self = this
this . scrollbarWrap . addEventListener ( 'scroll' , bus . debounce ( function ( ) {
_self . showTopBtn = _self . scrollbarWrap . scrollTop > 50
2021-04-28 15:32:50 +08:00
_self . overScroll10 = _self . scrollbarWrap . scrollTop > 50
2021-12-21 18:05:36 +08:00
_self . $refs . chartList . onScroll ( _self . scrollbarWrap . scrollTop )
2021-03-19 18:52:19 +08:00
} , 300 ) )
} ,
focusInput ( ) {
let classVal = document . getElementById ( 'queryPanel' ) . parentElement . getAttribute ( 'class' )
classVal = classVal . replace ( 'query-input-inactive' , 'query-input-active' )
document . getElementById ( 'queryPanel' ) . parentElement . setAttribute ( 'class' , classVal )
this . $refs . queryPanel . focus ( )
} ,
blurInput ( ) {
if ( ! this . filter . searchName || this . filter . searchName == '' ) {
setTimeout ( function ( ) {
let classVal = document . getElementById ( 'queryPanel' ) . parentElement . getAttribute ( 'class' )
classVal = classVal . replace ( 'query-input-active' , 'query-input-inactive' )
document . getElementById ( 'queryPanel' ) . parentElement . setAttribute ( 'class' , classVal )
} , 100 )
}
} ,
clearInput ( ) {
this . $refs . queryPanel . focus ( )
} ,
tableListEnter ( ) {
this . tableHover = true
2020-11-20 11:19:25 +08:00
} ,
2021-03-19 18:52:19 +08:00
tableListLeave ( ) {
this . tableHover = false
2021-09-15 17:29:34 +08:00
} ,
toTop ( wrap ) {
let currentTop = wrap . scrollTop
const interval = currentTop / 10
const intervalFunc = setInterval ( function ( ) { // 花200ms分10次回到顶部, 模拟动画效果
if ( currentTop === 0 ) {
clearInterval ( intervalFunc )
} else {
currentTop = ( currentTop - interval ) < interval * 0.5 ? 0 : currentTop - interval
wrap . scrollTop = currentTop
}
} , 20 )
2021-11-30 16:39:21 +08:00
} ,
load ( ) {
2021-12-08 16:20:03 +08:00
} ,
addChartBefore ( ) {
this . $store . dispatch ( 'dispatchEditChart' , {
chart : '' ,
type : 'add'
} )
} ,
disposeChart ( ) {
const chartInfo = this . $store . getters . getChart
const groupId = this . $store . getters . getGroupId
const type = this . $store . getters . getType
if ( type === 'add' ) {
this . addChart ( )
}
if ( type === 'edit' ) {
this . editChart ( chartInfo )
}
if ( type === 'addGroupItem' ) {
this . addGroupItem ( groupId )
}
if ( type === 'delete' ) {
this . delChart ( chartInfo )
}
if ( type === 'duplicate' ) {
this . editChart ( chartInfo , true )
}
2022-03-08 10:01:10 +08:00
} ,
afterImport ( ) {
this . dateChange ( )
this . panelReloadOnlyPanel ( )
2022-04-08 11:26:17 +08:00
} ,
htmlToPdf ( ) {
2022-04-11 15:49:10 +08:00
const dom = document . getElementsByClassName ( this . pdfId ) [ 0 ]
2022-04-08 11:26:17 +08:00
if ( dom ) {
2022-04-08 13:48:49 +08:00
// dom = dom.getElementsByClassName('vue-grid-layout')[0]
2022-04-15 16:29:23 +08:00
this . htmlTitle = this . showPanel . name
2022-04-08 11:26:17 +08:00
this . scrollbarWrap . scrollTop = this . scrollbarWrap . scrollHeight
this . $refs . chartList . onScroll ( this . scrollbarWrap . scrollTop )
2022-04-13 09:31:18 +08:00
// const div = document.createElement('div')
// div.setAttribute('class', 'el-loading-spinner')
// div.innerText = '12321312312312321'
// dom.insertBefore(div,)
2022-04-08 11:26:17 +08:00
let flag = true
this . showScreenLoading ( true )
let timer = setInterval ( ( ) => {
flag = true
this . $refs . chartList . copyDataList . forEach ( chart => {
if ( chart . type !== 'group' ) {
flag = flag && chart . loaded
} else if ( chart . collapse ) {
chart . children . forEach ( groupChart => {
flag = flag && groupChart . loaded
} )
}
} )
if ( flag ) {
clearInterval ( timer )
timer = null
setTimeout ( ( ) => {
document . body . style . height = 'auto'
2022-04-12 10:30:33 +08:00
document . getElementsByClassName ( 'left-menu' ) [ 0 ] . style . height = '100vh'
2022-04-08 13:48:49 +08:00
// document.getElementsByTagName('html')[0].style.overflow = 'visible'
2022-04-08 11:26:17 +08:00
const position = dom . getBoundingClientRect ( )
2022-04-13 10:48:00 +08:00
this . getPdf ( dom , - 1 * position . left , - 1 * position . top , this . searchTime )
2022-04-08 13:48:49 +08:00
// this.getPdf(dom, 0, 0)
} , 2000 )
2022-04-08 11:26:17 +08:00
}
} , 200 )
} else {
this . showScreenLoading ( false )
}
2022-04-11 17:13:56 +08:00
} ,
exportData ( ) {
this . scrollbarWrap . scrollTop = this . scrollbarWrap . scrollHeight
this . $refs . chartList . onScroll ( this . scrollbarWrap . scrollTop )
let flag = true
let timer = setInterval ( ( ) => {
flag = true
this . $refs . chartList . copyDataList . forEach ( chart => {
if ( chart . type !== 'group' ) {
flag = flag && chart . loaded
} else if ( chart . collapse ) {
chart . children . forEach ( groupChart => {
flag = flag && groupChart . loaded
} )
}
} )
if ( flag ) {
clearInterval ( timer )
timer = null
setTimeout ( ( ) => {
this . dataList . forEach ( item => {
if ( item . type === 'group' ) {
item . chartData = [ item . children ]
2022-04-29 18:50:01 +08:00
item . loaded = false
2022-04-11 17:13:56 +08:00
}
if ( item . type === 'group' && ! item . param . collapse ) {
item . children . forEach ( child => {
child . chartData = this . $refs . chartList . $refs [ 'chart' + item . id ] [ 0 ] . $refs . chart . $refs [ 'chart' + item . id ] . $refs . chartList . $refs [ 'chart' + child . id ] [ 0 ] . chartData
2022-04-29 18:50:01 +08:00
item . loaded = false
2022-04-11 17:13:56 +08:00
} )
} else {
item . chartData = this . $refs . chartList . $refs [ 'chart' + item . id ] [ 0 ] . chartData
2022-04-29 18:50:01 +08:00
item . loaded = false
2022-04-11 17:13:56 +08:00
}
} )
const data = JSON . stringify ( this . dataList )
2022-04-29 18:50:01 +08:00
const a = document . createElement ( 'a' )
const url = window . URL . createObjectURL (
new Blob ( [ this . gethtml ( ) ] , {
type : ''
} )
)
a . href = url
a . download = 'file.html'
a . click ( )
window . URL . revokeObjectURL ( url )
2022-04-11 17:13:56 +08:00
} , 2000 )
}
} , 200 )
2022-04-29 18:50:01 +08:00
} ,
gethtml ( ) {
2021-03-19 18:52:19 +08:00
}
} ,
created ( ) {
2021-12-23 14:54:00 +08:00
const searchKeys = {
// key: path 键
// value: vue set 参数
2021-12-23 20:22:40 +08:00
panelId : { target : this , propertyName : 'panelId' , type : 'number' } ,
searchTime : { target : this , propertyName : 'searchTime' , type : 'jsonParse' } ,
nowTimeType : { target : this , propertyName : 'nowTimeType' , type : 'jsonParse' }
2021-12-23 14:54:00 +08:00
}
2021-12-30 11:33:24 +08:00
this . initQueryFromPath ( searchKeys )
2021-12-23 14:54:00 +08:00
setTimeout ( ( ) => {
this . showPanel . id = this . panelId
this . filter . panelId = this . panelId
} )
2021-12-23 20:22:40 +08:00
if ( this . nowTimeType . type ) {
this . setSearchTime ( this . nowTimeType . type , this . nowTimeType . value , this . nowTimeType )
2021-12-30 19:17:22 +08:00
this . filter . start _time = bus . timeFormate ( this . searchTime [ 0 ] , this . panelDateFormatTime )
this . filter . end _time = bus . timeFormate ( this . searchTime [ 1 ] , this . panelDateFormatTime )
this . filter . end _time = bus . timeFormate ( this . searchTime [ 1 ] , this . panelDateFormatTime )
2021-12-23 20:22:40 +08:00
this . filter . value = this . searchTime [ 2 ]
}
2021-03-19 18:52:19 +08:00
this . getTableData ( )
2021-12-14 18:57:21 +08:00
this . $store . dispatch ( 'dispatchPanelTime' , {
2021-12-09 16:59:46 +08:00
time : this . searchTime ,
2021-12-23 20:22:40 +08:00
nowTimeType : this . nowTimeType
2021-12-09 16:59:46 +08:00
} )
2021-03-19 18:52:19 +08:00
} ,
mounted ( ) {
2022-03-10 16:51:51 +08:00
bus . $on ( 'refreshPanel' , this . refreshPanel )
2021-03-19 18:52:19 +08:00
this . scrollbarWrap = this . $refs . dashboardScrollbar
this . onScroll ( )
document . querySelector ( '#tableList' ) . addEventListener ( 'mouseenter' , this . tableListEnter )
document . querySelector ( '#tableList' ) . addEventListener ( 'mouseleave' , this . tableListLeave )
2021-12-21 15:41:46 +08:00
if ( ! document . onmousemove ) { // 添加鼠标移动事件监听
document . onmousemove = lineChartMove
}
2021-12-23 20:22:40 +08:00
if ( this . nowTimeType ) {
this . nowTimeType . start _time = this . searchTime [ 0 ]
this . nowTimeType . end _time = this . searchTime [ 1 ]
setTimeout ( ( ) => {
2022-03-10 11:08:40 +08:00
if ( this . $refs . pickTime && this . $refs . pickTime . $refs . timePicker ) {
this . $refs . pickTime . $refs . timePicker . setCustomTime ( this . nowTimeType )
}
2021-12-23 20:22:40 +08:00
} , 100 )
}
2021-03-19 18:52:19 +08:00
} ,
watch : {
'filter.searchName' : function ( n , o ) {
const temp = this
setTimeout ( function ( ) {
temp . search ( )
} , 1000 )
2021-05-12 16:19:43 +08:00
} ,
2021-07-16 09:56:48 +08:00
searchTime : {
immediate : true ,
deep : true ,
handler ( n ) {
localStorage . setItem ( 'panelTime' , JSON . stringify ( n ) )
}
} ,
2021-12-08 16:20:03 +08:00
chartRightBoxShow : {
immediate : false ,
deep : true ,
handler ( n ) {
if ( n ) {
this . disposeChart ( )
}
}
} ,
delChartFlag : {
immediate : false ,
deep : true ,
handler ( n ) {
if ( n ) {
this . disposeChart ( )
}
}
} ,
2021-05-12 16:19:43 +08:00
$route : {
immediate : true ,
handler ( ) {
// 是否弹出侧滑
const add = this . $route . query . add
this . $nextTick ( ( ) => {
if ( add ) {
if ( add === 'chart' ) {
2021-12-09 14:15:06 +08:00
this . addChartBefore ( )
2021-05-12 16:19:43 +08:00
}
if ( add === 'panel' ) {
this . toAdd ( )
}
}
} )
}
2021-03-19 18:52:19 +08:00
}
} ,
beforeDestroy ( ) {
2022-04-13 10:48:00 +08:00
this . $store . dispatch ( 'dispatchPanelLock' , { flag : true } )
2021-03-19 18:52:19 +08:00
if ( document . querySelector ( '#tableList' ) ) {
document . querySelector ( '#tableList' ) . removeEventListener ( 'mouseenter' , this . tableListEnter )
document . querySelector ( '#tableList' ) . removeEventListener ( 'mouseleave' , this . tableListLeave )
2019-12-26 13:00:22 +08:00
}
2021-03-19 18:52:19 +08:00
if ( this . scrollbarWrap ) {
this . scrollbarWrap . removeEventListener ( 'scroll' , bus . debounce )
2021-11-01 17:23:01 +08:00
}
2021-07-16 09:56:48 +08:00
localStorage . removeItem ( 'panelTime' )
2021-12-21 15:41:46 +08:00
if ( ! document . onmousemove ) { // 添加鼠标移动事件监听
document . onmousemove = null
}
2020-02-03 21:30:07 +08:00
}
2021-03-19 18:52:19 +08:00
}
2019-12-26 13:00:22 +08:00
< / script >