修改冀北现场反馈问题
This commit is contained in:
BIN
public/favicon4.ico
Normal file
BIN
public/favicon4.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
@@ -182,7 +182,7 @@ const handlerHeight = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const computedSearchRow = () => {
|
const computedSearchRow = () => {
|
||||||
if (!headerForm.value.$el) return
|
if (!headerForm.value?.$el) return
|
||||||
// 清空headerFormSecond.value.$el下的元素
|
// 清空headerFormSecond.value.$el下的元素
|
||||||
while (headerFormSecond.value.$el.firstChild) {
|
while (headerFormSecond.value.$el.firstChild) {
|
||||||
headerForm.value.$el.appendChild(headerFormSecond.value.$el.firstChild)
|
headerForm.value.$el.appendChild(headerFormSecond.value.$el.firstChild)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
effect="customized"
|
effect="customized"
|
||||||
placement="bottom-start"
|
placement="bottom-start"
|
||||||
:offset="0"
|
:offset="0"
|
||||||
v-if=" data.level == 6"
|
v-if="data.level == 6"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<el-button type="primary" plain @click="viewDetails(data)">
|
<el-button type="primary" plain @click="viewDetails(data)">
|
||||||
@@ -74,18 +74,16 @@
|
|||||||
</el-tree>
|
</el-tree>
|
||||||
</div>
|
</div>
|
||||||
<!-- 变电站详情 -->
|
<!-- 变电站详情 -->
|
||||||
<SubstationDetails ref="SubstationRef"/>
|
<SubstationDetails ref="SubstationRef" />
|
||||||
<!-- 监测点详情 -->
|
<!-- 监测点详情 -->
|
||||||
<MonitoringPointDetails ref="MonitoringPointRef"/>
|
<MonitoringPointDetails ref="MonitoringPointRef" />
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import useCurrentInstance from '@/utils/useCurrentInstance'
|
import useCurrentInstance from '@/utils/useCurrentInstance'
|
||||||
import { ElTree } from 'element-plus'
|
import { ElTree } from 'element-plus'
|
||||||
import { ref, watch } from 'vue'
|
import { ref, watch, onMounted, nextTick } from 'vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import MonitoringPointDetails from './details/monitoringPointDetails.vue'
|
import MonitoringPointDetails from './details/monitoringPointDetails.vue'
|
||||||
import SubstationDetails from './details/substationDetails.vue'
|
import SubstationDetails from './details/substationDetails.vue'
|
||||||
@@ -110,6 +108,7 @@ const menuCollapse = ref(false)
|
|||||||
const MonitoringPointRef = ref()
|
const MonitoringPointRef = ref()
|
||||||
const SubstationRef = ref()
|
const SubstationRef = ref()
|
||||||
const filterText = ref('')
|
const filterText = ref('')
|
||||||
|
const treeRef = ref()
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
label: 'name',
|
label: 'name',
|
||||||
value: 'id'
|
value: 'id'
|
||||||
@@ -148,7 +147,7 @@ const onMenuCollapse = () => {
|
|||||||
}
|
}
|
||||||
// 查看详情
|
// 查看详情
|
||||||
const viewDetails = (data: any) => {
|
const viewDetails = (data: any) => {
|
||||||
console.log("🚀 ~ viewDetails ~ data:", data)
|
console.log('🚀 ~ viewDetails ~ data:', data)
|
||||||
if (data.level == 3) {
|
if (data.level == 3) {
|
||||||
// 变电站详情
|
// 变电站详情
|
||||||
// substationDetails
|
// substationDetails
|
||||||
@@ -194,12 +193,40 @@ const chooseNode = (value: string, data: any, node: any) => {
|
|||||||
// 没匹配到返回false
|
// 没匹配到返回false
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
// 等待树渲染完成
|
||||||
|
await nextTick()
|
||||||
|
// 可以等待更长时间确保树完全展开
|
||||||
|
})
|
||||||
|
|
||||||
|
const scrollToNode = (id: string) => {
|
||||||
|
console.log("🚀 ~ scrollToNode ~ id:", id)
|
||||||
|
if (!treeRef.value) return
|
||||||
|
|
||||||
|
// 获取目标节点的元素
|
||||||
|
const targetNode = treeRef.value.getNode(id)
|
||||||
|
if (!targetNode) return
|
||||||
|
|
||||||
|
// 获取节点的DOM元素
|
||||||
|
const nodeElement = document.querySelector(`[data-key="${id}"]`)
|
||||||
|
if (nodeElement) {
|
||||||
|
// 滚动到节点位置
|
||||||
|
nodeElement.scrollIntoView({
|
||||||
|
behavior: 'smooth', // 平滑滚动
|
||||||
|
block: 'center', // 垂直方向居中
|
||||||
|
inline: 'nearest' // 水平方向最近
|
||||||
|
})
|
||||||
|
|
||||||
|
// 如果需要高亮当前节点
|
||||||
|
treeRef.value.setCurrentKey(id)
|
||||||
|
}
|
||||||
|
}
|
||||||
// 添加树
|
// 添加树
|
||||||
const onAddTree = () => {
|
const onAddTree = () => {
|
||||||
emit('onAddTree')
|
emit('onAddTree')
|
||||||
}
|
}
|
||||||
const treeRef = ref<InstanceType<typeof ElTree>>()
|
defineExpose({ treeRef, scrollToNode })
|
||||||
defineExpose({ treeRef })
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ import { useDictData } from '@/stores/dictData'
|
|||||||
import { getTerminalTreeForFive } from '@/api/device-boot/terminalTree'
|
import { getTerminalTreeForFive } from '@/api/device-boot/terminalTree'
|
||||||
import { useConfig } from '@/stores/config'
|
import { useConfig } from '@/stores/config'
|
||||||
import { defineProps } from 'vue'
|
import { defineProps } from 'vue'
|
||||||
import {
|
import { getTree } from '@/api/advance-boot/assess'
|
||||||
getTree
|
|
||||||
} from '@/api/advance-boot/assess'
|
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'pms/pointTree'
|
name: 'pms/pointTree'
|
||||||
@@ -46,25 +44,24 @@ const formData = ref({
|
|||||||
scale: null
|
scale: null
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
// 添加数据转换函数
|
// 添加数据转换函数
|
||||||
const transformTreeData = (data: any[]) => {
|
const transformTreeData = (data: any[]) => {
|
||||||
if (!data || !Array.isArray(data)) return [];
|
if (!data || !Array.isArray(data)) return []
|
||||||
return data.map(item => {
|
return data.map(item => {
|
||||||
// 创建新对象,确保不修改原始数据
|
// 创建新对象,确保不修改原始数据
|
||||||
const newItem: any = {
|
const newItem: any = {
|
||||||
name: item.treeName ,
|
name: item.treeName,
|
||||||
id: item.treeId ,
|
id: item.treeId,
|
||||||
children: []
|
children: []
|
||||||
};
|
}
|
||||||
|
|
||||||
// 递归处理子节点
|
// 递归处理子节点
|
||||||
if (item.children && Array.isArray(item.children)) {
|
if (item.children && Array.isArray(item.children)) {
|
||||||
newItem.children = transformTreeData(item.children);
|
newItem.children = transformTreeData(item.children)
|
||||||
}
|
}
|
||||||
return newItem;
|
return newItem
|
||||||
});
|
})
|
||||||
};
|
}
|
||||||
|
|
||||||
const loadData = () => {
|
const loadData = () => {
|
||||||
let obj = classificationData.find(function (i) {
|
let obj = classificationData.find(function (i) {
|
||||||
@@ -75,12 +72,15 @@ const loadData = () => {
|
|||||||
let nodeKey = ''
|
let nodeKey = ''
|
||||||
getTree({}).then(res => {
|
getTree({}).then(res => {
|
||||||
// 转换数据结构为指定格式
|
// 转换数据结构为指定格式
|
||||||
const transformedData = transformTreeData(res.data);
|
const transformedData = transformTreeData(res.data)
|
||||||
|
|
||||||
// 确保有数据再进行处理
|
// 确保有数据再进行处理
|
||||||
if (transformedData && transformedData.length > 0 &&
|
if (
|
||||||
transformedData[0].children && transformedData[0].children.length > 0) {
|
transformedData &&
|
||||||
|
transformedData.length > 0 &&
|
||||||
|
transformedData[0].children &&
|
||||||
|
transformedData[0].children.length > 0
|
||||||
|
) {
|
||||||
nodeKey = transformedData[0].children[0].id
|
nodeKey = transformedData[0].children[0].id
|
||||||
emit('init', transformedData[0].children[0])
|
emit('init', transformedData[0].children[0])
|
||||||
|
|
||||||
@@ -94,7 +94,15 @@ const loadData = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const scrollToNode = (id: string) => {
|
||||||
|
// 树滚动
|
||||||
|
treeRef.value.scrollToNode(id)
|
||||||
|
}
|
||||||
loadData()
|
loadData()
|
||||||
|
defineExpose({
|
||||||
|
tree,
|
||||||
|
scrollToNode
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.point-tree {
|
.point-tree {
|
||||||
|
|||||||
@@ -135,11 +135,17 @@ const loadData = () => {
|
|||||||
if (nodeKey) {
|
if (nodeKey) {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
treeRef.value.treeRef.setCurrentKey(nodeKey)
|
treeRef.value.treeRef.setCurrentKey(nodeKey)
|
||||||
|
|
||||||
// treeRef.value.treeRef.setExpandedKeys(nodeKey)
|
// treeRef.value.treeRef.setExpandedKeys(nodeKey)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const scrollToNode = (id: string) => {
|
||||||
|
// 树滚动
|
||||||
|
treeRef.value.scrollToNode(id)
|
||||||
|
}
|
||||||
|
defineExpose({ treeRef, scrollToNode, tree })
|
||||||
loadData()
|
loadData()
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
贡献度计算
|
贡献度计算
|
||||||
<div style="font-size: 14px; font-weight: 500">
|
<div style="font-size: 14px; font-weight: 500">
|
||||||
<!-- {{ dotList.alias || '' }} -->
|
<!-- {{ dotList.alias || '' }} -->
|
||||||
<span class="monitoring-point">当前位置:{{ dotList.alias || '' }}</span>
|
<span class="monitoring-point1">当前位置:{{ dotList.alias || '' }}</span>
|
||||||
<back-component />
|
<back-component />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -598,7 +598,7 @@ onMounted(() => {
|
|||||||
width: 300px;
|
width: 300px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.monitoring-point {
|
.monitoring-point1 {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: var(--el-color-primary);
|
color: var(--el-color-primary);
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<!-- 模版 -->
|
<!-- 模版 -->
|
||||||
<TableHeader datePicker showExport :showReset="false" ref="TableHeaderRef">
|
<TableHeader datePicker showExport :showReset="false" ref="TableHeaderRef">
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="关键字">
|
<!-- <el-form-item label="关键字">
|
||||||
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="请输入关键字" />
|
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="请输入关键字" />
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
</template>
|
</template>
|
||||||
<template #operation>
|
<template #operation>
|
||||||
<el-button type="primary" icon="el-icon-CreditCard"
|
<el-button type="primary" icon="el-icon-CreditCard"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<TableHeader datePicker ref="tableHeaderRef" @selectChange="handleSelectChange" >
|
<TableHeader datePicker ref="tableHeaderRef" @selectChange="handleSelectChange">
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="区域">
|
<el-form-item label="区域">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
placeholder="请输入变电站/终端/监测点"
|
placeholder="请输入变电站/终端/监测点"
|
||||||
clearable
|
clearable
|
||||||
@input="handleFilterChange"
|
@input="handleFilterChange"
|
||||||
:show-word-limit=true
|
:show-word-limit="true"
|
||||||
:maxlength="32"
|
:maxlength="32"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -60,12 +60,24 @@
|
|||||||
show-overflow
|
show-overflow
|
||||||
>
|
>
|
||||||
<vxe-column title="序号" width="80" type="seq" align="center"></vxe-column>
|
<vxe-column title="序号" width="80" type="seq" align="center"></vxe-column>
|
||||||
<vxe-column field="gdName" title="供电公司" align="center" min-width="120" ></vxe-column>
|
<vxe-column field="gdName" title="供电公司" align="center" min-width="120"></vxe-column>
|
||||||
<vxe-column field="subStationName" :show-overflow="true" title="变电站" align="center" min-width="150"></vxe-column>
|
<vxe-column
|
||||||
|
field="subStationName"
|
||||||
|
:show-overflow="true"
|
||||||
|
title="变电站"
|
||||||
|
align="center"
|
||||||
|
min-width="150"
|
||||||
|
></vxe-column>
|
||||||
<vxe-column field="devName" title="终端名称" align="center" min-width="120"></vxe-column>
|
<vxe-column field="devName" title="终端名称" align="center" min-width="120"></vxe-column>
|
||||||
<!-- <vxe-column field="devType" title="终端型号" align="center" min-width="150"></vxe-column> -->
|
<!-- <vxe-column field="devType" title="终端型号" align="center" min-width="150"></vxe-column> -->
|
||||||
<!-- <vxe-column field="loginTime" title="投运时间" align="center" min-width="120"></vxe-column> -->
|
<!-- <vxe-column field="loginTime" title="投运时间" align="center" min-width="120"></vxe-column> -->
|
||||||
<vxe-column field="lineName" title="监测点名称" align="center" min-width="150" :formatter="formatMonitorId"></vxe-column>
|
<vxe-column
|
||||||
|
field="lineName"
|
||||||
|
title="监测点名称"
|
||||||
|
align="center"
|
||||||
|
min-width="150"
|
||||||
|
:formatter="formatMonitorId"
|
||||||
|
></vxe-column>
|
||||||
<!-- <vxe-column field="powerFlag" title="监测位置" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="powerFlag" title="监测位置" align="center" min-width="100"></vxe-column> -->
|
||||||
<!-- <vxe-column field="lineVoltage" title="监测点电压等级" align="center" min-width="120"></vxe-column> -->
|
<!-- <vxe-column field="lineVoltage" title="监测点电压等级" align="center" min-width="120"></vxe-column> -->
|
||||||
<!-- <vxe-column field="loadType" title="干扰源类型" align="center" min-width="120"></vxe-column> -->
|
<!-- <vxe-column field="loadType" title="干扰源类型" align="center" min-width="120"></vxe-column> -->
|
||||||
@@ -73,7 +85,12 @@
|
|||||||
<!-- <vxe-column field="interval" title="统计间隔" align="center" min-width="100" :formatter="formatMonitorId"></vxe-column> -->
|
<!-- <vxe-column field="interval" title="统计间隔" align="center" min-width="100" :formatter="formatMonitorId"></vxe-column> -->
|
||||||
<!-- <vxe-column field="onlineRate" title="在线率(%)" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="onlineRate" title="在线率(%)" align="center" min-width="100"></vxe-column> -->
|
||||||
<!-- <vxe-column field="integrity" title="完整率(%)" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="integrity" title="完整率(%)" align="center" min-width="100"></vxe-column> -->
|
||||||
<vxe-column field="harmonicValue" :title="harmonicValueTitle" align="center" min-width="120"></vxe-column>
|
<vxe-column
|
||||||
|
field="harmonicValue"
|
||||||
|
:title="harmonicValueTitle"
|
||||||
|
align="center"
|
||||||
|
min-width="120"
|
||||||
|
></vxe-column>
|
||||||
<!-- <vxe-column field="upCounts" title="暂升次数(次)" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="upCounts" title="暂升次数(次)" align="center" min-width="100"></vxe-column> -->
|
||||||
<!-- <vxe-column field="downCounts" title="电压暂降(次)" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="downCounts" title="电压暂降(次)" align="center" min-width="100"></vxe-column> -->
|
||||||
<!-- <vxe-column field="breakCounts" title="短时中断(次)" align="center" min-width="100"></vxe-column> -->
|
<!-- <vxe-column field="breakCounts" title="短时中断(次)" align="center" min-width="100"></vxe-column> -->
|
||||||
@@ -85,13 +102,14 @@
|
|||||||
<el-pagination
|
<el-pagination
|
||||||
:current-page="tableStore.table.params.pageNum"
|
:current-page="tableStore.table.params.pageNum"
|
||||||
:page-size="tableStore.table.params.pageSize"
|
:page-size="tableStore.table.params.pageSize"
|
||||||
:page-sizes="[10, 20, 50, 100,200]"
|
:page-sizes="[10, 20, 50, 100, 200]"
|
||||||
background
|
background
|
||||||
layout="sizes, total, prev, pager, next, jumper"
|
layout="sizes, total, prev, pager, next, jumper"
|
||||||
:total="tableStore.table.total"
|
:total="tableStore.table.total"
|
||||||
@size-change="handleSizeChange"
|
@size-change="handleSizeChange"
|
||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
class="custom-pagination"/>
|
class="custom-pagination"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -198,7 +216,8 @@ const filteredData = computed(() => {
|
|||||||
|
|
||||||
if (searchKeyword.value) {
|
if (searchKeyword.value) {
|
||||||
const keyword = searchKeyword.value.toLowerCase()
|
const keyword = searchKeyword.value.toLowerCase()
|
||||||
result = result.filter(item =>
|
result = result.filter(
|
||||||
|
item =>
|
||||||
(item.subStationName && item.subStationName.toLowerCase().includes(keyword)) ||
|
(item.subStationName && item.subStationName.toLowerCase().includes(keyword)) ||
|
||||||
(item.devName && item.devName.toLowerCase().includes(keyword)) ||
|
(item.devName && item.devName.toLowerCase().includes(keyword)) ||
|
||||||
(item.lineName && item.lineName.toLowerCase().includes(keyword))
|
(item.lineName && item.lineName.toLowerCase().includes(keyword))
|
||||||
@@ -245,7 +264,7 @@ provide('tableStore', tableStore)
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => areOptions,
|
() => areOptions,
|
||||||
(newOptions) => {
|
newOptions => {
|
||||||
if (newOptions && newOptions.length > 0) {
|
if (newOptions && newOptions.length > 0) {
|
||||||
selectedArea.value = newOptions[0].id
|
selectedArea.value = newOptions[0].id
|
||||||
tableStore.table.params.id = newOptions[0].id
|
tableStore.table.params.id = newOptions[0].id
|
||||||
@@ -256,7 +275,7 @@ watch(
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => options,
|
() => options,
|
||||||
(newOptions) => {
|
newOptions => {
|
||||||
if (newOptions && newOptions.length > 0) {
|
if (newOptions && newOptions.length > 0) {
|
||||||
if (!tableStore.table.params.statisticalType) {
|
if (!tableStore.table.params.statisticalType) {
|
||||||
tableStore.table.params.statisticalType = newOptions[0]
|
tableStore.table.params.statisticalType = newOptions[0]
|
||||||
@@ -267,12 +286,12 @@ watch(
|
|||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
|
|
||||||
tableStore.table.params.powerFlag = "0"
|
tableStore.table.params.powerFlag = '0'
|
||||||
tableStore.table.params.isUpToGrid = 0
|
tableStore.table.params.isUpToGrid = 0
|
||||||
tableStore.table.params.type = 1
|
tableStore.table.params.type = 1
|
||||||
|
|
||||||
const handleStatisticalTypeChange = (newVal: { id: any }) => {
|
const handleStatisticalTypeChange = (newVal: { id: any }) => {
|
||||||
console.log("🚀 ~ handleStatisticalTypeChange ~ newVal:", newVal)
|
console.log('🚀 ~ handleStatisticalTypeChange ~ newVal:', newVal)
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
tableStore.table.params.statisticalType = newVal
|
tableStore.table.params.statisticalType = newVal
|
||||||
tableStore.table.params.ids = [newVal.id]
|
tableStore.table.params.ids = [newVal.id]
|
||||||
@@ -330,7 +349,6 @@ onBeforeUnmount(() => {
|
|||||||
window.removeEventListener('resize', debouncedCalculateTableHeight)
|
window.removeEventListener('resize', debouncedCalculateTableHeight)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
const clearQueryParams = () => {
|
const clearQueryParams = () => {
|
||||||
// 将区域恢复成第一层
|
// 将区域恢复成第一层
|
||||||
if (areOptions && areOptions.length > 0) {
|
if (areOptions && areOptions.length > 0) {
|
||||||
@@ -343,10 +361,13 @@ const clearQueryParams = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
refresh: () => {
|
refresh: (name?: any) => {
|
||||||
// 清空查询参数
|
// 清空查询参数
|
||||||
clearQueryParams()
|
clearQueryParams()
|
||||||
tableHeaderRef.value.setTheDate(3)
|
tableHeaderRef.value.setTheDate(3)
|
||||||
|
if (name) {
|
||||||
|
searchKeyword.value = name
|
||||||
|
}
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ const tableStore = new TableStore({
|
|||||||
publicHeight: 65,
|
publicHeight: 65,
|
||||||
isWebPaging: true,
|
isWebPaging: true,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
filename: '监测点台账',
|
filename: '区域级评估',
|
||||||
column: [
|
column: [
|
||||||
{
|
{
|
||||||
title: '序号',
|
title: '序号',
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ const tableStore = new TableStore({
|
|||||||
publicHeight: 65,
|
publicHeight: 65,
|
||||||
isWebPaging: true,
|
isWebPaging: true,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
filename: '监测点台账',
|
filename: '敏感及重要用户评估',
|
||||||
column: [
|
column: [
|
||||||
{
|
{
|
||||||
title: '序号',
|
title: '序号',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<regionalAssessment v-if="activeTab == '3'" />
|
<regionalAssessment v-if="activeTab == '3'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="敏感及重要用户评估" name="4">
|
<el-tab-pane label="敏感及重要用户评估" name="4">
|
||||||
<userEvaluation v-if="activeTab == '4'" />
|
<userEvaluation ref="userEvaluationRef" v-if="activeTab == '4'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -33,7 +33,7 @@ defineOptions({
|
|||||||
const activeTab = ref('pollutionReport')
|
const activeTab = ref('pollutionReport')
|
||||||
const monitoringPointTabRef = ref()
|
const monitoringPointTabRef = ref()
|
||||||
const substationTabRef = ref()
|
const substationTabRef = ref()
|
||||||
|
const userEvaluationRef = ref()
|
||||||
const handleTabChange = (tabName: string) => {
|
const handleTabChange = (tabName: string) => {
|
||||||
if (tabName === 'pollutionReport' && monitoringPointTabRef.value) {
|
if (tabName === 'pollutionReport' && monitoringPointTabRef.value) {
|
||||||
monitoringPointTabRef.value.refresh()
|
monitoringPointTabRef.value.refresh()
|
||||||
@@ -47,11 +47,21 @@ watch(
|
|||||||
if (route.fullPath.includes('harmonic-boot/qydetailedAnalysis/pollutionReport')) {
|
if (route.fullPath.includes('harmonic-boot/qydetailedAnalysis/pollutionReport')) {
|
||||||
let type = (route.query.type as string) || 'null'
|
let type = (route.query.type as string) || 'null'
|
||||||
if (type == 'null') {
|
if (type == 'null') {
|
||||||
|
} else if (type == '1') {
|
||||||
|
activeTab.value = 'pollutionReport'
|
||||||
|
setTimeout(() => {
|
||||||
|
monitoringPointTabRef.value.refresh((route.query.name as string) || 'null')
|
||||||
|
}, 500)
|
||||||
} else if (type == '2') {
|
} else if (type == '2') {
|
||||||
activeTab.value = 'anotherReport'
|
activeTab.value = 'anotherReport'
|
||||||
|
setTimeout(() => {
|
||||||
substationTabRef.value.refresh((route.query.statisticalType as string) || 'null')
|
substationTabRef.value.refresh((route.query.statisticalType as string) || 'null')
|
||||||
|
}, 500)
|
||||||
} else if (type == '4') {
|
} else if (type == '4') {
|
||||||
activeTab.value = '4'
|
activeTab.value = '4'
|
||||||
|
setTimeout(() => {
|
||||||
|
userEvaluationRef.value.setSearchValue((route.query.name as string) || '')
|
||||||
|
}, 500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -494,10 +494,10 @@ watch(
|
|||||||
let type = (route.query.type as string) || 'null'
|
let type = (route.query.type as string) || 'null'
|
||||||
if (type == 'null') {
|
if (type == 'null') {
|
||||||
} else if (type == '1') {
|
} else if (type == '1') {
|
||||||
nextTick(() => {
|
setTimeout(() => {
|
||||||
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
}, 500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -152,11 +152,7 @@
|
|||||||
<vxe-column type="seq" title="序号" width="80px">
|
<vxe-column type="seq" title="序号" width="80px">
|
||||||
<template #default="{ rowIndex }">
|
<template #default="{ rowIndex }">
|
||||||
<span>
|
<span>
|
||||||
{{
|
{{ (pageNum - 1) * pageSize + rowIndex + 1 }}
|
||||||
(pageNum - 1) * pageSize +
|
|
||||||
rowIndex +
|
|
||||||
1
|
|
||||||
}}
|
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
@@ -488,10 +484,10 @@ watch(
|
|||||||
let type = (route.query.type as string) || 'null'
|
let type = (route.query.type as string) || 'null'
|
||||||
if (type == 'null') {
|
if (type == 'null') {
|
||||||
} else if (type == '1') {
|
} else if (type == '1') {
|
||||||
nextTick(() => {
|
setTimeout(() => {
|
||||||
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
})
|
}, 500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<el-tab-pane label="谐波频谱" name="4" lazy v-if="!isReload">
|
<el-tab-pane label="谐波频谱" name="4" lazy v-if="!isReload">
|
||||||
<Xiebopingpu v-if="activeName == '4'" />
|
<Xiebopingpu v-if="activeName == '4'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="告警数据统计" name="5" lazy v-if="!isReload ">
|
<el-tab-pane label="告警数据统计" name="5" lazy v-if="!isReload && VITE_FLAG">
|
||||||
<Gaojingshujutongji v-if="activeName == '5'" />
|
<Gaojingshujutongji v-if="activeName == '5'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="监测点运行状态" name="6" lazy v-if="!isReload">
|
<el-tab-pane label="监测点运行状态" name="6" lazy v-if="!isReload">
|
||||||
@@ -64,7 +64,7 @@ import { defineOptions, watch, onMounted, ref, nextTick } from 'vue'
|
|||||||
import 'splitpanes/dist/splitpanes.css'
|
import 'splitpanes/dist/splitpanes.css'
|
||||||
import { Splitpanes, Pane } from 'splitpanes'
|
import { Splitpanes, Pane } from 'splitpanes'
|
||||||
import PointTree from '@/components/tree/pqs/pointTree.vue'
|
import PointTree from '@/components/tree/pqs/pointTree.vue'
|
||||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import Wentaizonghepinggu from './wentaizonghepinggu/index.vue'
|
import Wentaizonghepinggu from './wentaizonghepinggu/index.vue'
|
||||||
import Wentaizhibiaohegelv from './wentaizhibiaohegelv/index.vue'
|
import Wentaizhibiaohegelv from './wentaizhibiaohegelv/index.vue'
|
||||||
@@ -77,7 +77,8 @@ import { useRoute } from 'vue-router'
|
|||||||
import StatisticalReport from './statisticalReport/index.vue'
|
import StatisticalReport from './statisticalReport/index.vue'
|
||||||
const VITE_FLAG = import.meta.env.VITE_NAME == 'jibei'
|
const VITE_FLAG = import.meta.env.VITE_NAME == 'jibei'
|
||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
|
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||||
|
import { id } from 'element-plus/es/locale'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'harmonic-boot/monitor/online'
|
name: 'harmonic-boot/monitor/online'
|
||||||
})
|
})
|
||||||
@@ -140,19 +141,42 @@ watch(
|
|||||||
if (route.fullPath.includes('harmonic-boot/monitor/online')) {
|
if (route.fullPath.includes('harmonic-boot/monitor/online')) {
|
||||||
let type = (route.query.type as string) || 'null'
|
let type = (route.query.type as string) || 'null'
|
||||||
let lineId = (route.query.id as string) || 'null'
|
let lineId = (route.query.id as string) || 'null'
|
||||||
console.log('🚀 ~ type:', type)
|
|
||||||
if (type == 'null') {
|
if (type == 'null') {
|
||||||
} else {
|
} else {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
monitoringPoint.setValue('lineId', lineId)
|
monitoringPoint.setValue('lineId', lineId)
|
||||||
|
//
|
||||||
|
// pointTree.value.tree
|
||||||
activeName.value = type
|
activeName.value = type
|
||||||
|
setTimeout(() => {
|
||||||
|
pointTree.value.scrollToNode(lineId)
|
||||||
|
|
||||||
|
monitoringPoint.setValue('lineName', findNodeByTreeId(pointTree.value.tree, lineId).alias)
|
||||||
|
}, 500)
|
||||||
}, 1000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ deep: true, immediate: true }
|
{ deep: true, immediate: true }
|
||||||
)
|
)
|
||||||
|
// 递归函数(同上)
|
||||||
|
const findNodeByTreeId = (treeData: any, id: any) => {
|
||||||
|
for (const node of treeData) {
|
||||||
|
if (node.id == id) return node
|
||||||
|
if (node.children && Array.isArray(node.children) && node.children.length) {
|
||||||
|
const found: any = findNodeByTreeId(node.children, id)
|
||||||
|
if (found) return found
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
// 调用示例
|
||||||
|
const getTargetNode = () => {
|
||||||
|
const targetId = '9b7adecf588b4110acb7018f297592a7'
|
||||||
|
const node = findNodeByTreeId(treeData.value, targetId)
|
||||||
|
console.log('Vue中找到的节点:', node)
|
||||||
|
}
|
||||||
const changeTab = (e: string) => {
|
const changeTab = (e: string) => {
|
||||||
activeName.value = e
|
activeName.value = e
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,11 +140,11 @@ const exportReport = () => {
|
|||||||
loading.value = true
|
loading.value = true
|
||||||
let form = new FormData()
|
let form = new FormData()
|
||||||
form.append('isUrl', false)
|
form.append('isUrl', false)
|
||||||
form.append('lineIndex', dotList.value.id)
|
form.append('lineIndex', monitoringPoint.state.lineId)
|
||||||
form.append('startTime', TableHeaderRef.value.datePickerRef.timeValue[0])
|
form.append('startTime', TableHeaderRef.value.datePickerRef.timeValue[0])
|
||||||
form.append('endTime', TableHeaderRef.value.datePickerRef.timeValue[1])
|
form.append('endTime', TableHeaderRef.value.datePickerRef.timeValue[1])
|
||||||
form.append('type', 0)
|
form.append('type', 0)
|
||||||
form.append('name', dotList.value.name)
|
form.append('name', monitoringPoint.state.lineName.split('>').pop())
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: '下载报告中,请稍等.....',
|
message: '下载报告中,请稍等.....',
|
||||||
duration: 1000
|
duration: 1000
|
||||||
@@ -159,7 +159,7 @@ const exportReport = () => {
|
|||||||
const link = document.createElement('a') // 创建a标签
|
const link = document.createElement('a') // 创建a标签
|
||||||
link.href = url
|
link.href = url
|
||||||
link.download =
|
link.download =
|
||||||
dotList.value.name +
|
monitoringPoint.state.lineName.split('>').pop() +
|
||||||
TableHeaderRef.value.datePickerRef.timeValue[0] +
|
TableHeaderRef.value.datePickerRef.timeValue[0] +
|
||||||
'_' +
|
'_' +
|
||||||
TableHeaderRef.value.datePickerRef.timeValue[1] // 设置下载的文件名
|
TableHeaderRef.value.datePickerRef.timeValue[1] // 设置下载的文件名
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- 综合评估详情 -->
|
<!-- 综合评估详情 -->
|
||||||
<el-dialog draggable title="区域污染水平评估" v-model="dialogVisible" width="1400px">
|
<el-dialog draggable title="稳态电能质量水平评估" v-model="dialogVisible" width="1400px">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div style="width: 400px">
|
<div style="width: 400px">
|
||||||
<vxe-table
|
<vxe-table
|
||||||
v-bind="defaultAttribute"
|
v-bind="defaultAttribute"
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
@current-change="currentChangeEvent"
|
@cell-click="currentChangeEvent"
|
||||||
height="250px"
|
height="250px"
|
||||||
:row-config="{ isCurrent: true, isHover: true }"
|
:row-config="{ isCurrent: true, isHover: true }"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
|
style="cursor: pointer"
|
||||||
>
|
>
|
||||||
<vxe-column field="deptName" title="地市" />
|
<vxe-column field="deptName" title="地市" />
|
||||||
<vxe-column field="score" title="污染值" sortable>
|
<vxe-column field="score" title="污染值" sortable>
|
||||||
@@ -26,7 +27,15 @@
|
|||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
<div class="ml10" style="width: 990px">
|
<div class="ml10" style="width: 990px">
|
||||||
<vxe-table v-bind="defaultAttribute" v-loading="loadingTab" ref="vxeRef" height="250px" :data="subdata">
|
<vxe-table
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
@cell-click="clickAttribute"
|
||||||
|
v-loading="loadingTab"
|
||||||
|
ref="vxeRef"
|
||||||
|
height="250px"
|
||||||
|
:data="subdata"
|
||||||
|
style="cursor: pointer"
|
||||||
|
>
|
||||||
<vxe-column type="seq" width="70" title="序号"></vxe-column>
|
<vxe-column type="seq" width="70" title="序号"></vxe-column>
|
||||||
<vxe-column field="subName" title="变电站名称" min-width="120"></vxe-column>
|
<vxe-column field="subName" title="变电站名称" min-width="120"></vxe-column>
|
||||||
<vxe-column field="lineName" title="监测点名称" align="center" min-width="120"></vxe-column>
|
<vxe-column field="lineName" title="监测点名称" align="center" min-width="120"></vxe-column>
|
||||||
@@ -59,7 +68,7 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</div> -->
|
</div> -->
|
||||||
|
|
||||||
<MyEChart style="height: 300px" :options="picEChart" @echartClick="echartClick"/>
|
<MyEChart style="height: 300px" :options="picEChart" @echartClick="echartClick" />
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
@@ -121,7 +130,7 @@ const analysis = () => {
|
|||||||
name: '',
|
name: '',
|
||||||
data: first10Items.map((item: any) => item.projectName.split('(')[0].trim()),
|
data: first10Items.map((item: any) => item.projectName.split('(')[0].trim()),
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
rotate: 30 // 核心:倾斜 45 度(推荐 30/45/60,角度太大易读性差)
|
rotate: 20 // 核心:倾斜 45 度(推荐 30/45/60,角度太大易读性差)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
@@ -171,16 +180,25 @@ const setColor = val => {
|
|||||||
? '#00B07D'
|
? '#00B07D'
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
const echartClick = (res:any) => {
|
const echartClick = (res: any) => {
|
||||||
router.push({
|
router.push({
|
||||||
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
||||||
query: {
|
query: {
|
||||||
type: '4',
|
type: '4',
|
||||||
|
name: res.name,
|
||||||
|
t: Date.now()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const clickAttribute = (row: any) => {
|
||||||
|
router.push({
|
||||||
|
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
||||||
|
query: {
|
||||||
|
type: '1',
|
||||||
|
name: row.row.lineName,
|
||||||
t: Date.now()
|
t: Date.now()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log("🚀 ~ echartClick ~ res:", res)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -2,9 +2,16 @@
|
|||||||
<div class="propInfo" v-if="show">
|
<div class="propInfo" v-if="show">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<el-form :inline="false" label-width="auto">
|
<el-form :inline="false" label-width="auto">
|
||||||
<el-form-item label=" 筛选:">
|
<el-form-item label=" 筛选数据">
|
||||||
<el-input v-model="value" size="small" clearable placeholder="请输入关键字进行筛选"></el-input>
|
<el-input v-model="value" size="small" clearable placeholder="请输入关键字进行筛选"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="电网标志">
|
||||||
|
<el-select v-model="powerFlag" placeholder="请选择电网标志">
|
||||||
|
<el-option label="全部" value="0"></el-option>
|
||||||
|
<el-option label="电网侧" value="1"></el-option>
|
||||||
|
<el-option label="非电网侧" value="2"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
</el-form>
|
</el-form>
|
||||||
<Close class="ico" @click="show = false" />
|
<Close class="ico" @click="show = false" />
|
||||||
</div>
|
</div>
|
||||||
@@ -19,8 +26,8 @@
|
|||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
:row-config="{ isCurrent: true, isHover: true }"
|
:row-config="{ isCurrent: true, isHover: true }"
|
||||||
:columnConfig="{ resizable: true }"
|
:columnConfig="{ resizable: true }"
|
||||||
@current-change="currentChangeEvent"
|
@cell-click="currentChangeEvent"
|
||||||
style="z-index: 0;"
|
style="z-index: 0"
|
||||||
>
|
>
|
||||||
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
||||||
<vxe-column field="gdName" title="供电公司"></vxe-column>
|
<vxe-column field="gdName" title="供电公司"></vxe-column>
|
||||||
@@ -28,6 +35,11 @@
|
|||||||
<!-- <vxe-column field="deviceName" title="终端名称"></vxe-column> -->
|
<!-- <vxe-column field="deviceName" title="终端名称"></vxe-column> -->
|
||||||
<!-- <vxe-column field="ip" title="IP"></vxe-column> -->
|
<!-- <vxe-column field="ip" title="IP"></vxe-column> -->
|
||||||
<vxe-column field="lineName" title="监测点名称"></vxe-column>
|
<vxe-column field="lineName" title="监测点名称"></vxe-column>
|
||||||
|
<vxe-column field="powerFlag" title="电网标志">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.powerFlag == 0 ? '电网侧' : '非电网侧' }}
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
<!-- <vxe-column field="loadType" title="干扰源"></vxe-column> -->
|
<!-- <vxe-column field="loadType" title="干扰源"></vxe-column> -->
|
||||||
<vxe-column field="loadType" title="干扰源类型"></vxe-column>
|
<vxe-column field="loadType" title="干扰源类型"></vxe-column>
|
||||||
<vxe-column field="objName" title="监测对象"></vxe-column>
|
<vxe-column field="objName" title="监测对象"></vxe-column>
|
||||||
@@ -40,9 +52,10 @@ import { defaultAttribute } from '@/components/table/defaultAttribute'
|
|||||||
import { Close } from '@element-plus/icons-vue'
|
import { Close } from '@element-plus/icons-vue'
|
||||||
const emit = defineEmits(['flyTo'])
|
const emit = defineEmits(['flyTo'])
|
||||||
const value = ref('')
|
const value = ref('')
|
||||||
const tableRef=ref()
|
const tableRef = ref()
|
||||||
const dataList = ref([])
|
const dataList = ref([])
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
const powerFlag = ref('0')
|
||||||
const open = (data: any) => {
|
const open = (data: any) => {
|
||||||
dataList.value = []
|
dataList.value = []
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@@ -99,11 +112,11 @@ function filterDataByKeyword(data, keyword) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const currentChangeEvent=()=>{
|
const currentChangeEvent = () => {
|
||||||
// tableRef.value.getCurrentRecord()
|
// tableRef.value.getCurrentRecord()
|
||||||
console.log("🚀 ~ currentChangeEvent ~ tableRef.value.getCurrentRecord():", tableRef.value.getCurrentRecord())
|
console.log('🚀 ~ currentChangeEvent ~ tableRef.value.getCurrentRecord():', tableRef.value.getCurrentRecord())
|
||||||
let data=tableRef.value.getCurrentRecord()
|
let data = tableRef.value.getCurrentRecord()
|
||||||
emit('flyTo',{ coordinate: [data.lng, data.lat] }, 16)
|
emit('flyTo', { coordinate: [data.lng, data.lat] }, 16)
|
||||||
}
|
}
|
||||||
|
|
||||||
const show = ref(false)
|
const show = ref(false)
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ const jump = () => {
|
|||||||
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
||||||
query: {
|
query: {
|
||||||
type: '2',
|
type: '2',
|
||||||
statisticalType:contaminate.value,
|
statisticalType: contaminate.value,
|
||||||
t: Date.now()
|
t: Date.now()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -536,5 +536,7 @@ defineExpose({ open })
|
|||||||
.text-style {
|
.text-style {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
text-decoration-color: var(--el-color-primary);
|
||||||
|
text-underline-offset: 4px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
<!-- 暂态 -->
|
<!-- 暂态 -->
|
||||||
<template>
|
<template>
|
||||||
<el-dialog draggable :title="title" v-model="dialogVisible" width="800px">
|
<el-dialog draggable :title="title" v-model="dialogVisible" width="800px">
|
||||||
<vxe-table v-bind="defaultAttribute" ref="vxeRef" height="360px" :data="tableData">
|
<vxe-table
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
ref="vxeRef"
|
||||||
|
height="360px"
|
||||||
|
:data="tableData"
|
||||||
|
@cell-click="currentChangeEvent"
|
||||||
|
style="cursor: pointer;"
|
||||||
|
>
|
||||||
<vxe-column title="序号" width="70" type="seq"></vxe-column>
|
<vxe-column title="序号" width="70" type="seq"></vxe-column>
|
||||||
<vxe-column field="lineName" title="监测点名称" />
|
<vxe-column field="lineName" title="监测点名称" />
|
||||||
<vxe-column field="subName" title="变电站名称"></vxe-column>
|
<vxe-column field="subName" title="变电站名称"></vxe-column>
|
||||||
@@ -16,6 +23,8 @@ import MyEChart from '@/components/echarts/MyEchart.vue'
|
|||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { getEventDetailByList } from '@/api/device-boot/panorama'
|
import { getEventDetailByList } from '@/api/device-boot/panorama'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
|
const router = useRouter()
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const dialogVisible: any = ref(false)
|
const dialogVisible: any = ref(false)
|
||||||
const list = dictData.getBasicData('Event_Statis')
|
const list = dictData.getBasicData('Event_Statis')
|
||||||
@@ -30,6 +39,19 @@ const open = async (row: any, name: string, type: string) => {
|
|||||||
|
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
const currentChangeEvent = (row: any) => {
|
||||||
|
router.push({
|
||||||
|
name: 'Descentsystem/transientList',
|
||||||
|
query: {
|
||||||
|
type: '1',
|
||||||
|
name:row.row.lineName,
|
||||||
|
dicData: types.value,
|
||||||
|
t: Date.now()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 跳转暂态列表
|
||||||
|
|
||||||
// 查看详情
|
// 查看详情
|
||||||
|
|
||||||
defineExpose({ open })
|
defineExpose({ open })
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
<template #content>
|
<template #content>
|
||||||
<span style="">{{ dropList.gdName }}_{{ dropList.bdName }}_{{ dropList.lineName }}</span>
|
<span style="">{{ dropList.gdName }}_{{ dropList.bdName }}_{{ dropList.lineName }}</span>
|
||||||
<span style="font-weight: 500" class="ml20">最新数据时间:</span>
|
<span style="font-weight: 500" class="ml20">最新数据时间:</span>
|
||||||
<span style="color: var(--color-primary-default)">{{ dropList.updateTime }}</span>
|
<span style="color: var(--el-color-primary)">{{ dropList.updateTime }}</span>
|
||||||
<span style="font-weight: 500" class="ml20">统计日期:</span>
|
<span style="font-weight: 500" class="ml20">统计日期:</span>
|
||||||
<span style="color: var(--color-primary-default)">
|
<span style="color: var(--el-color-primary)">
|
||||||
{{ getTimeOfTheMonth('3')[0] + '至' + getTimeOfTheMonth('3')[1] }}
|
{{ getTimeOfTheMonth('3')[0] + '至' + getTimeOfTheMonth('3')[1] }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<h3 class="mb10 iconBox text-style" @click="clickAlarm(8)" >
|
<h3 class="mb10 iconBox text-style" @click="clickAlarm(8)">
|
||||||
<span></span>
|
<span></span>
|
||||||
告警明细
|
告警明细
|
||||||
</h3>
|
</h3>
|
||||||
@@ -107,11 +107,11 @@
|
|||||||
<vxe-column field="xz" title="最大限值"></vxe-column>
|
<vxe-column field="xz" title="最大限值"></vxe-column>
|
||||||
|
|
||||||
</vxe-table> -->
|
</vxe-table> -->
|
||||||
<el-table :data="evaluationData" size="small" border>
|
<el-table :data="evaluationData.filter((item) => item.avg != 3.14159)" height="200px" size="small" border>
|
||||||
<el-table-column prop="targetName" align="center" label="指标名称" />
|
<el-table-column prop="targetName" align="center" label="指标名称" />
|
||||||
<el-table-column prop="avg" align="center" label="最大幅值">
|
<el-table-column prop="avg" align="center" label="最大越限幅值">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ row.avg == 3.14159 ? '/' : Math.floor(row.avg * 100) / 100 }}
|
{{ Math.floor(row.avg * 100) / 100 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="xz" align="center" label="限值">
|
<el-table-column prop="xz" align="center" label="限值">
|
||||||
@@ -190,7 +190,6 @@ import {
|
|||||||
} from '@/api/device-boot/panorama'
|
} from '@/api/device-boot/panorama'
|
||||||
import { formatter } from 'element-plus'
|
import { formatter } from 'element-plus'
|
||||||
|
|
||||||
|
|
||||||
const emit = defineEmits(['back'])
|
const emit = defineEmits(['back'])
|
||||||
const dropList: any = ref({})
|
const dropList: any = ref({})
|
||||||
const TargetData: any = ref({})
|
const TargetData: any = ref({})
|
||||||
@@ -382,8 +381,7 @@ const open = async (id: string) => {
|
|||||||
searchBeginTime: datePickerRef.value.timeValue[0],
|
searchBeginTime: datePickerRef.value.timeValue[0],
|
||||||
searchEndTime: datePickerRef.value.timeValue[1],
|
searchEndTime: datePickerRef.value.timeValue[1],
|
||||||
searchState: 0,
|
searchState: 0,
|
||||||
lineRunFlag: 0,
|
lineRunFlag: 0
|
||||||
|
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
// dropList.value.assessData = res.data.assessLevel
|
// dropList.value.assessData = res.data.assessLevel
|
||||||
evaluationData.value = [
|
evaluationData.value = [
|
||||||
@@ -398,19 +396,40 @@ const open = async (id: string) => {
|
|||||||
xz: res.data.vdevLimit
|
xz: res.data.vdevLimit
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
targetName: '电压总谐波畸变率',
|
targetName: '谐波电流',
|
||||||
avg: res.data.udevData,
|
avg: res.data.iharmData,
|
||||||
xz: res.data.uaberranceLimit
|
xz: res.data.iharmLimit
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
targetName: '三相电压不平衡度',
|
targetName: '负序电流',
|
||||||
avg: res.data.unbalanceData,
|
avg: res.data.inegData,
|
||||||
xz: res.data.unbalanceLimit
|
xz: res.data.inegLimit
|
||||||
|
},
|
||||||
|
{
|
||||||
|
targetName: '间谐波电压',
|
||||||
|
avg: res.data.inuharmData,
|
||||||
|
xz: res.data.inuharmLimit
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
targetName: '电压总谐波畸变率',
|
||||||
|
avg: res.data.uaberranceData,
|
||||||
|
xz: res.data.uaberranceLimit
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
targetName: '闪变',
|
targetName: '闪变',
|
||||||
avg: res.data.flickerData,
|
avg: res.data.flickerData,
|
||||||
xz: res.data.flickerLimit
|
xz: res.data.flickerLimit
|
||||||
|
},
|
||||||
|
{
|
||||||
|
targetName: '谐波电压',
|
||||||
|
avg: res.data.uharmData,
|
||||||
|
xz: res.data.uharmLimit
|
||||||
|
},
|
||||||
|
{
|
||||||
|
targetName: '三相电压不平衡度',
|
||||||
|
avg: res.data.unbalanceData,
|
||||||
|
xz: res.data.unbalanceLimit
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
@@ -770,7 +789,7 @@ defineExpose({ open })
|
|||||||
|
|
||||||
.iconBox {
|
.iconBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
span {
|
span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 3px;
|
width: 3px;
|
||||||
@@ -808,5 +827,7 @@ align-items: center;
|
|||||||
.text-style {
|
.text-style {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
text-decoration-color: var(--el-color-primary);
|
||||||
|
text-underline-offset: 4px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
{{ linList[0].lineNumOne || 0 }}
|
{{ linList[0].lineNumOne || 0 }}
|
||||||
</span>
|
</span>
|
||||||
告警:
|
告警:
|
||||||
<span style="color: #a52a2a" @click="LookMap(linList[0].lineListOne, [], 0)">
|
<span style="color: #a52a2a" @click="LookMap(linList[0].lineListTwo, [], 1)">
|
||||||
{{ linList[0].lineNumTwo || 0 }}
|
{{ linList[0].lineNumTwo || 0 }}
|
||||||
</span>
|
</span>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,11 +4,21 @@
|
|||||||
<!-- 综合评估 -->
|
<!-- 综合评估 -->
|
||||||
<div style="height: 110px">
|
<div style="height: 110px">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>
|
<span>稳态电能质量水平评估</span>
|
||||||
|
<span class="info" @click="open(0)">
|
||||||
|
详情
|
||||||
|
<ArrowRight style="width: 12px" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex" class="mt2">
|
||||||
|
<img src="@/assets/img/FGX.png" />
|
||||||
|
</div>
|
||||||
|
<div class="mt10 TJTop">
|
||||||
|
<img src="@/assets/img/TJ.png" />
|
||||||
区域污染水平评估
|
区域污染水平评估
|
||||||
<el-popover placement="right" :width="190" trigger="hover">
|
<el-popover placement="right" :width="190" trigger="hover">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<WarningFilled class="WarningFilled" />
|
<WarningFilled class="WarningFilled ml5 " />
|
||||||
</template>
|
</template>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span style="color: #00b07d">无污染:0</span>
|
<span style="color: #00b07d">无污染:0</span>
|
||||||
@@ -31,39 +41,6 @@
|
|||||||
active-text="热力图"
|
active-text="热力图"
|
||||||
inactive-text="热力图"
|
inactive-text="热力图"
|
||||||
/>
|
/>
|
||||||
</span>
|
|
||||||
<span class="info" @click="open(0)">
|
|
||||||
详情
|
|
||||||
<ArrowRight style="width: 12px" />
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div style="display: flex" class="mt2">
|
|
||||||
<img src="@/assets/img/FGX.png" />
|
|
||||||
</div>
|
|
||||||
<div class="mt10 TJTop">
|
|
||||||
<!-- <img src="@/assets/img/TJ.png" />
|
|
||||||
综合评估得分:
|
|
||||||
<span
|
|
||||||
:style="{
|
|
||||||
color:
|
|
||||||
assessList.score == 3.14159
|
|
||||||
? ''
|
|
||||||
: assessList.score > 4.5
|
|
||||||
? '#339966'
|
|
||||||
: assessList.score > 4
|
|
||||||
? '#2b7fd3'
|
|
||||||
: assessList.score > 3
|
|
||||||
? '#ffcc33'
|
|
||||||
: assessList.score > 2
|
|
||||||
? '#97017e'
|
|
||||||
: assessList.score > 0
|
|
||||||
? '#A52a2a'
|
|
||||||
: ''
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
{{ assessList.score == 3.14159 ? '/' : assessList.score }}
|
|
||||||
|
|
||||||
</span> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="evaluate">
|
<div class="evaluate">
|
||||||
<div v-for="item in assessList" style="min-width: 60px">
|
<div v-for="item in assessList" style="min-width: 60px">
|
||||||
@@ -89,16 +66,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 稳态电能质量水平评估 -->
|
<!-- 稳态电能质量水平评估 -->
|
||||||
<div>
|
<div>
|
||||||
<div class="title">
|
<!-- <div class="title">
|
||||||
<span>稳态电能质量水平评估</span>
|
<span>稳态电能质量水平评估</span>
|
||||||
<span class="info" @click="open(1)">
|
<span class="info" @click="open(1)">
|
||||||
详情
|
详情
|
||||||
<ArrowRight style="width: 12px" />
|
<ArrowRight style="width: 12px" />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div> -->
|
||||||
<div style="display: flex" class="mt2">
|
<!-- <div style="display: flex" class="mt2">
|
||||||
<img src="@/assets/img/FGX.png" />
|
<img src="@/assets/img/FGX.png" />
|
||||||
</div>
|
</div> -->
|
||||||
<div :style="boxHeight" class="boxR">
|
<div :style="boxHeight" class="boxR">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="TJTop">
|
<div class="TJTop">
|
||||||
@@ -386,10 +363,10 @@ const open = (e: number) => {
|
|||||||
techniqueRef.value.open(formRow.value)
|
techniqueRef.value.open(formRow.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const changeHeat = (e:any) => {
|
const changeHeat = (e: any) => {
|
||||||
emit('changeHeat', e)
|
emit('changeHeat', e)
|
||||||
}
|
}
|
||||||
const setColor = (val:any) => {
|
const setColor = (val: any) => {
|
||||||
return val == 3.14159
|
return val == 3.14159
|
||||||
? ''
|
? ''
|
||||||
: val > 10000
|
: val > 10000
|
||||||
@@ -404,7 +381,7 @@ const setColor = (val:any) => {
|
|||||||
? '#00B07D'
|
? '#00B07D'
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
const setVal = (val:any) => {
|
const setVal = (val: any) => {
|
||||||
return val == 3.14159
|
return val == 3.14159
|
||||||
? '/'
|
? '/'
|
||||||
: val > 10000
|
: val > 10000
|
||||||
@@ -511,14 +488,15 @@ defineExpose({ info, show })
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #757575;
|
color: #757575;
|
||||||
}
|
}
|
||||||
.WarningFilled {
|
}
|
||||||
|
.WarningFilled {
|
||||||
width: 12px;
|
width: 12px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.TJTop {
|
.TJTop {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
img {
|
img {
|
||||||
height: 1.2rem;
|
height: 1.2rem;
|
||||||
width: 1.2rem;
|
width: 1.2rem;
|
||||||
@@ -526,7 +504,7 @@ defineExpose({ info, show })
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.evaluate {
|
.evaluate {
|
||||||
margin: 10px 0;
|
margin: 5px 0 10px 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
@@ -115,10 +115,10 @@ const changeValue = (e: any) => {
|
|||||||
}
|
}
|
||||||
// 热力图开关
|
// 热力图开关
|
||||||
const changeHeat = (e: boolean) => {
|
const changeHeat = (e: boolean) => {
|
||||||
console.log("🚀 ~ changeHeat ~ e:", e)
|
console.log('🚀 ~ changeHeat ~ e:', e)
|
||||||
|
|
||||||
mapRef.value.changeHeat(e)
|
mapRef.value.changeHeat(e)
|
||||||
if(e){
|
if (e) {
|
||||||
mapRef.value.flyTo({ coordinate: [116.84428600000001, 40.57707185292256] }, 6.409267680647425)
|
mapRef.value.flyTo({ coordinate: [116.84428600000001, 40.57707185292256] }, 6.409267680647425)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,9 +218,10 @@ const reset = () => {
|
|||||||
changeValue({ data: dictData.state.area[0] })
|
changeValue({ data: dictData.state.area[0] })
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// info()
|
nextTick(() => {
|
||||||
|
// datePickerRef.value.setTheDate(1)
|
||||||
changeValue({ data: dictData.state.area[0] })
|
changeValue({ data: dictData.state.area[0] })
|
||||||
// aaa()
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
||||||
<pane :size="size">
|
<pane :size="size">
|
||||||
<AssessTree
|
<AssessTree
|
||||||
|
ref="AssessTreeRef"
|
||||||
:default-expand-all="false"
|
:default-expand-all="false"
|
||||||
@node-click="handleNodeClick"
|
@node-click="handleNodeClick"
|
||||||
@init="handleNodeClick"
|
@init="handleNodeClick"
|
||||||
ref="assessTreeRef"
|
|
||||||
:highlight-current="true"
|
:highlight-current="true"
|
||||||
:current-node-key="currentTreeKey"
|
:current-node-key="currentTreeKey"
|
||||||
:expand-on-click-node="false"
|
:expand-on-click-node="false"
|
||||||
@@ -263,7 +263,7 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 添加树组件的引用
|
// 添加树组件的引用
|
||||||
const assessTreeRef = ref<any>(null)
|
const AssessTreeRef = ref()
|
||||||
// 控制树组件当前高亮的节点key
|
// 控制树组件当前高亮的节点key
|
||||||
const currentTreeKey = ref<string | number | null>(null)
|
const currentTreeKey = ref<string | number | null>(null)
|
||||||
// 保存上一次真正有效的节点key(子节点)
|
// 保存上一次真正有效的节点key(子节点)
|
||||||
@@ -308,6 +308,44 @@ const handleNodeClick = (data: any, node: any) => {
|
|||||||
infoLoading.value = true
|
infoLoading.value = true
|
||||||
outcomeLoading.value = true
|
outcomeLoading.value = true
|
||||||
}
|
}
|
||||||
|
const setId = (id: any) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
lastValidNodeKey.value = id
|
||||||
|
currentTreeKey.value = lastValidNodeKey.value
|
||||||
|
dotList.value = findNodeByTreeId(AssessTreeRef.value?.tree, id)?.name || {}
|
||||||
|
currentNodeName.value = findNodeByTreeId(AssessTreeRef.value?.tree, id)?.name || '' //data?.name || ''
|
||||||
|
currentNodeId.value = id
|
||||||
|
AssessTreeRef.value?.scrollToNode(id)
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 递归查找树形结构中匹配treeId的节点对象
|
||||||
|
* @param {Array} treeData - 树形结构数据(数组)
|
||||||
|
* @param {string} targetTreeId - 要查找的treeId
|
||||||
|
* @returns {object|null} 匹配的节点对象(未找到返回null)
|
||||||
|
*/
|
||||||
|
const findNodeByTreeId = (treeData: any, id: any) => {
|
||||||
|
// 遍历每一个顶层节点
|
||||||
|
for (const node of treeData) {
|
||||||
|
// 1. 当前节点匹配,直接返回
|
||||||
|
if (node.id === id) {
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
// 2. 当前节点有子节点,递归查找子节点
|
||||||
|
if (node.children && Array.isArray(node.children) && node.children.length > 0) {
|
||||||
|
const foundNode: any = findNodeByTreeId(node.children, id)
|
||||||
|
// 子节点中找到则返回(终止递归)
|
||||||
|
if (foundNode) {
|
||||||
|
return foundNode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 遍历完所有节点未找到,返回null
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
setId
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.splitpanes.default-theme .splitpanes__pane {
|
.splitpanes.default-theme .splitpanes__pane {
|
||||||
|
|||||||
@@ -110,10 +110,10 @@
|
|||||||
<el-collapse-item title="谐波电流/电压评估结果" :name="4">
|
<el-collapse-item title="谐波电流/电压评估结果" :name="4">
|
||||||
<div class="flickerWaves" style="height: 520px">
|
<div class="flickerWaves" style="height: 520px">
|
||||||
<vxe-table :data="harmonicCurrents" height="520px" v-bind="defaultAttribute" :cell-class-name="getCellClassName3" style="width: 50%">
|
<vxe-table :data="harmonicCurrents" height="520px" v-bind="defaultAttribute" :cell-class-name="getCellClassName3" style="width: 50%">
|
||||||
<vxe-column title="谐波次数" field="name" />
|
<vxe-column title="谐波次数" field="name" width="90px"/>
|
||||||
<vxe-colgroup title="电容器谐波电流评估值(A)">
|
<vxe-colgroup title="电容器谐波电流评估值(A)">
|
||||||
<vxe-column field="notInvested" title="未投入" min-width="160px" />
|
<vxe-column field="notInvested" title="未投入" />
|
||||||
<vxe-column field="hasInvested" title="已投入" min-width="160px" />
|
<vxe-column field="hasInvested" title="已投入" />
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
<vxe-column title="国标限值(%)" field="limitData" />
|
<vxe-column title="国标限值(%)" field="limitData" />
|
||||||
<vxe-column title="判断">
|
<vxe-column title="判断">
|
||||||
@@ -131,10 +131,10 @@
|
|||||||
:cell-class-name="getCellClassName3"
|
:cell-class-name="getCellClassName3"
|
||||||
style="width: 50%"
|
style="width: 50%"
|
||||||
>
|
>
|
||||||
<vxe-column title="谐波次数" field="name" />
|
<vxe-column title="谐波次数" field="name" width="90px"/>
|
||||||
<vxe-colgroup title="电容器谐波电压评估值(%)">
|
<vxe-colgroup title="电容器谐波电压评估值(%)">
|
||||||
<vxe-column field="notInvested" title="未投入" min-width="160px" />
|
<vxe-column field="notInvested" title="未投入" />
|
||||||
<vxe-column field="hasInvested" title="已投入" min-width="160px" />
|
<vxe-column field="hasInvested" title="已投入" />
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
<vxe-column title="国标限值(A)" field="limitData" />
|
<vxe-column title="国标限值(A)" field="limitData" />
|
||||||
<vxe-column title="判断">
|
<vxe-column title="判断">
|
||||||
|
|||||||
@@ -1,20 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
<el-tabs type="border-card" v-model="activeName">
|
<el-tabs type="border-card" v-model="activeName">
|
||||||
<el-tab-pane label="评估用户维护" name="1"><User v-if="activeName == '1'"/></el-tab-pane>
|
<el-tab-pane label="评估用户维护" name="1"><User v-if="activeName == '1'" /></el-tab-pane>
|
||||||
<el-tab-pane label="用户二级评估" name="2"><Assess v-if="activeName == '2'"/></el-tab-pane>
|
<el-tab-pane label="用户二级评估" name="2"><Assess ref="AssessRef" v-if="activeName == '2'" /></el-tab-pane>
|
||||||
<el-tab-pane label="参数字典维护" name="3"><Dictionary v-if="activeName == '3'"/></el-tab-pane>
|
<el-tab-pane label="参数字典维护" name="3"><Dictionary v-if="activeName == '3'" /></el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive, watch } from 'vue'
|
||||||
import User from '@/views/pqs/runManage/assessment/components/uese/index.vue'
|
import User from '@/views/pqs/runManage/assessment/components/uese/index.vue'
|
||||||
import Assess from '@/views/pqs/runManage/assessment/components/assess/index.vue'
|
import Assess from '@/views/pqs/runManage/assessment/components/assess/index.vue'
|
||||||
import Dictionary from '@/views/pqs/runManage/assessment/components/dictionary/index.vue'
|
import Dictionary from '@/views/pqs/runManage/assessment/components/dictionary/index.vue'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
const route = useRoute()
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'runManage/assessment'
|
name: 'runManage/assessment'
|
||||||
})
|
})
|
||||||
|
const AssessRef = ref()
|
||||||
const activeName = ref('1')
|
const activeName = ref('1')
|
||||||
|
watch(
|
||||||
|
() => route.query.t,
|
||||||
|
async (newValue, oldValue) => {
|
||||||
|
if (route.fullPath.includes('runManage/assessment')) {
|
||||||
|
let type = (route.query.type as string) || 'null'
|
||||||
|
if (type == 'null') {
|
||||||
|
} else if (type == '2') {
|
||||||
|
activeName.value = '2'
|
||||||
|
setTimeout(() => {
|
||||||
|
AssessRef.value.setId((route.query.secondAssessmentId as string) || '')
|
||||||
|
}, 500)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ deep: true, immediate: true }
|
||||||
|
)
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ import { cancelFormData, getUserReportById } from '@/api/supervision-boot/interf
|
|||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { useAdminInfo } from '@/stores/adminInfo'
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
import { deleteUserReport } from '@/api/supervision-boot/delete/index'
|
import { deleteUserReport } from '@/api/supervision-boot/delete/index'
|
||||||
|
|
||||||
//获取登陆用户姓名和部门
|
//获取登陆用户姓名和部门
|
||||||
const adminInfo = useAdminInfo()
|
const adminInfo = useAdminInfo()
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
@@ -76,7 +77,7 @@ const tableStore = new TableStore({
|
|||||||
url: '/supervision-boot/userReport/getUserReport',
|
url: '/supervision-boot/userReport/getUserReport',
|
||||||
publicHeight: 65,
|
publicHeight: 65,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
filename:'未建档用户档案录入管理',
|
filename: '未建档用户档案录入管理',
|
||||||
column: [
|
column: [
|
||||||
{
|
{
|
||||||
width: '60',
|
width: '60',
|
||||||
@@ -232,6 +233,26 @@ const tableStore = new TableStore({
|
|||||||
click: row => {
|
click: row => {
|
||||||
cancelLeave(row)
|
cancelLeave(row)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'cancel',
|
||||||
|
title: '二级评估',
|
||||||
|
type: 'primary',
|
||||||
|
icon: 'el-icon-Open',
|
||||||
|
render: 'basicButton',
|
||||||
|
disabled: row => {
|
||||||
|
return row.secondAssessmentId == null
|
||||||
|
},
|
||||||
|
click: row => {
|
||||||
|
push({
|
||||||
|
name: 'runManage/assessment',
|
||||||
|
query: {
|
||||||
|
type: '2',
|
||||||
|
secondAssessmentId:row.secondAssessmentId,
|
||||||
|
t: Date.now()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,8 +168,15 @@ watch(
|
|||||||
} else if (type == '1') {
|
} else if (type == '1') {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
||||||
|
if (route.query.dicData) {
|
||||||
|
tableStore.table.params.dicData = triggerType.filter(item =>
|
||||||
|
item.name.includes(route.query.dicData as string)
|
||||||
|
)[0]?.id
|
||||||
|
} else {
|
||||||
|
tableStore.table.params.dicData = ''
|
||||||
|
}
|
||||||
tableStore.index()
|
tableStore.index()
|
||||||
},500)
|
}, 500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user