新增管理员模拟登录
This commit is contained in:
@@ -95,9 +95,20 @@
|
||||
<el-switch v-model="scope.row.lockFlag" @change="changeSwitch(scope.row)" active-value="0" inactive-value="9"></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('common.action')" width="200" fixed="right">
|
||||
<el-table-column :label="$t('common.action')" width="280" fixed="right">
|
||||
<template #default="scope">
|
||||
<div style="display: flex">
|
||||
<!-- 模拟登录 -->
|
||||
<el-button
|
||||
v-auth="'sys_user_simulate'"
|
||||
icon="User"
|
||||
text
|
||||
type="primary"
|
||||
:disabled="scope.row.username === 'admin'"
|
||||
@click="handleSimulateLogin(scope.row)"
|
||||
>
|
||||
模拟登录
|
||||
</el-button>
|
||||
<!-- 重置密码 -->
|
||||
<popover-input v-model="inputPassword" @confirm="changePassword(scope.row)">
|
||||
<template #default>
|
||||
@@ -142,22 +153,31 @@
|
||||
url="/admin/user/import"
|
||||
@refreshDataList="getDataList"
|
||||
/>
|
||||
|
||||
<change-role ref="changeRoleRef" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" name="systemUser" setup>
|
||||
import { delObj, pageList, putObj } from '/@/api/admin/user';
|
||||
import { delObj, pageList, putObj, simulateLogin } from '/@/api/admin/user';
|
||||
import { deptTree } from '/@/api/admin/dept';
|
||||
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useUserInfo } from '/@/stores/userInfo';
|
||||
import { Session, Local } from '/@/utils/storage';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
// 动态引入组件
|
||||
const UserForm = defineAsyncComponent(() => import('./form.vue'));
|
||||
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
||||
const PopoverInput = defineAsyncComponent(() => import('/@/components/PopoverInput/index.vue'));
|
||||
const ChangeRole = defineAsyncComponent(() => import('/@/views/admin/system/role/change-role.vue'));
|
||||
|
||||
const { t } = useI18n();
|
||||
const router = useRouter();
|
||||
const userStore = useUserInfo();
|
||||
const changeRoleRef = ref();
|
||||
|
||||
// 定义变量内容
|
||||
const userDialogRef = ref();
|
||||
@@ -260,4 +280,28 @@ const changePassword = async (row: any) => {
|
||||
useMessage().success(t('common.optSuccessText'));
|
||||
getDataList();
|
||||
};
|
||||
|
||||
// 模拟登录
|
||||
const handleSimulateLogin = async (row: any) => {
|
||||
try {
|
||||
await useMessageBox().confirm('确定要以用户 "' + row.realName + '" 的身份登录吗?');
|
||||
const res = await simulateLogin(row.userId);
|
||||
if (res.data && res.data.access_token) {
|
||||
userStore.setTokenCache(res.data.access_token, res.data.refresh_token);
|
||||
Session.set('userInfo', {
|
||||
user: { username: res.data.username, userId: res.data.user_id },
|
||||
});
|
||||
await userStore.setUserInfos();
|
||||
useMessage().success('模拟登录成功');
|
||||
router.push('/');
|
||||
setTimeout(() => {
|
||||
changeRoleRef.value?.open();
|
||||
}, 500);
|
||||
}
|
||||
} catch (err: any) {
|
||||
if (err !== 'cancel') {
|
||||
useMessage().error(err.msg || '模拟登录失败');
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user