gaoluyang
2026-05-29 4762afb6cb043a3e539ed7ec8da5bde997bfaf65
src/views/system/role/index.vue
@@ -244,6 +244,7 @@
<script setup name="Role">
import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole, deptTreeSelect } from "@/api/system/role"
import { roleMenuTreeselect, treeselect as menuTreeselect } from "@/api/system/menu"
import {onMounted} from "vue";
const router = useRouter()
const { proxy } = getCurrentInstance()
@@ -272,7 +273,7 @@
/** 数据范围选项*/
const dataScopeOptions = ref([
  { value: "1", label: "全部数据权限" },
  { value: "2", label: "自定数据权限" },
  // { value: "2", label: "自定数据权限" },
  { value: "3", label: "本部门数据权限" },
  { value: "4", label: "本部门及以下数据权限" },
  { value: "5", label: "仅本人数据权限" }
@@ -428,17 +429,18 @@
function handleUpdate(row) {
  reset()
  const roleId = row.roleId || ids.value
  const roleMenu = getRoleMenuTreeselect(roleId)
  getRole(roleId).then(response => {
    form.value = response.data
    form.value.roleSort = Number(form.value.roleSort)
    open.value = true
    nextTick(() => {
      roleMenu.then((res) => {
        let checkedKeys = res.checkedKeys
    // 先获取角色菜单树,然后在 nextTick 中设置选中状态
    getRoleMenuTreeselect(roleId).then((res) => {
      nextTick(() => {
        // 获取后端返回的 checkedKeys,如果没有则默认为空数组
        let checkedKeys = res.checkedKeys || []
        checkedKeys.forEach((v) => {
          nextTick(() => {
            menuRef.value.setChecked(v, true, false)
            menuRef.value?.setChecked(v, true, false)
          })
        })
      })
@@ -450,8 +452,10 @@
/** 根据角色ID查询菜单树结构 */
function getRoleMenuTreeselect(roleId) {
  return roleMenuTreeselect(roleId).then(response => {
    menuOptions.value = response.menus
    return response
    // 后端返回的数据在 response.data 中
    const data = response.data || {}
    menuOptions.value = data.menus || []
    return data
  })
}
@@ -580,5 +584,7 @@
  reset()
}
getList()
onMounted(() => {
   getList();
});
</script>