Vue.js 部门下拉菜单显示无数据问题排查

代码示例:

const deptList = ref<DeptPageVO[]>([]); // 部门列表数据
const filteredDeptList = computed(() => filterDeptList(formData.parentId)); // 每当 formData.parentId 发生变化时,filteredDeptList 的值会自动更新,以反映新的过滤后的部门列表。

// 过滤部门列表
const filterDeptList = (parentId) => {
  if (!parentId) {
    return deptList.value; // 如果 parentId 为空,显示完整的部门列表
  } else {
    const parentDept = deptList.value.find((dept) => dept.deptId === parentId);
    if (parentDept) {
      // 过滤掉自己和自己的子集
      // return deptList.value.filter((dept) => dept.deptId !== parentId && !dept.deptPath.startsWith(parentDept.deptPath));
      return deptList.value.filter((dept) => dept.deptId !== parentId && parentDept.deptPath && !dept.deptPath.startsWith(parentDept.deptPath));
    } else {
      return deptList.value; // 如果找不到父级部门,显示完整的部门列表
    }  
  }
};

<el-form-item label='上级部门' prop='parentId'>
  <el-tree-select v-model='formData.parentId' clearable :data='filteredDeptList' node-key='deptId' check-strictly
  :default-expanded-keys='[formData.parentId]' :default-checked-keys='[formData.parentId]'
  :props='{ label: 'deptName', value: 'deptId' }' :filter-node-method='filterNode' :suffix-icon='CaretBottom'
  style='width: 450px' />
</el-form-item>

问题: 上级部门中只显示自己的父级,点击下拉菜单显示“无数据”内容。

排查步骤:

  1. 检查deptList是否正确地获取到了部门列表数据。

    • 确认deptList是否被正确地赋值,或者是否在获取数据之前被调用了。
    • 可以通过调试工具观察deptList的值,确保它包含了完整的部门列表数据。
  2. 检查filteredDeptList是否能正确地过滤部门列表。

    • 确保filteredDeptList的计算属性能正确地调用filterDeptList函数并返回正确的过滤后的部门列表。
    • 可以通过调试工具观察filteredDeptList的值,确保它包含了正确的过滤后的部门列表数据。
  3. 检查filterDeptList函数是否能正确地过滤部门列表。

    • 确保函数中的逻辑能正确地过滤出符合条件的部门列表,并返回正确的结果。
    • 可以通过调试工具观察filterDeptList函数的返回值,确保它包含了正确的过滤后的部门列表数据。
  4. 检查el-tree-select组件的配置是否正确。

    • 确保data属性正确地绑定到filteredDeptList,并且filter-node-method属性正确地绑定到filterNode方法(如果有的话)。
    • 可以通过调试工具观察el-tree-select组件的配置,确保它正确地使用了filteredDeptList数据源。

常见错误:

  • deptList为空,没有正确获取部门列表数据。
  • filterDeptList函数过滤逻辑错误,无法正确过滤出符合条件的部门列表。
  • el-tree-select组件配置错误,没有正确绑定filteredDeptList数据源。

解决方法:

根据排查出的问题,找到相应的解决方案。例如:

  • 如果deptList为空,则需要检查代码是否正确地获取了部门列表数据,并确保在使用deptList之前,它已经包含了完整的数据。
  • 如果filterDeptList函数过滤逻辑错误,则需要仔细检查函数中的逻辑,确保它能够正确地过滤出符合条件的部门列表。
  • 如果el-tree-select组件配置错误,则需要根据文档说明正确配置组件,确保它能够正确地使用filteredDeptList数据源。

通过以上排查步骤和解决方法,您应该能够找到导致上级部门下拉菜单显示“无数据”的问题所在,并成功解决问题。

Vue.js 部门下拉菜单显示无数据问题排查

原文地址: https://www.cveoy.top/t/topic/jBOn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录