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() {
+
diff --git a/apps/web-antd/src/views/user/modules/form.vue b/apps/web-antd/src/views/user/modules/form.vue
index b4b4ed8..49d6ea8 100644
--- a/apps/web-antd/src/views/user/modules/form.vue
+++ b/apps/web-antd/src/views/user/modules/form.vue
@@ -21,7 +21,7 @@ import { useFormSchema } from '../data';
const emits = defineEmits(['success']);
const formData = ref();
-
+const id = ref();
const [Form, formApi] = useVbenForm({
schema: useFormSchema(),
showDefaultActions: false,
@@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
const permissions = ref([]);
const loadingPermissions = ref(false);
-const id = ref();
const [Drawer, drawerApi] = useVbenDrawer({
async onConfirm() {
const { valid } = await formApi.validate();
diff --git a/apps/web-antd/src/views/user/modules/reset-form.vue b/apps/web-antd/src/views/user/modules/reset-form.vue
new file mode 100644
index 0000000..454d1ad
--- /dev/null
+++ b/apps/web-antd/src/views/user/modules/reset-form.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+