修改媒体类型和区域新建子集不刷新问题

This commit is contained in:
wangchengming 2025-10-15 21:09:51 +08:00
parent 6e9c66c82d
commit 08cc123cb4
2 changed files with 131 additions and 62 deletions

View File

@ -162,7 +162,6 @@ const loadChildren = async (row, treeNode, resolve) => {
resolve(response.data); resolve(response.data);
} catch (error) { } catch (error) {
console.error('加载子节点失败:', error);
resolve([]); resolve([]);
} }
} }
@ -242,7 +241,41 @@ const submitForm = () => {
} }
} else { } else {
// //
getsysRegionTreeList(form.value.parentId || 0); const parentId = form.value.parentId || 0;
if (parentId === '0' || parentId === 0) {
// -
getsysRegionTreeList();
} else {
// -
const parentRow = findRowById(parentId);
if (parentRow) {
//
queryParams.value.parentId = parentId;
sysRegionListByPid(queryParams.value).then(res => {
// 使 splice
if (!parentRow.childList) {
parentRow.childList = [];
}
parentRow.childList.splice(0, parentRow.childList.length, ...res.data);
parentRow.hasChildren = res.data && res.data.length > 0;
//
nextTick(() => {
//
tableRef.value?.toggleRowExpansion(parentRow, false);
setTimeout(() => {
tableRef.value?.toggleRowExpansion(parentRow, true);
tableRef.value?.doLayout();
}, 50);
});
});
} else {
//
getsysRegionTreeList();
}
}
} }
// //

View File

@ -115,14 +115,14 @@ const findParentId = (id, rows = mediaTypeTreeList.value, parentId = 0) => {
// - // -
const findParentNode = (id, rows = mediaTypeTreeList.value, parent = null) => { const findParentNode = (id, rows = mediaTypeTreeList.value, parent = null) => {
for (const row of rows) { for (const row of rows) {
if (row.id === id) return parent; if (row.id === id) return parent;
if (row.childList) { if (row.childList) {
const found = findParentNode(id, row.childList, row); const found = findParentNode(id, row.childList, row);
if (found) return found; if (found) return found;
} }
} }
return null; return null;
}; };
// handleExpandChange // handleExpandChange
@ -161,7 +161,6 @@ const loadChildren = async (row, treeNode, resolve) => {
resolve(response.data); resolve(response.data);
} catch (error) { } catch (error) {
console.error('加载子节点失败:', error);
resolve([]); resolve([]);
} }
}; };
@ -240,7 +239,44 @@ const submitForm = () => {
} }
} else { } else {
// //
getsysMediaTypeTreeList(form.value.parentId || 0); const parentId = form.value.parentId || 0;
if (parentId === '0' || parentId === 0) {
// -
getsysMediaTypeTreeList();
} else {
// - 使
const parentRow = findRowById(parentId);
if (parentRow) {
// 1: 使
if (!parentRow.childList) {
//
parentRow.childList = [];
}
//
queryParams.value.parentId = parentId;
sysMediaTypeListByPid(queryParams.value).then(res => {
// 使 splice
parentRow.childList.splice(0, parentRow.childList.length, ...res.data);
parentRow.hasChildren = res.data && res.data.length > 0;
//
nextTick(() => {
//
tableRef.value?.toggleRowExpansion(parentRow, false);
setTimeout(() => {
tableRef.value?.toggleRowExpansion(parentRow, true);
tableRef.value?.doLayout();
}, 50);
});
});
} else {
//
getsysMediaTypeTreeList();
}
}
} }
// //
@ -260,56 +296,56 @@ const submitForm = () => {
}; };
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (row) => { const handleDelete = async (row) => {
try { try {
await proxy.$modal.confirm(`是否确认删除媒体类型名称为"${row.name}"的数据项?`); await proxy.$modal.confirm(`是否确认删除媒体类型名称为"${row.name}"的数据项?`);
// 1. // 1.
const saveExpanded = new Set(expandedKeys.value); const saveExpanded = new Set(expandedKeys.value);
// 2. // 2.
const parentNode = findParentNode(row.id); const parentNode = findParentNode(row.id);
// 3. API // 3. API
await deleteSysMediaType(row.id); await deleteSysMediaType(row.id);
// 4. // 4.
saveExpanded.delete(row.id); saveExpanded.delete(row.id);
expandedKeys.value = new Set(saveExpanded); expandedKeys.value = new Set(saveExpanded);
// 5. // 5.
if (!parentNode) { if (!parentNode) {
// - // -
mediaTypeTreeList.value = []; mediaTypeTreeList.value = [];
await getsysMediaTypeTreeList(); await getsysMediaTypeTreeList();
} else { } else {
// - childList // - childList
const index = parentNode.childList.findIndex(item => item.id === row.id); const index = parentNode.childList.findIndex(item => item.id === row.id);
if (index !== -1) { if (index !== -1) {
parentNode.childList.splice(index, 1); // parentNode.childList.splice(index, 1); //
// //
nextTick(() => { nextTick(() => {
tableRef.value?.doLayout(); tableRef.value?.doLayout();
}); });
}
} }
}
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
// 6. // 6.
nextTick(() => { nextTick(() => {
saveExpanded.forEach(id => { saveExpanded.forEach(id => {
const row = findRowById(id); const row = findRowById(id);
if (row) { if (row) {
tableRef.value?.toggleRowExpansion(row, true); tableRef.value?.toggleRowExpansion(row, true);
} }
});
}); });
}); } catch (error) {
} catch (error) { if (error !== 'cancel') {
if (error !== 'cancel') { console.error('删除失败:', error);
console.error('删除失败:', error); proxy.$modal.msgError("删除失败");
proxy.$modal.msgError("删除失败"); }
} }
}
}; };
// //