| | |
| | | <div class="mt-4"> |
| | | 权限切换(请先切换权限模式为后台权限模式): |
| | | <a-button-group> |
| | | <a-button @click="changeMenu('1')"> 获取用户id为1的菜单 </a-button> |
| | | <a-button @click="changeMenu('2')"> 获取用户id为2的菜单 </a-button> |
| | | <a-button @click="switchToken(1)" :disabled="!isBackPremissionMode"> |
| | | 获取用户id为1的菜单 |
| | | </a-button> |
| | | <a-button @click="switchToken(2)" :disabled="!isBackPremissionMode"> |
| | | 获取用户id为2的菜单 |
| | | </a-button> |
| | | </a-button-group> |
| | | </div> |
| | | </PageWrapper> |
| | | </template> |
| | | <script lang="ts"> |
| | | import { defineComponent } from 'vue'; |
| | | import { defineComponent, computed } from 'vue'; |
| | | import CurrentPermissionMode from '../CurrentPermissionMode.vue'; |
| | | import { RoleEnum } from '/@/enums/roleEnum'; |
| | | import { usePermission } from '/@/hooks/web/usePermission'; |
| | | import { useUserStore } from '/@/store/modules/user'; |
| | | import { PageWrapper } from '/@/components/Page'; |
| | | import { PermissionModeEnum } from '/@/enums/appEnum'; |
| | | import { useAppStore } from '/@/store/modules/app'; |
| | | import { Alert } from 'ant-design-vue'; |
| | | export default defineComponent({ |
| | | components: { Alert, CurrentPermissionMode, PageWrapper }, |
| | | setup() { |
| | | const { changeMenu } = usePermission(); |
| | | const { refreshMenu } = usePermission(); |
| | | const userStore = useUserStore(); |
| | | const appStore = useAppStore(); |
| | | |
| | | const isBackPremissionMode = computed( |
| | | () => appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK, |
| | | ); |
| | | |
| | | async function switchToken(userId: number) { |
| | | // 本函数切换用户登录Token的部分仅用于演示,实际生产时切换身份应当重新登录 |
| | | const token = 'fakeToken' + userId; |
| | | userStore.setToken(token); |
| | | |
| | | // 重新获取用户信息和菜单 |
| | | userStore.getUserInfoAction(); |
| | | refreshMenu(); |
| | | } |
| | | |
| | | return { |
| | | RoleEnum, |
| | | changeMenu, |
| | | refreshMenu, |
| | | switchToken, |
| | | isBackPremissionMode, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | | .demo { |
| | | background: #fff; |
| | | background-color: @component-background; |
| | | } |
| | | </style> |