diff --git a/src/components/tree/select.vue b/src/components/tree/select.vue index ece3dee..8ef41b2 100644 --- a/src/components/tree/select.vue +++ b/src/components/tree/select.vue @@ -120,8 +120,69 @@ const handleNodeClick = (data: any, node: any, event: any) => { // 存储所有勾选的节点 const checkedNodes = ref([]) const defaultCheckedKeys = ref([]) + // 处理节点勾选变化 const handleCheckChange = (data: any, checkInfo: any) => { + const { checkedNodes: nodes } = checkInfo + // 过滤出监测点层级(level=3)的节点 + const monitoringPointNodes = nodes.filter((node: any) => { + return node.level === 3 + }) + + + // 限制最多只能勾选5个监测点 + if (monitoringPointNodes.length > 5) { + // 获取之前选中的节点 + const previousCheckedNodes = checkedNodes.value || [] + + // 计算新增的节点 + const newNodes = monitoringPointNodes.filter( + (node: any) => !previousCheckedNodes.some((prev: any) => prev.id === node.id) + ) + + // 如果是从父级勾选导致超过限制,保留前几个直到达到限制数量 + if (newNodes.length > 0) { + const allowedNewCount = 5 - previousCheckedNodes.length + if (allowedNewCount > 0) { + // 允许添加allowedNewCount个新节点 + const allowedNewNodes = newNodes.slice(0, allowedNewCount) + const finalNodes = [...previousCheckedNodes, ...allowedNewNodes] + + checkedNodes.value = finalNodes + + // 设置树的勾选状态为正确的节点 + treeRef.value?.setCheckedNodes(finalNodes) + + // 将勾选的监测点节点暴露出去 + emit('checkedNodesChange', finalNodes) + + // 更新节点的可勾选状态 + updateNodeCheckStatus(finalNodes.length) + + // 只有在真正超过5个时才提示警告 + if (monitoringPointNodes.length > 5) { + ElMessage.warning('最多只能选择5个监测点') + } + return + } + } + + // 其他情况回滚到之前的状态 + ElMessage.warning('最多只能选择5个监测点') + treeRef.value?.setCheckedNodes(checkedNodes.value) + return + } + + checkedNodes.value = monitoringPointNodes + + // 将勾选的监测点节点暴露出去 + emit('checkedNodesChange', monitoringPointNodes) + + // 更新节点的可勾选状态 + updateNodeCheckStatus(monitoringPointNodes.length) +} +// 处理节点勾选变化 +const handleCheckChange2 = (data: any, checkInfo: any) => { const { checkedNodes: nodes } = checkInfo // 过滤出监测点层级(level=3)的节点 const monitoringPointNodes = nodes.filter((node: any) => { diff --git a/src/utils/echartMethod.ts b/src/utils/echartMethod.ts index 31bb9e0..30f5296 100644 --- a/src/utils/echartMethod.ts +++ b/src/utils/echartMethod.ts @@ -14,8 +14,7 @@ const calculateValue = (o: number, value: number, num: number, isMin: boolean) = } else if (value > -1 && value < 0 && isMin == false) { return 0 } - console.log('🚀 ~ calculateValue ~ Math.abs(o):', Math.abs(o)) - + let base if (Math.abs(o) >= 100) { base = 100 diff --git a/src/views/govern/cloudDeviceEntry/index.vue b/src/views/govern/cloudDeviceEntry/index.vue index 4ecc170..22e6e07 100644 --- a/src/views/govern/cloudDeviceEntry/index.vue +++ b/src/views/govern/cloudDeviceEntry/index.vue @@ -1068,7 +1068,7 @@ const add = () => { nodeId: '', cntractNo: '', sort: 0, - nodeProcess: '自动分配', + nodeProcess: '', }) busBarIndex.value = (deviceInfoList.value.length - 1).toString() // 清理监测点数据 @@ -1325,7 +1325,7 @@ const remove = () => { message: res.message }) reaseStatus() - console.log('engineeringId',engineeringId) + if (engineeringId) { setTimeout(() => { treedata(engineeringId) @@ -1359,7 +1359,7 @@ const remove = () => { case 4: // 监测点层级 const deviceId = nodeData.value.pids ? nodeData.value.pids.split(',')[3] : null - console.log(deviceId) + deleteLine(nodeData.value.id).then((res: any) => { ElMessage({ type: 'success', @@ -1421,7 +1421,7 @@ const next = async () => { nodeId: '', cntractNo: '', sort: 0, - nodeProcess: '自动分配', + nodeProcess: '', }) busBarIndex.value = (deviceInfoList.value.length - 1).toString() nextfalg.value = false @@ -1771,9 +1771,8 @@ const submitAllLevelData = () => { pageStatus.value = 1 // 清空所有表单 resetAllForms() - // 刷新树并选中合适的节点 - TerminalRef.value.info().then(() => { + TerminalRef.value.info() // 等待树更新完成后,根据之前点击的节点层级选中合适的节点 setTimeout(() => { let nodeIdToSelect: string|null|undefined = null; @@ -1794,8 +1793,9 @@ const submitAllLevelData = () => { nodeIdToSelect = nodeData.value.id; // 设备节点 break; } - + if (nodeIdToSelect) { + setTimeout(() => { treedata(nodeIdToSelect !== null ? nodeIdToSelect : undefined); // 重新加载节点内容以显示最新数据 @@ -1808,7 +1808,7 @@ const submitAllLevelData = () => { treedata(); // 选中根节点 } }, 100); - }) + }) } /** @@ -2120,7 +2120,7 @@ const handleBusBarTabsEdit = (targetName: any, action: any) => { nodeId: '', cntractNo: '', sort: 0, - nodeProcess: '自动分配', + nodeProcess: '', }) busBarIndex.value = (deviceInfoList.value.length - 1).toString() } else if (action === 'remove') { @@ -2240,6 +2240,7 @@ const tabChange = (type: string) => { } const treedata = (selectedNodeId?: string) => { + if (selectedNodeId) { TerminalRef.value.info(selectedNodeId); } else {