| | |
| | | <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()
|
| | |
| | | /** 数据范围选项*/
|
| | | const dataScopeOptions = ref([
|
| | | { value: "1", label: "全部数据权限" },
|
| | | { value: "2", label: "自定数据权限" },
|
| | | // { value: "2", label: "自定数据权限" },
|
| | | { value: "3", label: "本部门数据权限" },
|
| | | { value: "4", label: "本部门及以下数据权限" },
|
| | | { value: "5", label: "仅本人数据权限" }
|
| | |
| | | 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)
|
| | | })
|
| | | })
|
| | | })
|
| | |
| | | /** 根据角色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
|
| | | })
|
| | | }
|
| | |
|
| | |
| | | reset()
|
| | | }
|
| | |
|
| | | getList()
|
| | | onMounted(() => {
|
| | | getList();
|
| | | });
|
| | | </script>
|