From d9383868d6c9c57cd578dd28d481f8f6f3867bf5 Mon Sep 17 00:00:00 2001 From: Kven <2955163637@qq.com> Date: Fri, 30 May 2025 12:26:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(@vben/common-ui):=20=E9=87=8D=E7=BD=AE?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=E5=8A=9F=E8=83=BD=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7=E7=9B=B8=E5=85=B3=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/api/core/user.ts | 17 ++++++- .../src/views/person/modules/basic-form.vue | 4 +- apps/web-antd/src/views/user/data.ts | 6 ++- apps/web-antd/src/views/user/list.vue | 19 ++++++- apps/web-antd/src/views/user/modules/form.vue | 3 +- .../src/views/user/modules/reset-form.vue | 51 +++++++++++++++++++ 6 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 apps/web-antd/src/views/user/modules/reset-form.vue diff --git a/apps/web-antd/src/api/core/user.ts b/apps/web-antd/src/api/core/user.ts index 8e4842c..333f6d4 100644 --- a/apps/web-antd/src/api/core/user.ts +++ b/apps/web-antd/src/api/core/user.ts @@ -40,6 +40,10 @@ export namespace UserApi { confirmPassword: string; } + export interface PasswordModel { + password: string; + } + export interface RoleCreateRecord { name: string; dataScope: string; @@ -95,7 +99,7 @@ export namespace UserApi { } export interface UserUpdateRecord { - username?: string; + name?: string; email?: string; phone?: string; address?: string; @@ -115,6 +119,17 @@ export function resetPassword(data: UserApi.PasswordReSetModel) { return requestClient.patch('/rest/user/self/update-password', data); } +// 重置密码 +export function resetPasswordApi(id: any, data: UserApi.PasswordModel) { + return requestClient.patch( + `/rest/user/${id}/update-password`, + {}, + { + params: data, + }, + ); +} + // 注册用户 export function register(data: UserApi.CreateRecord) { return requestClient.post('/rest/user/register', data); diff --git a/apps/web-antd/src/views/person/modules/basic-form.vue b/apps/web-antd/src/views/person/modules/basic-form.vue index 1b19829..b9d784d 100644 --- a/apps/web-antd/src/views/person/modules/basic-form.vue +++ b/apps/web-antd/src/views/person/modules/basic-form.vue @@ -22,7 +22,7 @@ const { userInfo } = toRefs(props); // 表单提交方法 const handleSubmit = async () => { const res = await selfUpdate({ - username: userInfo.value.username, + name: userInfo.value.name, phone: userInfo.value.phone, email: userInfo.value.email, address: userInfo.value.address, @@ -51,7 +51,7 @@ const handleSubmit = async () => { style="max-width: 500px; margin: 0 auto" > - + diff --git a/apps/web-antd/src/views/user/data.ts b/apps/web-antd/src/views/user/data.ts index 9b99429..64743df 100644 --- a/apps/web-antd/src/views/user/data.ts +++ b/apps/web-antd/src/views/user/data.ts @@ -188,6 +188,10 @@ export function useColumns( onClick: onActionClick, }, options: [ + { + code: 'resetPassword', + text: '重置密码', + }, { code: 'edit', text: '修改', @@ -202,7 +206,7 @@ export function useColumns( field: 'operation', fixed: 'right', title: '操作', - width: 130, + width: 200, }, ]; } diff --git a/apps/web-antd/src/views/user/list.vue b/apps/web-antd/src/views/user/list.vue index 2d254f4..b8a6c65 100644 --- a/apps/web-antd/src/views/user/list.vue +++ b/apps/web-antd/src/views/user/list.vue @@ -7,10 +7,10 @@ import type { } from '#/adapter/vxe-table'; import type { UserApi } from '#/api'; -import { Page, useVbenDrawer } from '@vben/common-ui'; +import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { Plus } from '@vben/icons'; -import { Button, message, Modal } from 'ant-design-vue'; +import { Button, message } from 'ant-design-vue'; import dayjs from 'dayjs'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; @@ -19,12 +19,18 @@ import { $t } from '#/locales'; import { useColumns, useGridFormSchema } from './data'; import Form from './modules/form.vue'; +import ResetModal from './modules/reset-form.vue'; const [FormDrawer, formDrawerApi] = useVbenDrawer({ connectedComponent: Form, destroyOnClose: true, }); +const [ResetPasswordModal, modalApi] = useVbenModal({ + connectedComponent: ResetModal, + destroyOnClose: true, +}); + const [Grid, gridApi] = useVbenVxeGrid({ formOptions: { fieldMappingTime: [['createTime', ['startTime', 'endTime']]], @@ -73,6 +79,10 @@ function onActionClick(e: OnActionClickParams) { onEdit(e.row); break; } + case 'resetPassword': { + onResetPassword(e.row); + break; + } } } @@ -123,6 +133,10 @@ function onEdit(row: UserApi.User) { formDrawerApi.setData(row).open(); } +function onResetPassword(row: UserApi.User) { + modalApi.setData(row).open(); +} + function onDelete(row: UserApi.User) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.name]), @@ -152,6 +166,7 @@ function onCreate() {