修改算法库

This commit is contained in:
guanj
2025-12-29 20:46:24 +08:00
parent 26ff8087c6
commit 06764c073a
6 changed files with 137 additions and 106 deletions

View File

@@ -8,7 +8,6 @@
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
v-bind="$attrs" v-bind="$attrs"
default-expand-all default-expand-all
@onAddTree="onAddTree" @onAddTree="onAddTree"
/> />
</div> </div>
@@ -72,8 +71,28 @@ const loadData = (id?: any) => {
const onAddTree = () => { const onAddTree = () => {
emit('onAddTree') emit('onAddTree')
} }
const setKey = (id: string) => {
treeRef.value.treeRef.setCurrentKey(id)
return findNodeById(tree.value, id)
}
const findNodeById = (tree1: any, targetId: any) => {
for (const node of tree1) {
// 1. 当前节点匹配ID直接返回该节点
if (node.id === targetId) {
return node
}
// 2. 当前节点有子节点,递归查找子节点
if (node.children && node.children.length > 0) {
const result: any = findNodeById(node.children, targetId)
// 子节点中找到结果,立即返回(终止递归)
if (result) return result
}
}
// 3. 遍历完未找到返回null
return null
}
loadData() loadData()
defineExpose({ loadData }) defineExpose({ loadData, setKey })
</script> </script>
<style lang="scss"> <style lang="scss">
.point-tree { .point-tree {
@@ -85,4 +104,3 @@ defineExpose({ loadData })
border: 1px solid var(--el-border-color); border: 1px solid var(--el-border-color);
} }
</style> </style>

View File

@@ -10,9 +10,6 @@
<el-form-item label="名称" prop="name" v-if="title == '修改算法' ? TreeList.level != 4 : TreeList.level != 3"> <el-form-item label="名称" prop="name" v-if="title == '修改算法' ? TreeList.level != 4 : TreeList.level != 3">
<el-input v-model="form.name" placeholder="名称" clearable maxlength="32" show-word-limit @input="handleInput('name', $event)"/> <el-input v-model="form.name" placeholder="名称" clearable maxlength="32" show-word-limit @input="handleInput('name', $event)"/>
</el-form-item> </el-form-item>
<el-form-item label="绑定页面" v-if="title == '修改算法' ? TreeList.level == 3 : TreeList.level == 2">
<el-input v-model="form.path" placeholder="请输入需要绑定的路由" clearable maxlength="32" show-word-limit @input="handleInput('name', $event)"/>
</el-form-item>
<!-- <div v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3"> --> <!-- <div v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3"> -->
<el-form-item label="算法名称" prop="name" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3"> <el-form-item label="算法名称" prop="name" v-if="title == '修改算法' ? TreeList.level == 4 : TreeList.level == 3">
<el-input v-model="form.name" placeholder="请输入算法名称" clearable maxlength="32" show-word-limit @input="handleInput('name', $event)"/> <el-input v-model="form.name" placeholder="请输入算法名称" clearable maxlength="32" show-word-limit @input="handleInput('name', $event)"/>
@@ -70,8 +67,7 @@ const form = reactive<anyObj>({
period: '', period: '',
definition: '', definition: '',
source: '', source: '',
pid: '', pid: ''
path: ''
}) })
const rules = { const rules = {
name: [{ required: true, message: '请输入算法名称', trigger: 'blur' }], name: [{ required: true, message: '请输入算法名称', trigger: 'blur' }],
@@ -136,7 +132,6 @@ const submit = async () => {
} else { } else {
forms.name = form.name forms.name = form.name
forms.pid = form.pid forms.pid = form.pid
forms.path = form.path||''
} }
await addAlgorithm(forms).then(res => { await addAlgorithm(forms).then(res => {
ElMessage.success('新增成功') ElMessage.success('新增成功')

View File

@@ -2,10 +2,10 @@
<div class="default-main"> <div class="default-main">
<el-tabs v-model="activeName" type="border-card"> <el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="总览" name="1" v-if="tabList.includes('1')"> <el-tab-pane label="总览" name="1" v-if="tabList.includes('1')">
<overview v-if="activeName == '1'" /> <overview v-if="activeName == '1'" @algorithm="algorithm" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="算法库" name="2" v-if="tabList.includes('2')"> <el-tab-pane label="算法库" name="2" v-if="tabList.includes('2')">
<list v-if="activeName == '2'" /> <list v-if="activeName == '2'" ref="listRef" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
@@ -27,6 +27,7 @@ defineOptions({
const activeName = ref('1') const activeName = ref('1')
const id = ref('') const id = ref('')
const key = ref('') const key = ref('')
const listRef = ref()
const tabList = ref(['1', '2']) const tabList = ref(['1', '2'])
onMounted(() => { onMounted(() => {
let key = window.location.href.split('?')[0].slice(-1) let key = window.location.href.split('?')[0].slice(-1)
@@ -36,7 +37,12 @@ onMounted(() => {
activeName.value = key activeName.value = key
} }
}) })
const algorithm = (val: any) => {
activeName.value = '2'
setTimeout(() => {
listRef.value.getList(val)
}, 100)
}
const layout = mainHeight(63) as any const layout = mainHeight(63) as any
</script> </script>

View File

@@ -13,7 +13,7 @@
@onAddTree="onAddTree" @onAddTree="onAddTree"
></algorithmTree> ></algorithmTree>
</pane> </pane>
<pane style="background: #fff;width: 100%;" :style="height" > <pane style="background: #fff; width: 100%" :style="height">
<div class="boxTop"> <div class="boxTop">
<div> <div>
<el-radio-group v-model="radio"> <el-radio-group v-model="radio">
@@ -111,13 +111,13 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref, provide } from 'vue' import { onMounted, ref, provide, nextTick } from 'vue'
import 'splitpanes/dist/splitpanes.css' import 'splitpanes/dist/splitpanes.css'
import { Splitpanes, Pane } from 'splitpanes' import { Splitpanes, Pane } from 'splitpanes'
import algorithmTree from '@/components/tree/pqs/algorithmTree.vue' import algorithmTree from '@/components/tree/pqs/algorithmTree.vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import { defaultAttribute } from '@/components/table/defaultAttribute' import { defaultAttribute } from '@/components/table/defaultAttribute'
import { getLineExport, getList, selectReleation } from '@/api/event-boot/report' import { getLineExport, selectReleation } from '@/api/event-boot/report'
import addTree from './components/addTree.vue' import addTree from './components/addTree.vue'
import PopupEdit from './components/form.vue' import PopupEdit from './components/form.vue'
import { useMonitoringPoint } from '@/stores/monitoringPoint' import { useMonitoringPoint } from '@/stores/monitoringPoint'
@@ -295,6 +295,19 @@ const change = (row: any) => {
}) })
}) })
} }
const getList = (val: any) => {
setTimeout(async () => {
dotList.value = await treeRef.value.setKey(val.data.pid)
await dotList.value?.childrens.forEach((item: any, i: number) => {
if (item.id == val.data.id) {
radio.value = i
}
})
}, 500)
}
defineExpose({
getList
})
</script> </script>
<style lang="scss"> <style lang="scss">
.splitpanes.default-theme .splitpanes__pane { .splitpanes.default-theme .splitpanes__pane {

View File

@@ -24,6 +24,7 @@ const adminInfo = useAdminInfo()
defineOptions({ defineOptions({
name: 'database/algorithm' name: 'database/algorithm'
}) })
const emits = defineEmits(['algorithm'])
const height = mainHeight(20) const height = mainHeight(20)
const size = ref(23) const size = ref(23)
@@ -117,10 +118,8 @@ const info = () => {
} }
// 点击echart // 点击echart
const echartClick = (params: any) => { const echartClick = (params: any) => {
if (params.data.level == 3 && params.data.path != '') { if(params.data.level == 3){
router.push({ emits('algorithm', params)
name: params.data.path
})
} }
} }
const setTreeAllNodeExpand = (treeData: any) => { const setTreeAllNodeExpand = (treeData: any) => {

View File

@@ -61,7 +61,7 @@ const open = (data: any) => {
loading.value = true loading.value = true
show.value = true show.value = true
setTimeout(() => { setTimeout(() => {
dataList.value = data.sort((a, b) => b.vharmonicbootValue - a.vharmonicbootValue) dataList.value = data.sort((a, b) => b.vharmonicValue - a.vharmonicValue)
loading.value = false loading.value = false
}, 1000) }, 1000)
} }