Files
pqs-9100_client/frontend/src/views/machine/testScript/components/tree.vue

98 lines
3.0 KiB
Vue
Raw Normal View History

2025-02-13 16:15:26 +08:00
<template>
2025-02-27 15:09:09 +08:00
<el-tree
node-key="id"
default-expand-all
:data="props.treeData"
:props="defaultProps"
style="width: 100%"
:expand-on-click-node="false"
@node-click="handleNodeClick"
>
2025-02-17 08:39:18 +08:00
<template #default="{ node, data }">
2025-02-19 16:54:54 +08:00
<el-tooltip effect="dark" :content="data.scriptTypeName || data.sourceDesc" placement="top" :hide-after="0">
2025-02-17 08:39:18 +08:00
<div class="custom-tree-node">
2025-02-19 16:54:54 +08:00
{{ data.scriptTypeName || data.sourceDesc }}
2025-02-17 08:39:18 +08:00
</div>
</el-tooltip>
</template>
</el-tree>
2025-02-13 16:15:26 +08:00
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
2025-02-19 16:54:54 +08:00
2025-02-13 16:15:26 +08:00
import { CheckData } from '@/api/check/interface'
2025-02-17 16:44:02 +08:00
const props = defineProps({
2025-02-19 16:54:54 +08:00
treeData: {
type: Array,
2025-02-17 16:44:02 +08:00
required: true
}
})
2025-02-27 15:09:09 +08:00
const emit = defineEmits(['setTab'])
2025-02-13 16:15:26 +08:00
const dataTree = ref<CheckData.TreeItem[]>([])
const defaultProps = {
children: 'children',
label: 'scriptTypeName',
pid: 'pid'
}
2025-02-27 15:09:09 +08:00
const handleNodeClick = (data, node) => {
let code = ['Base', 'VOL', 'Freq', 'Harm', 'Base_0_10', 'Base_20_85', 'Base_110_200']
const parents = getParentNodes(node, [])
parents.pop()
parents.unshift(node.data)
parents.reverse()
// 获取当前节点的直接父节点
emit('setTab', {
activeName: parents[0].scriptTypeCode,
childActiveName: findTargetCodes(parents, code)[0] || ''
})
}
// 返回父级
const getParentNodes = (node, parents) => {
if (node.parent) {
// 将父节点添加到数组中
parents.push(node.parent.data)
// 递归获取更高层级的父节点
getParentNodes(node.parent, parents)
}
return parents
}
// 判断childActiveName值
function findTargetCodes(data: any[], targetCodes: string[]) {
let result: string[] = []
data.forEach(item => {
if (item.scriptTypeCode != null) {
if (targetCodes.includes(item.scriptTypeCode)) {
result.push(item.scriptTypeCode)
}
}
})
return result
// for (let item of data) {
// // 判断当前项的 scriptTypeCode 是否包含目标值
// if (item.scriptTypeCode !=null && targetCodes.includes(item.scriptTypeCode)) {
// console.log("🚀 ~ findTargetCodes ~ targetCodes.includes(item.scriptTypeCode):",item.scriptTypeCode, targetCodes.includes(item.scriptTypeCode))
// result.push(item.scriptTypeCode)
// return result
// }
// // 如果存在 children递归检查
// if (item.children && item.children.length > 0) {
// result = result.concat(findTargetCodes(item.children, targetCodes))
// }
// }
// return result
}
2025-02-19 16:54:54 +08:00
onMounted(() => {})
// // 对外映射
// defineExpose({ init })
2025-02-13 16:15:26 +08:00
</script>
2025-02-17 08:39:18 +08:00
<style lang="scss" scoped>
.custom-tree-node {
max-width: 230px;
overflow-x: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
}
</style>