feat: 第三方登录认证功能和管理页

This commit is contained in:
TsMask
2025-08-12 09:54:37 +08:00
parent 0514c58b63
commit a7b539cd36
18 changed files with 2370 additions and 416 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -44,10 +44,13 @@ const { t } = useI18n();
let dict: {
/**状态 */
sysNormalDisable: DictType[];
/**用户类型 */
sysUserType: DictType[];
/**性别 */
sysUserSex: DictType[];
} = reactive({
sysNormalDisable: [],
sysUserType: [],
sysUserSex: [],
});
@@ -64,6 +67,8 @@ let queryParams = reactive({
deptId: undefined,
/**用户状态 */
statusFlag: undefined,
/**用户类型 */
userType: undefined,
/**记录开始时间 */
beginTime: undefined as number | undefined,
/**记录结束时间 */
@@ -81,6 +86,7 @@ function fnQueryReset() {
phone: '',
deptId: undefined,
statusFlag: undefined,
userType: undefined,
beginTime: undefined,
endTime: undefined,
pageNum: 1,
@@ -148,6 +154,13 @@ let tableColumns: ColumnsType = [
align: 'left',
width: 200,
},
{
title: t('views.system.user.userType'),
dataIndex: 'userType',
key: 'userType',
align: 'left',
width: 200,
},
{
title: t('views.system.user.loginIp'),
dataIndex: 'loginIp',
@@ -792,13 +805,17 @@ onMounted(() => {
// 初始字典数据
Promise.allSettled([
getDict('sys_normal_disable'),
getDict('sys_user_type'),
getDict('sys_user_sex'),
]).then(resArr => {
if (resArr[0].status === 'fulfilled') {
dict.sysNormalDisable = resArr[0].value;
}
if (resArr[1].status === 'fulfilled') {
dict.sysUserSex = resArr[1].value;
dict.sysUserType = resArr[1].value;
}
if (resArr[2].status === 'fulfilled') {
dict.sysUserSex = resArr[2].value;
}
});
// 获取列表数据
@@ -881,7 +898,7 @@ onMounted(() => {
></a-input>
</a-form-item>
</a-col>
<a-col :lg="4" :md="12" :xs="24">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item
:label="t('views.system.user.status')"
name="statusFlag"
@@ -895,6 +912,20 @@ onMounted(() => {
</a-select>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item
:label="t('views.system.user.userType')"
name="userType"
>
<a-select
v-model:value="queryParams.userType"
allow-clear
:options="dict.sysUserType"
:placeholder="t('common.selectPlease')"
>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="8" :md="12" :xs="24">
<a-form-item
:label="t('views.system.user.loginTime')"
@@ -1022,6 +1053,15 @@ onMounted(() => {
{{ r.roleName }}
</a-tag>
</template>
<template v-if="column.key === 'userType'">
<DictTag :options="dict.sysUserType" :value="record.userType" />
<a-tag
:bordered="false"
v-if="record.userSource != '#'"
>
{{ record.userSource }}
</a-tag>
</template>
<template v-if="column.key === 'deptId'">
{{ record.dept?.deptName }}
</template>