修改冀北现场反馈问题
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 = () => {
|
||||
if (!headerForm.value.$el) return
|
||||
if (!headerForm.value?.$el) return
|
||||
// 清空headerFormSecond.value.$el下的元素
|
||||
while (headerFormSecond.value.$el.firstChild) {
|
||||
headerForm.value.$el.appendChild(headerFormSecond.value.$el.firstChild)
|
||||
|
||||
@@ -77,15 +77,13 @@
|
||||
<SubstationDetails ref="SubstationRef" />
|
||||
<!-- 监测点详情 -->
|
||||
<MonitoringPointDetails ref="MonitoringPointRef" />
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import useCurrentInstance from '@/utils/useCurrentInstance'
|
||||
import { ElTree } from 'element-plus'
|
||||
import { ref, watch } from 'vue'
|
||||
import { ref, watch, onMounted, nextTick } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import MonitoringPointDetails from './details/monitoringPointDetails.vue'
|
||||
import SubstationDetails from './details/substationDetails.vue'
|
||||
@@ -110,6 +108,7 @@ const menuCollapse = ref(false)
|
||||
const MonitoringPointRef = ref()
|
||||
const SubstationRef = ref()
|
||||
const filterText = ref('')
|
||||
const treeRef = ref()
|
||||
const defaultProps = {
|
||||
label: 'name',
|
||||
value: 'id'
|
||||
@@ -148,7 +147,7 @@ const onMenuCollapse = () => {
|
||||
}
|
||||
// 查看详情
|
||||
const viewDetails = (data: any) => {
|
||||
console.log("🚀 ~ viewDetails ~ data:", data)
|
||||
console.log('🚀 ~ viewDetails ~ data:', data)
|
||||
if (data.level == 3) {
|
||||
// 变电站详情
|
||||
// substationDetails
|
||||
@@ -194,12 +193,40 @@ const chooseNode = (value: string, data: any, node: any) => {
|
||||
// 没匹配到返回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 = () => {
|
||||
emit('onAddTree')
|
||||
}
|
||||
const treeRef = ref<InstanceType<typeof ElTree>>()
|
||||
defineExpose({ treeRef })
|
||||
defineExpose({ treeRef, scrollToNode })
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -14,9 +14,7 @@ import { useDictData } from '@/stores/dictData'
|
||||
import { getTerminalTreeForFive } from '@/api/device-boot/terminalTree'
|
||||
import { useConfig } from '@/stores/config'
|
||||
import { defineProps } from 'vue'
|
||||
import {
|
||||
getTree
|
||||
} from '@/api/advance-boot/assess'
|
||||
import { getTree } from '@/api/advance-boot/assess'
|
||||
|
||||
defineOptions({
|
||||
name: 'pms/pointTree'
|
||||
@@ -46,25 +44,24 @@ const formData = ref({
|
||||
scale: null
|
||||
})
|
||||
|
||||
|
||||
// 添加数据转换函数
|
||||
const transformTreeData = (data: any[]) => {
|
||||
if (!data || !Array.isArray(data)) return [];
|
||||
if (!data || !Array.isArray(data)) return []
|
||||
return data.map(item => {
|
||||
// 创建新对象,确保不修改原始数据
|
||||
const newItem: any = {
|
||||
name: item.treeName,
|
||||
id: item.treeId,
|
||||
children: []
|
||||
};
|
||||
}
|
||||
|
||||
// 递归处理子节点
|
||||
if (item.children && Array.isArray(item.children)) {
|
||||
newItem.children = transformTreeData(item.children);
|
||||
newItem.children = transformTreeData(item.children)
|
||||
}
|
||||
return newItem
|
||||
})
|
||||
}
|
||||
return newItem;
|
||||
});
|
||||
};
|
||||
|
||||
const loadData = () => {
|
||||
let obj = classificationData.find(function (i) {
|
||||
@@ -75,12 +72,15 @@ const loadData = () => {
|
||||
let nodeKey = ''
|
||||
getTree({}).then(res => {
|
||||
// 转换数据结构为指定格式
|
||||
const transformedData = transformTreeData(res.data);
|
||||
const transformedData = transformTreeData(res.data)
|
||||
|
||||
// 确保有数据再进行处理
|
||||
if (transformedData && transformedData.length > 0 &&
|
||||
transformedData[0].children && transformedData[0].children.length > 0) {
|
||||
|
||||
if (
|
||||
transformedData &&
|
||||
transformedData.length > 0 &&
|
||||
transformedData[0].children &&
|
||||
transformedData[0].children.length > 0
|
||||
) {
|
||||
nodeKey = transformedData[0].children[0].id
|
||||
emit('init', transformedData[0].children[0])
|
||||
|
||||
@@ -94,7 +94,15 @@ const loadData = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
const scrollToNode = (id: string) => {
|
||||
// 树滚动
|
||||
treeRef.value.scrollToNode(id)
|
||||
}
|
||||
loadData()
|
||||
defineExpose({
|
||||
tree,
|
||||
scrollToNode
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.point-tree {
|
||||
|
||||
@@ -135,11 +135,17 @@ const loadData = () => {
|
||||
if (nodeKey) {
|
||||
nextTick(() => {
|
||||
treeRef.value.treeRef.setCurrentKey(nodeKey)
|
||||
|
||||
// treeRef.value.treeRef.setExpandedKeys(nodeKey)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
const scrollToNode = (id: string) => {
|
||||
// 树滚动
|
||||
treeRef.value.scrollToNode(id)
|
||||
}
|
||||
defineExpose({ treeRef, scrollToNode, tree })
|
||||
loadData()
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
贡献度计算
|
||||
<div style="font-size: 14px; font-weight: 500">
|
||||
<!-- {{ dotList.alias || '' }} -->
|
||||
<span class="monitoring-point">当前位置:{{ dotList.alias || '' }}</span>
|
||||
<span class="monitoring-point1">当前位置:{{ dotList.alias || '' }}</span>
|
||||
<back-component />
|
||||
</div>
|
||||
</div>
|
||||
@@ -598,7 +598,7 @@ onMounted(() => {
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
.monitoring-point {
|
||||
.monitoring-point1 {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: var(--el-color-primary);
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<!-- 模版 -->
|
||||
<TableHeader datePicker showExport :showReset="false" ref="TableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="关键字">
|
||||
<!-- <el-form-item label="关键字">
|
||||
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="请输入关键字" />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button type="primary" icon="el-icon-CreditCard"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
placeholder="请输入变电站/终端/监测点"
|
||||
clearable
|
||||
@input="handleFilterChange"
|
||||
:show-word-limit=true
|
||||
:show-word-limit="true"
|
||||
:maxlength="32"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -61,11 +61,23 @@
|
||||
>
|
||||
<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="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="devType" title="终端型号" align="center" min-width="150"></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="lineVoltage" 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="onlineRate" 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="downCounts" title="电压暂降(次)" align="center" min-width="100"></vxe-column> -->
|
||||
<!-- <vxe-column field="breakCounts" title="短时中断(次)" align="center" min-width="100"></vxe-column> -->
|
||||
@@ -91,7 +108,8 @@
|
||||
:total="tableStore.table.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
class="custom-pagination"/>
|
||||
class="custom-pagination"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -198,7 +216,8 @@ const filteredData = computed(() => {
|
||||
|
||||
if (searchKeyword.value) {
|
||||
const keyword = searchKeyword.value.toLowerCase()
|
||||
result = result.filter(item =>
|
||||
result = result.filter(
|
||||
item =>
|
||||
(item.subStationName && item.subStationName.toLowerCase().includes(keyword)) ||
|
||||
(item.devName && item.devName.toLowerCase().includes(keyword)) ||
|
||||
(item.lineName && item.lineName.toLowerCase().includes(keyword))
|
||||
@@ -245,7 +264,7 @@ provide('tableStore', tableStore)
|
||||
|
||||
watch(
|
||||
() => areOptions,
|
||||
(newOptions) => {
|
||||
newOptions => {
|
||||
if (newOptions && newOptions.length > 0) {
|
||||
selectedArea.value = newOptions[0].id
|
||||
tableStore.table.params.id = newOptions[0].id
|
||||
@@ -256,7 +275,7 @@ watch(
|
||||
|
||||
watch(
|
||||
() => options,
|
||||
(newOptions) => {
|
||||
newOptions => {
|
||||
if (newOptions && newOptions.length > 0) {
|
||||
if (!tableStore.table.params.statisticalType) {
|
||||
tableStore.table.params.statisticalType = newOptions[0]
|
||||
@@ -267,12 +286,12 @@ watch(
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
tableStore.table.params.powerFlag = "0"
|
||||
tableStore.table.params.powerFlag = '0'
|
||||
tableStore.table.params.isUpToGrid = 0
|
||||
tableStore.table.params.type = 1
|
||||
|
||||
const handleStatisticalTypeChange = (newVal: { id: any }) => {
|
||||
console.log("🚀 ~ handleStatisticalTypeChange ~ newVal:", newVal)
|
||||
console.log('🚀 ~ handleStatisticalTypeChange ~ newVal:', newVal)
|
||||
if (newVal) {
|
||||
tableStore.table.params.statisticalType = newVal
|
||||
tableStore.table.params.ids = [newVal.id]
|
||||
@@ -330,7 +349,6 @@ onBeforeUnmount(() => {
|
||||
window.removeEventListener('resize', debouncedCalculateTableHeight)
|
||||
})
|
||||
|
||||
|
||||
const clearQueryParams = () => {
|
||||
// 将区域恢复成第一层
|
||||
if (areOptions && areOptions.length > 0) {
|
||||
@@ -343,10 +361,13 @@ const clearQueryParams = () => {
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
refresh: () => {
|
||||
refresh: (name?: any) => {
|
||||
// 清空查询参数
|
||||
clearQueryParams()
|
||||
tableHeaderRef.value.setTheDate(3)
|
||||
if (name) {
|
||||
searchKeyword.value = name
|
||||
}
|
||||
tableStore.index()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -85,7 +85,7 @@ const tableStore = new TableStore({
|
||||
publicHeight: 65,
|
||||
isWebPaging: true,
|
||||
method: 'POST',
|
||||
filename: '监测点台账',
|
||||
filename: '区域级评估',
|
||||
column: [
|
||||
{
|
||||
title: '序号',
|
||||
|
||||
@@ -79,7 +79,7 @@ const tableStore = new TableStore({
|
||||
publicHeight: 65,
|
||||
isWebPaging: true,
|
||||
method: 'POST',
|
||||
filename: '监测点台账',
|
||||
filename: '敏感及重要用户评估',
|
||||
column: [
|
||||
{
|
||||
title: '序号',
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<regionalAssessment v-if="activeTab == '3'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="敏感及重要用户评估" name="4">
|
||||
<userEvaluation v-if="activeTab == '4'" />
|
||||
<userEvaluation ref="userEvaluationRef" v-if="activeTab == '4'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
@@ -33,7 +33,7 @@ defineOptions({
|
||||
const activeTab = ref('pollutionReport')
|
||||
const monitoringPointTabRef = ref()
|
||||
const substationTabRef = ref()
|
||||
|
||||
const userEvaluationRef = ref()
|
||||
const handleTabChange = (tabName: string) => {
|
||||
if (tabName === 'pollutionReport' && monitoringPointTabRef.value) {
|
||||
monitoringPointTabRef.value.refresh()
|
||||
@@ -47,11 +47,21 @@ watch(
|
||||
if (route.fullPath.includes('harmonic-boot/qydetailedAnalysis/pollutionReport')) {
|
||||
let type = (route.query.type as string) || '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') {
|
||||
activeTab.value = 'anotherReport'
|
||||
setTimeout(() => {
|
||||
substationTabRef.value.refresh((route.query.statisticalType as string) || 'null')
|
||||
}, 500)
|
||||
} else if (type == '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'
|
||||
if (type == 'null') {
|
||||
} else if (type == '1') {
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
||||
tableStore.index()
|
||||
})
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -152,11 +152,7 @@
|
||||
<vxe-column type="seq" title="序号" width="80px">
|
||||
<template #default="{ rowIndex }">
|
||||
<span>
|
||||
{{
|
||||
(pageNum - 1) * pageSize +
|
||||
rowIndex +
|
||||
1
|
||||
}}
|
||||
{{ (pageNum - 1) * pageSize + rowIndex + 1 }}
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -488,10 +484,10 @@ watch(
|
||||
let type = (route.query.type as string) || 'null'
|
||||
if (type == 'null') {
|
||||
} else if (type == '1') {
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
tableStore.table.params.searchValue = (route.query.name as string) || ''
|
||||
tableStore.index()
|
||||
})
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<el-tab-pane label="谐波频谱" name="4" lazy v-if="!isReload">
|
||||
<Xiebopingpu v-if="activeName == '4'" />
|
||||
</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'" />
|
||||
</el-tab-pane>
|
||||
<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, Pane } from 'splitpanes'
|
||||
import PointTree from '@/components/tree/pqs/pointTree.vue'
|
||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import Wentaizonghepinggu from './wentaizonghepinggu/index.vue'
|
||||
import Wentaizhibiaohegelv from './wentaizhibiaohegelv/index.vue'
|
||||
@@ -77,7 +77,8 @@ import { useRoute } from 'vue-router'
|
||||
import StatisticalReport from './statisticalReport/index.vue'
|
||||
const VITE_FLAG = import.meta.env.VITE_NAME == 'jibei'
|
||||
import router from '@/router'
|
||||
|
||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||
import { id } from 'element-plus/es/locale'
|
||||
defineOptions({
|
||||
name: 'harmonic-boot/monitor/online'
|
||||
})
|
||||
@@ -140,19 +141,42 @@ watch(
|
||||
if (route.fullPath.includes('harmonic-boot/monitor/online')) {
|
||||
let type = (route.query.type as string) || 'null'
|
||||
let lineId = (route.query.id as string) || 'null'
|
||||
console.log('🚀 ~ type:', type)
|
||||
if (type == 'null') {
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
monitoringPoint.setValue('lineId', lineId)
|
||||
//
|
||||
// pointTree.value.tree
|
||||
activeName.value = type
|
||||
setTimeout(() => {
|
||||
pointTree.value.scrollToNode(lineId)
|
||||
|
||||
monitoringPoint.setValue('lineName', findNodeByTreeId(pointTree.value.tree, lineId).alias)
|
||||
}, 500)
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
},
|
||||
{ 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) => {
|
||||
activeName.value = e
|
||||
}
|
||||
|
||||
@@ -140,11 +140,11 @@ const exportReport = () => {
|
||||
loading.value = true
|
||||
let form = new FormData()
|
||||
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('endTime', TableHeaderRef.value.datePickerRef.timeValue[1])
|
||||
form.append('type', 0)
|
||||
form.append('name', dotList.value.name)
|
||||
form.append('name', monitoringPoint.state.lineName.split('>').pop())
|
||||
ElMessage({
|
||||
message: '下载报告中,请稍等.....',
|
||||
duration: 1000
|
||||
@@ -159,7 +159,7 @@ const exportReport = () => {
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download =
|
||||
dotList.value.name +
|
||||
monitoringPoint.state.lineName.split('>').pop() +
|
||||
TableHeaderRef.value.datePickerRef.timeValue[0] +
|
||||
'_' +
|
||||
TableHeaderRef.value.datePickerRef.timeValue[1] // 设置下载的文件名
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
<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="width: 400px">
|
||||
<vxe-table
|
||||
v-bind="defaultAttribute"
|
||||
ref="tableRef"
|
||||
@current-change="currentChangeEvent"
|
||||
@cell-click="currentChangeEvent"
|
||||
height="250px"
|
||||
:row-config="{ isCurrent: true, isHover: true }"
|
||||
:data="tableData"
|
||||
style="cursor: pointer"
|
||||
>
|
||||
<vxe-column field="deptName" title="地市" />
|
||||
<vxe-column field="score" title="污染值" sortable>
|
||||
@@ -26,7 +27,15 @@
|
||||
</vxe-table>
|
||||
</div>
|
||||
<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 field="subName" title="变电站名称" min-width="120"></vxe-column>
|
||||
<vxe-column field="lineName" title="监测点名称" align="center" min-width="120"></vxe-column>
|
||||
@@ -121,7 +130,7 @@ const analysis = () => {
|
||||
name: '',
|
||||
data: first10Items.map((item: any) => item.projectName.split('(')[0].trim()),
|
||||
axisLabel: {
|
||||
rotate: 30 // 核心:倾斜 45 度(推荐 30/45/60,角度太大易读性差)
|
||||
rotate: 20 // 核心:倾斜 45 度(推荐 30/45/60,角度太大易读性差)
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
@@ -176,11 +185,20 @@ const echartClick = (res:any) => {
|
||||
name: 'harmonic-boot/qydetailedAnalysis/pollutionReport',
|
||||
query: {
|
||||
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()
|
||||
}
|
||||
})
|
||||
console.log("🚀 ~ echartClick ~ res:", res)
|
||||
|
||||
}
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
@@ -2,9 +2,16 @@
|
||||
<div class="propInfo" v-if="show">
|
||||
<div class="top">
|
||||
<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-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>
|
||||
<Close class="ico" @click="show = false" />
|
||||
</div>
|
||||
@@ -19,8 +26,8 @@
|
||||
v-loading="loading"
|
||||
:row-config="{ isCurrent: true, isHover: true }"
|
||||
:columnConfig="{ resizable: true }"
|
||||
@current-change="currentChangeEvent"
|
||||
style="z-index: 0;"
|
||||
@cell-click="currentChangeEvent"
|
||||
style="z-index: 0"
|
||||
>
|
||||
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
||||
<vxe-column field="gdName" title="供电公司"></vxe-column>
|
||||
@@ -28,6 +35,11 @@
|
||||
<!-- <vxe-column field="deviceName" title="终端名称"></vxe-column> -->
|
||||
<!-- <vxe-column field="ip" title="IP"></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="objName" title="监测对象"></vxe-column>
|
||||
@@ -43,6 +55,7 @@ const value = ref('')
|
||||
const tableRef = ref()
|
||||
const dataList = ref([])
|
||||
const loading = ref(false)
|
||||
const powerFlag = ref('0')
|
||||
const open = (data: any) => {
|
||||
dataList.value = []
|
||||
loading.value = true
|
||||
@@ -101,7 +114,7 @@ function filterDataByKeyword(data, keyword) {
|
||||
}
|
||||
const currentChangeEvent = () => {
|
||||
// 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()
|
||||
emit('flyTo', { coordinate: [data.lng, data.lat] }, 16)
|
||||
}
|
||||
|
||||
@@ -536,5 +536,7 @@ defineExpose({ open })
|
||||
.text-style {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: var(--el-color-primary);
|
||||
text-underline-offset: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
<!-- 暂态 -->
|
||||
<template>
|
||||
<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 field="lineName" title="监测点名称" />
|
||||
<vxe-column field="subName" title="变电站名称"></vxe-column>
|
||||
@@ -16,6 +23,8 @@ import MyEChart from '@/components/echarts/MyEchart.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { getEventDetailByList } from '@/api/device-boot/panorama'
|
||||
import { useRouter } from 'vue-router'
|
||||
const router = useRouter()
|
||||
const dictData = useDictData()
|
||||
const dialogVisible: any = ref(false)
|
||||
const list = dictData.getBasicData('Event_Statis')
|
||||
@@ -30,6 +39,19 @@ const open = async (row: any, name: string, type: string) => {
|
||||
|
||||
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 })
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<template #content>
|
||||
<span style="">{{ dropList.gdName }}_{{ dropList.bdName }}_{{ dropList.lineName }}</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="color: var(--color-primary-default)">
|
||||
<span style="color: var(--el-color-primary)">
|
||||
{{ getTimeOfTheMonth('3')[0] + '至' + getTimeOfTheMonth('3')[1] }}
|
||||
</span>
|
||||
</template>
|
||||
@@ -107,11 +107,11 @@
|
||||
<vxe-column field="xz" title="最大限值"></vxe-column>
|
||||
|
||||
</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="avg" align="center" label="最大幅值">
|
||||
<el-table-column prop="avg" align="center" label="最大越限幅值">
|
||||
<template #default="{ row }">
|
||||
{{ row.avg == 3.14159 ? '/' : Math.floor(row.avg * 100) / 100 }}
|
||||
{{ Math.floor(row.avg * 100) / 100 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="xz" align="center" label="限值">
|
||||
@@ -190,7 +190,6 @@ import {
|
||||
} from '@/api/device-boot/panorama'
|
||||
import { formatter } from 'element-plus'
|
||||
|
||||
|
||||
const emit = defineEmits(['back'])
|
||||
const dropList: any = ref({})
|
||||
const TargetData: any = ref({})
|
||||
@@ -382,8 +381,7 @@ const open = async (id: string) => {
|
||||
searchBeginTime: datePickerRef.value.timeValue[0],
|
||||
searchEndTime: datePickerRef.value.timeValue[1],
|
||||
searchState: 0,
|
||||
lineRunFlag: 0,
|
||||
|
||||
lineRunFlag: 0
|
||||
}).then((res: any) => {
|
||||
// dropList.value.assessData = res.data.assessLevel
|
||||
evaluationData.value = [
|
||||
@@ -398,19 +396,40 @@ const open = async (id: string) => {
|
||||
xz: res.data.vdevLimit
|
||||
},
|
||||
{
|
||||
targetName: '电压总谐波畸变率',
|
||||
avg: res.data.udevData,
|
||||
xz: res.data.uaberranceLimit
|
||||
targetName: '谐波电流',
|
||||
avg: res.data.iharmData,
|
||||
xz: res.data.iharmLimit
|
||||
},
|
||||
{
|
||||
targetName: '三相电压不平衡度',
|
||||
avg: res.data.unbalanceData,
|
||||
xz: res.data.unbalanceLimit
|
||||
targetName: '负序电流',
|
||||
avg: res.data.inegData,
|
||||
xz: res.data.inegLimit
|
||||
},
|
||||
{
|
||||
targetName: '间谐波电压',
|
||||
avg: res.data.inuharmData,
|
||||
xz: res.data.inuharmLimit
|
||||
},
|
||||
|
||||
{
|
||||
targetName: '电压总谐波畸变率',
|
||||
avg: res.data.uaberranceData,
|
||||
xz: res.data.uaberranceLimit
|
||||
},
|
||||
{
|
||||
targetName: '闪变',
|
||||
avg: res.data.flickerData,
|
||||
xz: res.data.flickerLimit
|
||||
},
|
||||
{
|
||||
targetName: '谐波电压',
|
||||
avg: res.data.uharmData,
|
||||
xz: res.data.uharmLimit
|
||||
},
|
||||
{
|
||||
targetName: '三相电压不平衡度',
|
||||
avg: res.data.unbalanceData,
|
||||
xz: res.data.unbalanceLimit
|
||||
}
|
||||
]
|
||||
})
|
||||
@@ -808,5 +827,7 @@ align-items: center;
|
||||
.text-style {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: var(--el-color-primary);
|
||||
text-underline-offset: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
{{ linList[0].lineNumOne || 0 }}
|
||||
</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 }}
|
||||
</span>
|
||||
)
|
||||
|
||||
@@ -4,11 +4,21 @@
|
||||
<!-- 综合评估 -->
|
||||
<div style="height: 110px">
|
||||
<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">
|
||||
<template #reference>
|
||||
<WarningFilled class="WarningFilled" />
|
||||
<WarningFilled class="WarningFilled ml5 " />
|
||||
</template>
|
||||
<div class="text">
|
||||
<span style="color: #00b07d">无污染:0</span>
|
||||
@@ -31,39 +41,6 @@
|
||||
active-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 class="evaluate">
|
||||
<div v-for="item in assessList" style="min-width: 60px">
|
||||
@@ -89,16 +66,16 @@
|
||||
</div>
|
||||
<!-- 稳态电能质量水平评估 -->
|
||||
<div>
|
||||
<div class="title">
|
||||
<!-- <div class="title">
|
||||
<span>稳态电能质量水平评估</span>
|
||||
<span class="info" @click="open(1)">
|
||||
详情
|
||||
<ArrowRight style="width: 12px" />
|
||||
</span>
|
||||
</div>
|
||||
<div style="display: flex" class="mt2">
|
||||
</div> -->
|
||||
<!-- <div style="display: flex" class="mt2">
|
||||
<img src="@/assets/img/FGX.png" />
|
||||
</div>
|
||||
</div> -->
|
||||
<div :style="boxHeight" class="boxR">
|
||||
<div class="top">
|
||||
<div class="TJTop">
|
||||
@@ -511,14 +488,15 @@ defineExpose({ info, show })
|
||||
cursor: pointer;
|
||||
color: #757575;
|
||||
}
|
||||
}
|
||||
.WarningFilled {
|
||||
width: 12px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.TJTop {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
img {
|
||||
height: 1.2rem;
|
||||
width: 1.2rem;
|
||||
@@ -526,7 +504,7 @@ defineExpose({ info, show })
|
||||
}
|
||||
}
|
||||
.evaluate {
|
||||
margin: 10px 0;
|
||||
margin: 5px 0 10px 0;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
text-align: center;
|
||||
|
||||
@@ -115,7 +115,7 @@ const changeValue = (e: any) => {
|
||||
}
|
||||
// 热力图开关
|
||||
const changeHeat = (e: boolean) => {
|
||||
console.log("🚀 ~ changeHeat ~ e:", e)
|
||||
console.log('🚀 ~ changeHeat ~ e:', e)
|
||||
|
||||
mapRef.value.changeHeat(e)
|
||||
if (e) {
|
||||
@@ -218,9 +218,10 @@ const reset = () => {
|
||||
changeValue({ data: dictData.state.area[0] })
|
||||
}
|
||||
onMounted(() => {
|
||||
// info()
|
||||
nextTick(() => {
|
||||
// datePickerRef.value.setTheDate(1)
|
||||
changeValue({ data: dictData.state.area[0] })
|
||||
// aaa()
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
||||
<pane :size="size">
|
||||
<AssessTree
|
||||
ref="AssessTreeRef"
|
||||
:default-expand-all="false"
|
||||
@node-click="handleNodeClick"
|
||||
@init="handleNodeClick"
|
||||
ref="assessTreeRef"
|
||||
:highlight-current="true"
|
||||
:current-node-key="currentTreeKey"
|
||||
:expand-on-click-node="false"
|
||||
@@ -263,7 +263,7 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
// 添加树组件的引用
|
||||
const assessTreeRef = ref<any>(null)
|
||||
const AssessTreeRef = ref()
|
||||
// 控制树组件当前高亮的节点key
|
||||
const currentTreeKey = ref<string | number | null>(null)
|
||||
// 保存上一次真正有效的节点key(子节点)
|
||||
@@ -308,6 +308,44 @@ const handleNodeClick = (data: any, node: any) => {
|
||||
infoLoading.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>
|
||||
<style lang="scss" scoped>
|
||||
.splitpanes.default-theme .splitpanes__pane {
|
||||
|
||||
@@ -110,10 +110,10 @@
|
||||
<el-collapse-item title="谐波电流/电压评估结果" :name="4">
|
||||
<div class="flickerWaves" style="height: 520px">
|
||||
<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-column field="notInvested" title="未投入" min-width="160px" />
|
||||
<vxe-column field="hasInvested" title="已投入" min-width="160px" />
|
||||
<vxe-column field="notInvested" title="未投入" />
|
||||
<vxe-column field="hasInvested" title="已投入" />
|
||||
</vxe-colgroup>
|
||||
<vxe-column title="国标限值(%)" field="limitData" />
|
||||
<vxe-column title="判断">
|
||||
@@ -131,10 +131,10 @@
|
||||
:cell-class-name="getCellClassName3"
|
||||
style="width: 50%"
|
||||
>
|
||||
<vxe-column title="谐波次数" field="name" />
|
||||
<vxe-column title="谐波次数" field="name" width="90px"/>
|
||||
<vxe-colgroup title="电容器谐波电压评估值(%)">
|
||||
<vxe-column field="notInvested" title="未投入" min-width="160px" />
|
||||
<vxe-column field="hasInvested" title="已投入" min-width="160px" />
|
||||
<vxe-column field="notInvested" title="未投入" />
|
||||
<vxe-column field="hasInvested" title="已投入" />
|
||||
</vxe-colgroup>
|
||||
<vxe-column title="国标限值(A)" field="limitData" />
|
||||
<vxe-column title="判断">
|
||||
|
||||
@@ -2,19 +2,38 @@
|
||||
<div class="default-main">
|
||||
<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="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-tabs>
|
||||
</div>
|
||||
</template>
|
||||
<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 Assess from '@/views/pqs/runManage/assessment/components/assess/index.vue'
|
||||
import Dictionary from '@/views/pqs/runManage/assessment/components/dictionary/index.vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
const route = useRoute()
|
||||
defineOptions({
|
||||
name: 'runManage/assessment'
|
||||
})
|
||||
const AssessRef = ref()
|
||||
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>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -56,6 +56,7 @@ import { cancelFormData, getUserReportById } from '@/api/supervision-boot/interf
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
import { deleteUserReport } from '@/api/supervision-boot/delete/index'
|
||||
|
||||
//获取登陆用户姓名和部门
|
||||
const adminInfo = useAdminInfo()
|
||||
const dictData = useDictData()
|
||||
@@ -232,6 +233,26 @@ const tableStore = new TableStore({
|
||||
click: 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,6 +168,13 @@ watch(
|
||||
} else if (type == '1') {
|
||||
setTimeout(() => {
|
||||
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()
|
||||
}, 500)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user