联调修改
This commit is contained in:
@@ -53,5 +53,23 @@ export function totalLimitStatisticsList(data: any) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 总体指标越限统计数据
|
||||||
|
export function totalLimitStatisticsData(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/harmonic-boot/totalLimitStatistics/data',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 指标越限程度数据
|
||||||
|
export function limitExtentData(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/harmonic-boot/limitRateDetailD/limitExtentData',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!--指标越限程度 -->
|
<!--指标越限程度 -->
|
||||||
<TableHeader :showReset="false" @selectChange="selectChange" datePicker v-if="fullscreen"></TableHeader>
|
<TableHeader :showReset="false" @selectChange="selectChange" datePicker v-if="fullscreen"></TableHeader>
|
||||||
<my-echart
|
<my-echart
|
||||||
class="tall"
|
class="tall"
|
||||||
:options="echartList"
|
:options="echartList"
|
||||||
:style="{ width: prop.width, height: `calc(${prop.height} / 2 )` }"
|
:style="{ width: prop.width, height: `calc(${prop.height} / 2 )` }"
|
||||||
/>
|
/>
|
||||||
<Table ref="tableRef" @cell-click="cellClickEvent" :height="`calc(${prop.height} / 2 - ${headerHeight}px + ${fullscreen ? 0 : 56}px )`" isGroup></Table>
|
<Table
|
||||||
|
ref="tableRef"
|
||||||
|
@cell-click="cellClickEvent"
|
||||||
|
:height="`calc(${prop.height} / 2 - ${headerHeight}px + ${fullscreen ? 0 : 56}px )`"
|
||||||
|
isGroup
|
||||||
|
></Table>
|
||||||
<!-- 指标日趋势图 -->
|
<!-- 指标日趋势图 -->
|
||||||
<DailyTrendChart ref="dailyTrendChartRef" />
|
<DailyTrendChart ref="dailyTrendChartRef" />
|
||||||
</div>
|
</div>
|
||||||
@@ -59,49 +64,39 @@ const fullscreen = computed(() => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const echartList = ref({
|
const echartList = ref()
|
||||||
title: {
|
|
||||||
text: '指标越限严重度'
|
|
||||||
},
|
|
||||||
|
|
||||||
xAxis: {
|
// const echartList = ref({
|
||||||
// name: '(区域)',
|
// title: {
|
||||||
data: ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
// text: '指标越限严重度'
|
||||||
},
|
// },
|
||||||
|
|
||||||
yAxis: {
|
// xAxis: {
|
||||||
name: '%', // 给X轴加单位
|
// data: ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
||||||
interval: 20
|
// },
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
left: '10px',
|
|
||||||
right: '20px'
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
// name: '暂降次数',
|
|
||||||
type: 'bar',
|
|
||||||
name: '越限占比',
|
|
||||||
data: [0, 7.5, 36, 0, 80],
|
|
||||||
barMaxWidth: 30
|
|
||||||
|
|
||||||
// label: {
|
// yAxis: {
|
||||||
// show: true,
|
// name: '%', // 给X轴加单位
|
||||||
// position: 'top',
|
// interval: 20
|
||||||
// textStyle: {
|
// },
|
||||||
// //数值样式
|
// grid: {
|
||||||
// color: '#000'
|
// left: '10px',
|
||||||
// },
|
// right: '20px'
|
||||||
// fontSize: 12
|
// },
|
||||||
// }
|
// options: {
|
||||||
}
|
// series: [
|
||||||
]
|
// {
|
||||||
}
|
// type: 'bar',
|
||||||
})
|
// name: '越限占比',
|
||||||
|
// data: [0, 7.5, 36, 0, 80],
|
||||||
|
// barMaxWidth: 30
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// })
|
||||||
const dailyTrendChartRef = ref()
|
const dailyTrendChartRef = ref()
|
||||||
const tableStore: any = new TableStore({
|
const tableStore: any = new TableStore({
|
||||||
url: '/user-boot/dept/deptTree',
|
url: '/harmonic-boot/limitRateDetailD/limitExtentData',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|
||||||
showPage: false,
|
showPage: false,
|
||||||
@@ -123,7 +118,7 @@ const tableStore: any = new TableStore({
|
|||||||
|
|
||||||
{
|
{
|
||||||
title: '越限最大值',
|
title: '越限最大值',
|
||||||
field: 'type',
|
field: 'maxValue',
|
||||||
minWidth: '60',
|
minWidth: '60',
|
||||||
render: 'customTemplate',
|
render: 'customTemplate',
|
||||||
customTemplate: (row: any) => {
|
customTemplate: (row: any) => {
|
||||||
@@ -132,26 +127,26 @@ const tableStore: any = new TableStore({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '国标限值',
|
title: '国标限值',
|
||||||
field: 'type1',
|
field: 'internationalValue',
|
||||||
minWidth: '60'
|
minWidth: '60'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '越限程度(%)',
|
title: '越限程度(%)',
|
||||||
field: 'type2',
|
field: 'extent',
|
||||||
minWidth: '60'
|
minWidth: '60'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '发生日期',
|
title: '发生日期',
|
||||||
field: 'type3',
|
field: 'time',
|
||||||
minWidth: '100'
|
minWidth: '100'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '越限最高监测点',
|
title: '越限最高监测点',
|
||||||
field: 'type4',
|
field: 'lineName',
|
||||||
minWidth: '90'
|
minWidth: '90'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
beforeSearchFun: () => {
|
beforeSearchFun: () => {
|
||||||
// 尝试从缓存获取时间值
|
// 尝试从缓存获取时间值
|
||||||
let beginTime, endTime
|
let beginTime, endTime
|
||||||
|
|
||||||
@@ -164,54 +159,48 @@ const tableStore: any = new TableStore({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果缓存中没有则使用默认值
|
// 如果缓存中没有则使用默认值
|
||||||
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0] || getTimeOfTheMonth(prop.timeKey)[0]
|
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0]
|
||||||
|
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1]
|
||||||
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1] || getTimeOfTheMonth(prop.timeKey)[1]
|
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.data = [
|
// 定义 x 轴标签顺序
|
||||||
{
|
const xAxisLabels = ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
||||||
name: '闪变',
|
|
||||||
type: '0.0',
|
|
||||||
type1: '2.0',
|
|
||||||
type2: '0.0',
|
|
||||||
type3: '/',
|
|
||||||
type4: '/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '谐波电压',
|
|
||||||
type: '1.72',
|
|
||||||
type1: '1.6',
|
|
||||||
type2: '7.5',
|
|
||||||
type3: '2025-03-09',
|
|
||||||
type4: '10kV1#电动机'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '谐波电流',
|
|
||||||
type: '27.2',
|
|
||||||
type1: '20.0',
|
|
||||||
type2: '36.0',
|
|
||||||
type3: '2025-03-16',
|
|
||||||
type4: '380V电焊机(治理前)'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '电压偏差',
|
|
||||||
type: '0.0',
|
|
||||||
type1: '2.0',
|
|
||||||
type2: '0.0',
|
|
||||||
type3: '/',
|
|
||||||
type4: '/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '三相不平衡',
|
|
||||||
type: '3.6',
|
|
||||||
type1: '2.0',
|
|
||||||
type2: '80.0',
|
|
||||||
type3: '2025-03-01',
|
|
||||||
type4: '380V电焊机(治理前)'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
// 根据指标名称顺序提取对应的 maxValue 数据
|
||||||
|
const chartData = xAxisLabels.map(label => {
|
||||||
|
// 在表格数据中查找对应指标名称的数据项
|
||||||
|
const item = tableStore.table.data.find((row: any) => row.name === label)
|
||||||
|
// 如果找到对应项,则返回 maxValue 值,否则返回 0
|
||||||
|
return item ? parseFloat(item.maxValue) || 0 : 0
|
||||||
|
})
|
||||||
|
echartList.value = {
|
||||||
|
title: {
|
||||||
|
text: '指标越限严重度'
|
||||||
|
},
|
||||||
|
|
||||||
|
xAxis: {
|
||||||
|
data: xAxisLabels
|
||||||
|
},
|
||||||
|
|
||||||
|
yAxis: {
|
||||||
|
name: '%', // 给X轴加单位
|
||||||
|
interval: 20
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '10px',
|
||||||
|
right: '20px'
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'bar',
|
||||||
|
name: '越限占比',
|
||||||
|
data: chartData,
|
||||||
|
barMaxWidth: 30
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 指标越限详情 -->
|
||||||
|
<el-dialog draggable title="指标越限详情" v-model="dialogVisible" append-to-body width="70%">
|
||||||
|
<TableHeader datePicker showExport :showReset="false" ref="tableHeaderRef">
|
||||||
|
<template v-slot:select>
|
||||||
|
<el-form-item label="监测点">
|
||||||
|
<el-select
|
||||||
|
v-model="tableStore.table.params.lineId"
|
||||||
|
placeholder="请选择监测点"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.lineId"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.lineId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" @cell-click="cellClickEvent" isGroup :height="height"></Table>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 谐波电流、谐波电压占有率 -->
|
||||||
|
<HarmonicRatio ref="harmonicRatioRef" @close="onHarmonicRatioClose" :TrendList="TrendList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, provide,nextTick } from 'vue'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import HarmonicRatio from '@/components/cockpit/indicatorFittingChart/components/harmonicRatio.vue'
|
||||||
|
import { cslineList } from '@/api/harmonic-boot/cockpit/cockpit'
|
||||||
|
|
||||||
|
const dialogVisible: any = ref(false)
|
||||||
|
const harmonicRatioRef: any = ref(null)
|
||||||
|
|
||||||
|
const options = ref()
|
||||||
|
const height = mainHeight(0, 2).height as any
|
||||||
|
const tableHeaderRef = ref()
|
||||||
|
const TrendList = ref([{lineType:1}])
|
||||||
|
const loop50 = (key: string) => {
|
||||||
|
let list: any[] = []
|
||||||
|
for (let i = 2; i < 26; i++) {
|
||||||
|
list.push({
|
||||||
|
title: i + '次',
|
||||||
|
field: key + i + 'Overtime',
|
||||||
|
width: '80',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row[key + i + 'Overtime']}</span>`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
const tableStore: any = new TableStore({
|
||||||
|
url: '/harmonic-boot/mainLine/statLimitRateDetails',
|
||||||
|
method: 'POST',
|
||||||
|
publicHeight: 30,
|
||||||
|
showPage: false,
|
||||||
|
exportName: '主要监测点列表',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
field: 'index',
|
||||||
|
title: '序号',
|
||||||
|
width: '80',
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
field: 'time',
|
||||||
|
width: '150',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '名称',
|
||||||
|
field: 'lineName',
|
||||||
|
width: '150'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '闪变越限(分钟)',
|
||||||
|
field: 'flickerOvertime',
|
||||||
|
width: '80',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.flickerOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '谐波电压越限(分钟)',
|
||||||
|
children: loop50('uharm')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '谐波电流越限(分钟)',
|
||||||
|
children: loop50('iharm')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '三相不平衡度越限(分钟)',
|
||||||
|
field: 'ubalanceOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电压偏差越限(分钟)',
|
||||||
|
field: 'uaberranceOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.uaberranceOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '频率偏差越限(分钟)',
|
||||||
|
field: 'freqDevOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
beforeSearchFun: () => {
|
||||||
|
},
|
||||||
|
loadCallback: () => {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
tableStore.table.params.sortBy = ''
|
||||||
|
tableStore.table.params.orderBy = ''
|
||||||
|
const open = async (row: any,searchBeginTime:any,searchEndTime:any) => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
initCSlineList()
|
||||||
|
tableStore.table.params.lineId = row.lineId
|
||||||
|
|
||||||
|
nextTick(() => {
|
||||||
|
tableHeaderRef.value.setTimeInterval([searchBeginTime, searchEndTime])
|
||||||
|
tableStore.table.params.searchBeginTime =searchBeginTime
|
||||||
|
tableStore.table.params.searchEndTime = searchEndTime
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击行
|
||||||
|
const cellClickEvent = ({ row, column }: any) => {
|
||||||
|
if (column.field != 'name' && column.field != 'time') {
|
||||||
|
dialogVisible.value = false
|
||||||
|
// if(column.title && column.title=='闪变越限(分钟)'){
|
||||||
|
// column.title = '1次'
|
||||||
|
// }
|
||||||
|
// harmonicRatioRef.value.openDialog(row,column.title.replace(/次/g, ""))
|
||||||
|
harmonicRatioRef.value.openDialog(row,column.field,column.title.replace(/次/g, ""))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 谐波弹窗关闭时的回调
|
||||||
|
const onHarmonicRatioClose = () => {
|
||||||
|
// 重新打开指标越限详情弹窗
|
||||||
|
nextTick(() => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const initCSlineList = async () => {
|
||||||
|
const res = await cslineList({})
|
||||||
|
options.value = res.data
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({ open })
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
@@ -26,7 +26,7 @@ import TableStore from '@/utils/tableStore'
|
|||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
||||||
import OverLimitDetails from '@/components/cockpit/listOfMainMonitoringPoints/components/overLimitDetails.vue'
|
import OverLimitDetails from '@/components/cockpit/gridSideStatistics/components/overLimitDetails.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||||
|
|||||||
@@ -3,6 +3,21 @@
|
|||||||
<!--指标拟合图 -->
|
<!--指标拟合图 -->
|
||||||
<TableHeader :showReset="false" datePicker @selectChange="selectChange" v-if="fullscreen">
|
<TableHeader :showReset="false" datePicker @selectChange="selectChange" v-if="fullscreen">
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
|
<el-form-item label="监测点">
|
||||||
|
<el-select
|
||||||
|
v-model="tableStore.table.params.lineId"
|
||||||
|
placeholder="请选择监测点"
|
||||||
|
clearable
|
||||||
|
style="width: 130px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in lineList"
|
||||||
|
:key="item.lineId"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.lineId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="用户功率">
|
<el-form-item label="用户功率">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="tableStore.table.params.power"
|
v-model="tableStore.table.params.power"
|
||||||
@@ -72,6 +87,7 @@ import MyEchart from '@/components/echarts/MyEchart.vue'
|
|||||||
import { useConfig } from '@/stores/config'
|
import { useConfig } from '@/stores/config'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||||
|
import { cslineList } from '@/api/harmonic-boot/cockpit/cockpit'
|
||||||
|
|
||||||
const prop = defineProps({
|
const prop = defineProps({
|
||||||
w: { type: String },
|
w: { type: String },
|
||||||
@@ -82,10 +98,12 @@ const prop = defineProps({
|
|||||||
timeValue: { type: Object }
|
timeValue: { type: Object }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const timeCacheStore = useTimeCacheStore()
|
const timeCacheStore = useTimeCacheStore()
|
||||||
const config = useConfig()
|
const config = useConfig()
|
||||||
|
|
||||||
|
const lineList: any = ref()
|
||||||
|
|
||||||
const powerList: any = ref([
|
const powerList: any = ref([
|
||||||
{
|
{
|
||||||
label: '三相总有功功率',
|
label: '三相总有功功率',
|
||||||
@@ -101,6 +119,7 @@ const fullscreen = computed(() => {
|
|||||||
const w = Number(prop.w)
|
const w = Number(prop.w)
|
||||||
const h = Number(prop.h)
|
const h = Number(prop.h)
|
||||||
if (!isNaN(w) && !isNaN(h) && w === 12 && h === 6) {
|
if (!isNaN(w) && !isNaN(h) && w === 12 && h === 6) {
|
||||||
|
initLineList()
|
||||||
// 执行相应逻辑
|
// 执行相应逻辑
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
@@ -135,6 +154,16 @@ const indicatorList: any = ref([
|
|||||||
value: '4'
|
value: '4'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
const initLineList = async () => {
|
||||||
|
cslineList({}).then(res => {
|
||||||
|
lineList.value = res.data
|
||||||
|
if (lineList.value && lineList.value.length > 0) {
|
||||||
|
tableStore.table.params.lineId = lineList.value[0].lineId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const echartList = ref({
|
const echartList = ref({
|
||||||
title: {
|
title: {
|
||||||
text: '谐波电压总畸变率越限与功率负荷曲线拟合图'
|
text: '谐波电压总畸变率越限与功率负荷曲线拟合图'
|
||||||
@@ -249,7 +278,7 @@ const tableStore: any = new TableStore({
|
|||||||
showPage: false,
|
showPage: false,
|
||||||
exportName: '主要监测点列表',
|
exportName: '主要监测点列表',
|
||||||
column: [],
|
column: [],
|
||||||
beforeSearchFun: () => {
|
beforeSearchFun: () => {
|
||||||
// 尝试从缓存获取时间值
|
// 尝试从缓存获取时间值
|
||||||
let beginTime, endTime
|
let beginTime, endTime
|
||||||
|
|
||||||
@@ -262,9 +291,11 @@ const tableStore: any = new TableStore({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果缓存中没有则使用默认值
|
// 如果缓存中没有则使用默认值
|
||||||
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0] || getTimeOfTheMonth(prop.timeKey)[0]
|
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0]
|
||||||
|
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1]
|
||||||
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1] || getTimeOfTheMonth(prop.timeKey)[1]
|
if (!tableStore.table.params.lineId && lineList.value && lineList.value.length > 0) {
|
||||||
|
tableStore.table.params.lineId = lineList.value[0].lineId
|
||||||
|
}
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.height = `calc(${prop.height} - 80px)`
|
tableStore.table.height = `calc(${prop.height} - 80px)`
|
||||||
|
|||||||
@@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 指标越限详情 -->
|
||||||
|
<el-dialog draggable title="指标越限详情" v-model="dialogVisible" append-to-body width="70%">
|
||||||
|
<TableHeader datePicker showExport :showReset="false" ref="tableHeaderRef">
|
||||||
|
<template v-slot:select>
|
||||||
|
<el-form-item label="监测点">
|
||||||
|
<el-select
|
||||||
|
v-model="tableStore.table.params.lineId"
|
||||||
|
placeholder="请选择监测点"
|
||||||
|
style="width: 150px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.lineId"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.lineId"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" @cell-click="cellClickEvent" isGroup :height="height"></Table>
|
||||||
|
</el-dialog>
|
||||||
|
<!-- 谐波电流、谐波电压占有率 -->
|
||||||
|
<HarmonicRatio ref="harmonicRatioRef" @close="onHarmonicRatioClose" :TrendList="TrendList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, provide,nextTick } from 'vue'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import HarmonicRatio from '@/components/cockpit/indicatorFittingChart/components/harmonicRatio.vue'
|
||||||
|
import { cslineList } from '@/api/harmonic-boot/cockpit/cockpit'
|
||||||
|
|
||||||
|
const dialogVisible: any = ref(false)
|
||||||
|
const harmonicRatioRef: any = ref(null)
|
||||||
|
|
||||||
|
const options = ref()
|
||||||
|
const height = mainHeight(0, 2).height as any
|
||||||
|
const tableHeaderRef = ref()
|
||||||
|
const TrendList = ref([{lineType:1}])
|
||||||
|
const loop50 = (key: string) => {
|
||||||
|
let list: any[] = []
|
||||||
|
for (let i = 2; i < 26; i++) {
|
||||||
|
list.push({
|
||||||
|
title: i + '次',
|
||||||
|
field: key + i + 'Overtime',
|
||||||
|
width: '80',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row[key + i + 'Overtime']}</span>`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
const tableStore: any = new TableStore({
|
||||||
|
url: '/harmonic-boot/mainLine/statLimitRateDetails',
|
||||||
|
method: 'POST',
|
||||||
|
publicHeight: 30,
|
||||||
|
showPage: false,
|
||||||
|
exportName: '主要监测点列表',
|
||||||
|
column: [
|
||||||
|
{
|
||||||
|
field: 'index',
|
||||||
|
title: '序号',
|
||||||
|
width: '80',
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '日期',
|
||||||
|
field: 'time',
|
||||||
|
width: '150',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '名称',
|
||||||
|
field: 'lineName',
|
||||||
|
width: '150'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '闪变越限(分钟)',
|
||||||
|
field: 'flickerOvertime',
|
||||||
|
width: '80',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.flickerOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '谐波电压越限(分钟)',
|
||||||
|
children: loop50('uharm')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '谐波电流越限(分钟)',
|
||||||
|
children: loop50('iharm')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '三相不平衡度越限(分钟)',
|
||||||
|
field: 'ubalanceOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.ubalanceOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电压偏差越限(分钟)',
|
||||||
|
field: 'uaberranceOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.uaberranceOvertime}</span>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '频率偏差越限(分钟)',
|
||||||
|
field: 'freqDevOvertime',
|
||||||
|
width: '100',
|
||||||
|
render: 'customTemplate',
|
||||||
|
customTemplate: (row: any) => {
|
||||||
|
return `<span style='cursor: pointer;text-decoration: underline;'>${row.freqDevOvertime}</span>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
beforeSearchFun: () => {
|
||||||
|
},
|
||||||
|
loadCallback: () => {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
tableStore.table.params.sortBy = ''
|
||||||
|
tableStore.table.params.orderBy = ''
|
||||||
|
const open = async (row: any,searchBeginTime:any,searchEndTime:any) => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
initCSlineList()
|
||||||
|
tableStore.table.params.lineId = row.lineId
|
||||||
|
|
||||||
|
nextTick(() => {
|
||||||
|
tableHeaderRef.value.setTimeInterval([searchBeginTime, searchEndTime])
|
||||||
|
tableStore.table.params.searchBeginTime =searchBeginTime
|
||||||
|
tableStore.table.params.searchEndTime = searchEndTime
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 点击行
|
||||||
|
const cellClickEvent = ({ row, column }: any) => {
|
||||||
|
if (column.field != 'name' && column.field != 'time') {
|
||||||
|
dialogVisible.value = false
|
||||||
|
// if(column.title && column.title=='闪变越限(分钟)'){
|
||||||
|
// column.title = '1次'
|
||||||
|
// }
|
||||||
|
// harmonicRatioRef.value.openDialog(row,column.title.replace(/次/g, ""))
|
||||||
|
harmonicRatioRef.value.openDialog(row,column.field,column.title.replace(/次/g, ""))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 谐波弹窗关闭时的回调
|
||||||
|
const onHarmonicRatioClose = () => {
|
||||||
|
// 重新打开指标越限详情弹窗
|
||||||
|
nextTick(() => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const initCSlineList = async () => {
|
||||||
|
const res = await cslineList({})
|
||||||
|
options.value = res.data
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({ open })
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
@@ -14,7 +14,7 @@ import Table from '@/components/table/index.vue'
|
|||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
||||||
import { ElTag } from 'element-plus'
|
import { ElTag } from 'element-plus'
|
||||||
import OverLimitDetails from '@/components/cockpit/listOfMainMonitoringPoints/components/overLimitDetails.vue'
|
import OverLimitDetails from '@/components/cockpit/monitoringPointList/components/overLimitDetails.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -156,12 +156,7 @@ const open = async (row: any,searchBeginTime:any,searchEndTime:any) => {
|
|||||||
const cellClickEvent = ({ row, column }: any) => {
|
const cellClickEvent = ({ row, column }: any) => {
|
||||||
if (column.field != 'name' && column.field != 'time') {
|
if (column.field != 'name' && column.field != 'time') {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
// if(column.title && column.title=='闪变越限(分钟)'){
|
harmonicRatioRef.value.openDialog(row,column.field,column.title.replace(/次/g, ""))
|
||||||
// column.title = '1次'
|
|
||||||
// }
|
|
||||||
// harmonicRatioRef.value.openDialog(row,column.title.replace(/次/g, ""))
|
|
||||||
harmonicRatioRef.value.openDialog(row,column.title)
|
|
||||||
harmonicRatioRef.value.getTrendRequest(row)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import { getTimeOfTheMonth } from '@/utils/formatTime'
|
|||||||
import OverLimitDetails from '@/components/cockpit/overLimitStatistics/components/overLimitDetails.vue'
|
import OverLimitDetails from '@/components/cockpit/overLimitStatistics/components/overLimitDetails.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||||
|
import { totalLimitStatisticsData } from '@/api/harmonic-boot/cockpit/cockpit'
|
||||||
|
|
||||||
const prop = defineProps({
|
const prop = defineProps({
|
||||||
w: { type: String },
|
w: { type: String },
|
||||||
@@ -45,6 +46,8 @@ const headerHeight = ref(57)
|
|||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const timeCacheStore = useTimeCacheStore()
|
const timeCacheStore = useTimeCacheStore()
|
||||||
|
|
||||||
|
const echartList = ref({})
|
||||||
|
|
||||||
const selectChange = (showSelect: any, height: any, datePickerValue?: any) => {
|
const selectChange = (showSelect: any, height: any, datePickerValue?: any) => {
|
||||||
headerHeight.value = height
|
headerHeight.value = height
|
||||||
|
|
||||||
@@ -67,46 +70,98 @@ const fullscreen = computed(() => {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const echartList = ref({
|
|
||||||
title: {
|
|
||||||
text: '指标越限占比'
|
|
||||||
},
|
|
||||||
|
|
||||||
xAxis: {
|
const initEcharts = () => {
|
||||||
// name: '(区域)',
|
totalLimitStatisticsData({
|
||||||
data: ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
searchBeginTime: tableStore.table.params.searchBeginTime,
|
||||||
},
|
searchEndTime: tableStore.table.params.searchEndTime
|
||||||
|
}).then((res: any) => {
|
||||||
|
const dataArray = [res.data.flicker, res.data.uharm, res.data.iharm, res.data.voltageDev, res.data.ubalance]
|
||||||
|
echartList.value = {
|
||||||
|
title: {
|
||||||
|
text: '指标越限占比'
|
||||||
|
},
|
||||||
|
|
||||||
yAxis: {
|
xAxis: {
|
||||||
name: '%', // 给X轴加单位
|
// name: '(区域)',
|
||||||
interval: 20
|
data: ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
||||||
},
|
},
|
||||||
grid: {
|
|
||||||
left: '10px',
|
|
||||||
right: '20px'
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
// name: '暂降次数',
|
|
||||||
type: 'bar',
|
|
||||||
name: '越限占比',
|
|
||||||
data: [0, 45, 22, 0, 70],
|
|
||||||
barMaxWidth: 30
|
|
||||||
|
|
||||||
// label: {
|
yAxis: {
|
||||||
// show: true,
|
name: '%', // 给X轴加单位
|
||||||
// position: 'top',
|
interval: 20
|
||||||
// textStyle: {
|
},
|
||||||
// //数值样式
|
grid: {
|
||||||
// color: '#000'
|
left: '10px',
|
||||||
// },
|
right: '20px'
|
||||||
// fontSize: 12
|
},
|
||||||
// }
|
options: {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
// name: '暂降次数',
|
||||||
|
type: 'bar',
|
||||||
|
name: '越限占比',
|
||||||
|
data: dataArray,
|
||||||
|
barMaxWidth: 30
|
||||||
|
|
||||||
|
// label: {
|
||||||
|
// show: true,
|
||||||
|
// position: 'top',
|
||||||
|
// textStyle: {
|
||||||
|
// //数值样式
|
||||||
|
// color: '#000'
|
||||||
|
// },
|
||||||
|
// fontSize: 12
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
}
|
|
||||||
})
|
// echartList.value.options.series[0].data = dataArray
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// const echartList: any = ref({
|
||||||
|
// title: {
|
||||||
|
// text: '指标越限占比'
|
||||||
|
// },
|
||||||
|
|
||||||
|
// xAxis: {
|
||||||
|
// // name: '(区域)',
|
||||||
|
// data: ['闪变', '谐波电压', '谐波电流', '电压偏差', '三相不平衡']
|
||||||
|
// },
|
||||||
|
|
||||||
|
// yAxis: {
|
||||||
|
// name: '%', // 给X轴加单位
|
||||||
|
// interval: 20
|
||||||
|
// },
|
||||||
|
// grid: {
|
||||||
|
// left: '10px',
|
||||||
|
// right: '20px'
|
||||||
|
// },
|
||||||
|
// options: {
|
||||||
|
// series: [
|
||||||
|
// {
|
||||||
|
// // name: '暂降次数',
|
||||||
|
// type: 'bar',
|
||||||
|
// name: '越限占比',
|
||||||
|
// data: [],
|
||||||
|
// barMaxWidth: 30
|
||||||
|
|
||||||
|
// // label: {
|
||||||
|
// // show: true,
|
||||||
|
// // position: 'top',
|
||||||
|
// // textStyle: {
|
||||||
|
// // //数值样式
|
||||||
|
// // color: '#000'
|
||||||
|
// // },
|
||||||
|
// // fontSize: 12
|
||||||
|
// // }
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// })
|
||||||
const OverLimitDetailsRef = ref()
|
const OverLimitDetailsRef = ref()
|
||||||
const tableStore: any = new TableStore({
|
const tableStore: any = new TableStore({
|
||||||
url: '/harmonic-boot/totalLimitStatistics/list',
|
url: '/harmonic-boot/totalLimitStatistics/list',
|
||||||
@@ -192,9 +247,9 @@ const tableStore: any = new TableStore({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果缓存中没有则使用默认值
|
// 如果缓存中没有则使用默认值
|
||||||
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0] || getTimeOfTheMonth(prop.timeKey)[0]
|
tableStore.table.params.searchBeginTime = beginTime || prop.timeValue?.[0]
|
||||||
|
|
||||||
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1] || getTimeOfTheMonth(prop.timeKey)[1]
|
tableStore.table.params.searchEndTime = endTime || prop.timeValue?.[1]
|
||||||
},
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.height = `calc(${prop.height} - 80px)`
|
tableStore.table.height = `calc(${prop.height} - 80px)`
|
||||||
@@ -219,17 +274,20 @@ const cellClickEvent = ({ row, column }: any) => {
|
|||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
|
initEcharts()
|
||||||
})
|
})
|
||||||
watch(
|
watch(
|
||||||
() => prop.timeKey,
|
() => prop.timeKey,
|
||||||
val => {
|
val => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
|
initEcharts()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
watch(
|
watch(
|
||||||
() => prop.timeValue, // 监听的目标(函数形式避免直接传递 props 导致的警告)
|
() => prop.timeValue, // 监听的目标(函数形式避免直接传递 props 导致的警告)
|
||||||
(newVal, oldVal) => {
|
(newVal, oldVal) => {
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
|
initEcharts()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
deep: true // 若 timeValue 是对象/数组,需开启深度监听
|
deep: true // 若 timeValue 是对象/数组,需开启深度监听
|
||||||
|
|||||||
@@ -23,7 +23,10 @@
|
|||||||
<Table ref="tableRef" @cell-click="cellClickEvent" isGroup :height="height"></Table>
|
<Table ref="tableRef" @cell-click="cellClickEvent" isGroup :height="height"></Table>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 查看波形 -->
|
<!-- 查看波形 -->
|
||||||
<HarmonicRatio ref="harmonicRatioRef" />
|
<el-dialog v-model="isWaveCharts" draggable title="瞬时/RMS波形" append-to-body width="70%">
|
||||||
|
<waveFormAnalysis v-loading="loading" v-if="isWaveCharts" ref="waveFormAnalysisRef"
|
||||||
|
@handleHideCharts="isWaveCharts = false" :wp="wp" />
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -32,9 +35,14 @@ import Table from '@/components/table/index.vue'
|
|||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import HarmonicRatio from '@/components/cockpit/listOfMainMonitoringPoints/components/harmonicRatio.vue'
|
import waveFormAnalysis from '@/views/govern/device/control/tabs/components/waveFormAnalysis.vue'
|
||||||
const dialogVisible: any = ref(false)
|
const dialogVisible: any = ref(false)
|
||||||
const harmonicRatioRef: any = ref(null)
|
const harmonicRatioRef: any = ref(null)
|
||||||
|
// 波形
|
||||||
|
const isWaveCharts = ref(false)
|
||||||
|
const loading = ref(false)
|
||||||
|
const wp = ref({})
|
||||||
|
|
||||||
const options = [
|
const options = [
|
||||||
{
|
{
|
||||||
value: '35kV进线',
|
value: '35kV进线',
|
||||||
@@ -140,7 +148,7 @@ const open = async (row: any) => {
|
|||||||
// 点击行
|
// 点击行
|
||||||
const cellClickEvent = ({ row, column }: any) => {
|
const cellClickEvent = ({ row, column }: any) => {
|
||||||
if (column.field != 'name') {
|
if (column.field != 'name') {
|
||||||
harmonicRatioRef.value.openDialog(row)
|
isWaveCharts.value = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import Table from '@/components/table/index.vue'
|
|||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
import { getTimeOfTheMonth } from '@/utils/formatTime'
|
||||||
import { useConfig } from '@/stores/config'
|
import { useConfig } from '@/stores/config'
|
||||||
import TransientStatisticsDetail from './components/transientStatisticsDetail.vue'
|
import TransientStatisticsDetail from '@/components/cockpit/transientStatistics/components/transientStatisticsDetail.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useTimeCacheStore } from '@/stores/timeCache'
|
import { useTimeCacheStore } from '@/stores/timeCache'
|
||||||
|
|||||||
Reference in New Issue
Block a user