This commit is contained in:
2025-12-16 11:11:07 +08:00
parent e4109c000a
commit 77ce7ea0ef

View File

@@ -80,6 +80,7 @@
placeholder="请选择父部门"
clearable
style="width: 100%"
@change="handleParentChange"
/>
</el-form-item>
<el-form-item label="部门名称" prop="name">
@@ -181,7 +182,8 @@ const cascaderProps = {
value: 'value',
label: 'label',
children: 'children',
checkStrictly: true
checkStrictly: true,
emitPath: false // 只返回最后选中的节点ID而不是路径数组
};
// 树形组件配置
@@ -322,6 +324,16 @@ function isNodeInTree(node: SysDept, tree: SysDept[]): boolean {
return false;
}
// 处理父部门选择变化
function handleParentChange(value: any) {
// 如果级联选择器返回的是数组尽管配置了emitPath: false取最后一个元素
if (Array.isArray(value)) {
formData.parentID = value[value.length - 1];
} else {
formData.parentID = value;
}
}
// 新增部门
function handleAdd() {
isEdit.value = false;
@@ -332,7 +344,10 @@ function handleAdd() {
// 新增子部门
function handleAddChild(row: SysDept) {
isEdit.value = false;
formData.parentID = row.deptID;
// 确保 parentID 是字符串而不是数组
formData.parentID = Array.isArray(row.deptID)
? row.deptID[row.deptID.length - 1]
: row.deptID;
dialogVisible.value = true;
}
@@ -340,6 +355,10 @@ function handleAddChild(row: SysDept) {
function handleEdit(row: SysDept) {
isEdit.value = true;
Object.assign(formData, row);
// 确保 parentID 是字符串而不是数组
if (Array.isArray(formData.parentID)) {
formData.parentID = formData.parentID[formData.parentID.length - 1];
}
dialogVisible.value = true;
}
@@ -375,11 +394,18 @@ async function handleSubmit() {
await formRef.value.validate();
submitting.value = true;
// 防御性处理确保parentID是字符串而不是数组
const submitData = { ...formData };
if (Array.isArray(submitData.parentID)) {
// 如果是数组,取最后一个元素(叶子节点)
submitData.parentID = submitData.parentID[submitData.parentID.length - 1];
}
if (isEdit.value) {
await deptApi.updateDept(formData);
await deptApi.updateDept(submitData);
ElMessage.success('更新成功');
} else {
await deptApi.createDept(formData);
await deptApi.createDept(submitData);
ElMessage.success('新增成功');
}