From a249e5e185fe89198715d7abfedb943e4209c39b Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Fri, 29 Nov 2024 16:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/device/interface/testSource.ts | 9 +++ .../testSource/components/parameterTable.vue | 64 ++++++++++++++----- .../testSource/components/testSourcePopup.vue | 2 +- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/frontend/src/api/device/interface/testSource.ts b/frontend/src/api/device/interface/testSource.ts index cbe45a1..3ef6ba5 100644 --- a/frontend/src/api/device/interface/testSource.ts +++ b/frontend/src/api/device/interface/testSource.ts @@ -32,4 +32,13 @@ export namespace TestSource { export interface ResTestSourcePage extends ResPage { } + export interface ParameterType{ + id:string; + sourceParamType:string; + sourceParamDesc:string; + sourceParamValue:string; + sort:number; + pId:string; + children?:ParameterType[]; + } } \ No newline at end of file diff --git a/frontend/src/views/machine/testSource/components/parameterTable.vue b/frontend/src/views/machine/testSource/components/parameterTable.vue index 44a2b76..cbbc987 100644 --- a/frontend/src/views/machine/testSource/components/parameterTable.vue +++ b/frontend/src/views/machine/testSource/components/parameterTable.vue @@ -37,39 +37,57 @@ import { useDictStore } from '@/stores/modules/dict' import ParameterPopup from '@/views/machine/testSource/components/parameterPopup.vue'; import { onMounted, reactive, ref, watch } from 'vue' + import {map} from "lodash"; const parameterPopup = ref() const dictStore = useDictStore() // ProTable 实例 const proTable = ref() const tableData = ref([]) const props = defineProps<{ - data: TestSource.ResTestSource | null; + parameterStr: string; }>(); - + + let originalParameterArr: TestSource.ParameterType[] = [] onMounted(() => { getTableList(); }) -watch(() => props.data, (newData) => { +watch(() => props.parameterStr, (newData) => { if (newData) { getTableList(); } }) const getTableList = () => { - if (props.data) { - // 处理传递过来的数据 - let newParams = props.data.parameter ? JSON.parse(props.data.parameter) : {}; - // 确保 newParams 是一个数组 - if (!Array.isArray(newParams)) { - newParams = [newParams]; - } - const apiData = newParams; - tableData.value = apiData; + if (props.parameterStr) { + originalParameterArr =JSON.parse(props.parameterStr) + tableData.value = getTreeData(originalParameterArr) } }; + const getTreeData = (data: TestSource.ParameterType[]): TestSource.ParameterType[] => { + const result: TestSource.ParameterType[] = []// 最终返回的树形结构数据 + //不能修改原数组,所以需要深拷贝 + const copyData = JSON.parse(JSON.stringify(data)) + const map = new Map(); + copyData.forEach(item => { + map.set(item.id, item); + }); + for (const item of copyData) { + let parent = map.get(item.pId); + if (parent) { + if (!parent.children) { + parent.children = []; + } + parent.children.push(item); + } else { + result.push(item); + } + } + return result; + } + const columns = reactive[]>([ { type: 'selection', fixed: 'left', width: 70 }, { type: 'index', fixed: 'left', width: 70, label: '序号' }, @@ -107,10 +125,24 @@ const batchDelete = async (id: string[]) => { // 删除设备 const handleDelete = async (params: TestSource.ResTestSource) => { - console.log(tableData.value ) - tableData.value = tableData.value.filter(item => item.id !== params.id); - console.log(tableData.value ) + let parentIds = originalParameterArr.map(item => item.pId) + if (parentIds.includes(params.id)) { + ElMessage.error('不能删除父节点'); + return; + } + originalParameterArr = originalParameterArr.filter(item => item.id !== params.id); + tableData.value = getTreeData(originalParameterArr) + } - + const copyRow = (row) => { + let parentIds = originalParameterArr.map(item => item.pId) + // if (parentIds.includes(row.id)) { + // originalParameterArr.push({ + // + // }) + // } else { + // + // } + }; \ No newline at end of file diff --git a/frontend/src/views/machine/testSource/components/testSourcePopup.vue b/frontend/src/views/machine/testSource/components/testSourcePopup.vue index 6b86c16..af6ce82 100644 --- a/frontend/src/views/machine/testSource/components/testSourcePopup.vue +++ b/frontend/src/views/machine/testSource/components/testSourcePopup.vue @@ -36,7 +36,7 @@ - +