diff --git a/apps/web-antd/src/views/system/user/index.vue b/apps/web-antd/src/views/system/user/index.vue index 3a82df07..7645ee67 100644 --- a/apps/web-antd/src/views/system/user/index.vue +++ b/apps/web-antd/src/views/system/user/index.vue @@ -10,8 +10,17 @@ import { type VbenFormProps, } from '@vben/common-ui'; import { $t } from '@vben/locales'; +import { getPopupContainer } from '@vben/utils'; -import { Avatar, Modal, Popconfirm, Space } from 'ant-design-vue'; +import { + Avatar, + Dropdown, + Menu, + MenuItem, + Modal, + Popconfirm, + Space, +} from 'ant-design-vue'; import dayjs from 'dayjs'; import { useVbenVxeGrid, type VxeGridProps } from '#/adapter'; @@ -28,6 +37,8 @@ import { columns, querySchema } from './data'; import DeptTree from './dept-tree.vue'; import userDrawer from './user-drawer.vue'; import userImportModal from './user-import-modal.vue'; +import userInfoModal from './user-info-modal.vue'; +import userResetPwdModal from './user-reset-pwd-modal.vue'; /** * 导入 @@ -100,6 +111,7 @@ const gridOptions: VxeGridProps = { rowConfig: { isHover: true, keyField: 'userId', + height: 48, }, round: true, align: 'center', @@ -152,95 +164,133 @@ function handleMultiDelete() { }, }); } + +const [UserInfoModal, userInfoModalApi] = useVbenModal({ + connectedComponent: userInfoModal, +}); +function handleUserInfo(row: Recordable) { + userInfoModalApi.setData({ userId: row.userId }); + userInfoModalApi.open(); +} + +const [UserResetPwdModal, userResetPwdModalApi] = useVbenModal({ + connectedComponent: userResetPwdModal, +}); + +function handleResetPwd(record: Recordable) { + userResetPwdModalApi.setData({ record }); + userResetPwdModalApi.open(); +} diff --git a/apps/web-antd/src/views/system/user/info.tsx b/apps/web-antd/src/views/system/user/info.tsx index 68009601..cd00bb81 100644 --- a/apps/web-antd/src/views/system/user/info.tsx +++ b/apps/web-antd/src/views/system/user/info.tsx @@ -5,10 +5,12 @@ import { DictEnum } from '@vben/constants'; import { Tag } from 'ant-design-vue'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; +import relativeTime from 'dayjs/plugin/relativeTime'; import { renderDict } from '#/utils/render'; dayjs.extend(duration); +dayjs.extend(relativeTime); function renderTags(list: string[]) { return ( @@ -100,7 +102,7 @@ export const descSchema: DescItem[] = [ // 默认en显示 dayjs.locale('zh-cn'); // 计算相差秒数 - const diffSeconds = dayjs(new Date()).diff(dayjs(value), 'second'); + const diffSeconds = dayjs().diff(dayjs(value), 'second'); /** * 转为时间显示(x月 x天) * https://dayjs.fenxianglu.cn/category/duration.html#%E4%BA%BA%E6%80%A7%E5%8C%96 diff --git a/apps/web-antd/src/views/system/user/user-info-modal.vue b/apps/web-antd/src/views/system/user/user-info-modal.vue index 63491e42..80a917e9 100644 --- a/apps/web-antd/src/views/system/user/user-info-modal.vue +++ b/apps/web-antd/src/views/system/user/user-info-modal.vue @@ -50,7 +50,7 @@ async function handleOpenChange(open: boolean) { diff --git a/apps/web-antd/src/views/system/user/user-reset-pwd-modal.vue b/apps/web-antd/src/views/system/user/user-reset-pwd-modal.vue index 37c1682a..4cf92e03 100644 --- a/apps/web-antd/src/views/system/user/user-reset-pwd-modal.vue +++ b/apps/web-antd/src/views/system/user/user-reset-pwd-modal.vue @@ -46,7 +46,7 @@ const [BasicForm, formApi] = useVbenForm({ rules: 'required', }, { - component: 'StrengthMeter', + component: 'InputPassword', componentProps: { placeholder: '请输入新的密码, 密码长度为5 - 20', }, @@ -58,6 +58,10 @@ const [BasicForm, formApi] = useVbenForm({ .max(20, { message: '密码长度为5 - 20' }), }, ], + showDefaultActions: false, + commonConfig: { + labelWidth: 80, + }, }); async function handleOpenChange(open: boolean) { @@ -94,8 +98,14 @@ async function handleCancel() {