新增管理员模拟登录
This commit is contained in:
@@ -153,3 +153,13 @@ export function getUserListByRole(obj: string) {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模拟登录(管理员以指定用户身份登录)
|
||||||
|
*/
|
||||||
|
export function simulateLogin(userId: string) {
|
||||||
|
return request({
|
||||||
|
url: '/auth/token/simulate/' + userId,
|
||||||
|
method: 'get',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -95,9 +95,20 @@
|
|||||||
<el-switch v-model="scope.row.lockFlag" @change="changeSwitch(scope.row)" active-value="0" inactive-value="9"></el-switch>
|
<el-switch v-model="scope.row.lockFlag" @change="changeSwitch(scope.row)" active-value="0" inactive-value="9"></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template #default="scope">
|
||||||
<div style="display: flex">
|
<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)">
|
<popover-input v-model="inputPassword" @confirm="changePassword(scope.row)">
|
||||||
<template #default>
|
<template #default>
|
||||||
@@ -142,22 +153,31 @@
|
|||||||
url="/admin/user/import"
|
url="/admin/user/import"
|
||||||
@refreshDataList="getDataList"
|
@refreshDataList="getDataList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<change-role ref="changeRoleRef" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" name="systemUser" setup>
|
<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 { deptTree } from '/@/api/admin/dept';
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table';
|
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||||
import { useI18n } from 'vue-i18n';
|
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 UserForm = defineAsyncComponent(() => import('./form.vue'));
|
||||||
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
const QueryTree = defineAsyncComponent(() => import('/@/components/QueryTree/index.vue'));
|
||||||
const PopoverInput = defineAsyncComponent(() => import('/@/components/PopoverInput/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 { t } = useI18n();
|
||||||
|
const router = useRouter();
|
||||||
|
const userStore = useUserInfo();
|
||||||
|
const changeRoleRef = ref();
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const userDialogRef = ref();
|
const userDialogRef = ref();
|
||||||
@@ -260,4 +280,28 @@ const changePassword = async (row: any) => {
|
|||||||
useMessage().success(t('common.optSuccessText'));
|
useMessage().success(t('common.optSuccessText'));
|
||||||
getDataList();
|
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>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user