From 33726c78666d2adffe9c2f36a391618f1c884515 Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 14 Jun 2025 11:20:21 +0800 Subject: [PATCH 01/35] =?UTF-8?q?feat(vben5):=20=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 用户Dto增加 `accessFailedCount` 字段 - 增加用户详情标签页 - 用户列表增加邮件验证标签 - 用户列表增加手机号验证标签 --- .../src/components/users/UserModal.vue | 42 ++++++++++++++++--- .../src/components/users/UserTable.vue | 35 +++++++++++++++- .../packages/@abp/identity/src/types/users.ts | 2 + 3 files changed, 71 insertions(+), 8 deletions(-) diff --git a/apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue b/apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue index 6418bebd8..ff50bc72a 100644 --- a/apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue +++ b/apps/vben5/packages/@abp/identity/src/components/users/UserModal.vue @@ -11,9 +11,12 @@ import { useAccess } from '@vben/access'; import { useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { useSettings } from '@abp/core'; +import { formatToDateTime, useSettings } from '@abp/core'; import { Checkbox, + Descriptions, + DescriptionsItem, + Empty, Form, Input, InputPassword, @@ -263,10 +266,7 @@ async function onLoadOuChildren(node: EventDataNode) { > - + {{ $t('AbpIdentity.DisplayName:LockoutEnabled') }} @@ -285,7 +285,7 @@ async function onLoadOuChildren(node: EventDataNode) { width: '47%', height: '338px', }" - :render="(item) => item.title" + :render="(item: any) => item.title" :titles="[ $t('AbpOpenIddict.Assigned'), $t('AbpOpenIddict.Available'), @@ -300,6 +300,7 @@ async function onLoadOuChildren(node: EventDataNode) { :tab="$t('AbpIdentity.OrganizationUnits')" > + + + + + + + {{ formatToDateTime(formModel.creationTime) }} + + + {{ + formatToDateTime(formModel.lastModificationTime) + }} + + + {{ + formatToDateTime(formModel.lastPasswordChangeTime) + }} + + + {{ formModel.accessFailedCount }} + + + {{ formatToDateTime(formModel.lockoutEnd) }} + + diff --git a/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue b/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue index caa56dcb2..7d68dcf17 100644 --- a/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/users/UserTable.vue @@ -26,7 +26,7 @@ import { PlusOutlined, UnlockOutlined, } from '@ant-design/icons-vue'; -import { Button, Dropdown, Menu, message, Modal } from 'ant-design-vue'; +import { Button, Dropdown, Menu, message, Modal, Tag } from 'ant-design-vue'; import { useUsersApi } from '../../api/useUsersApi'; import { @@ -104,13 +104,20 @@ const gridOptions: VxeGridProps = { title: $t('AbpIdentity.DisplayName:UserName'), }, { + align: 'left', field: 'email', minWidth: '120px', + slots: { default: 'email' }, title: $t('AbpIdentity.DisplayName:Email'), }, { field: 'surname', title: $t('AbpIdentity.DisplayName:Surname') }, { field: 'name', title: $t('AbpIdentity.DisplayName:Name') }, - { field: 'phoneNumber', title: $t('AbpIdentity.DisplayName:PhoneNumber') }, + { + align: 'left', + field: 'phoneNumber', + slots: { default: 'phoneNumber' }, + title: $t('AbpIdentity.DisplayName:PhoneNumber'), + }, { field: 'lockoutEnd', formatter: ({ cellValue }) => { @@ -295,6 +302,30 @@ const handleMenuClick = async (row: IdentityUserDto, info: MenuInfo) => { + +