From 3b0bd560013c553f030f95fa43ae6e1dc0d46a66 Mon Sep 17 00:00:00 2001 From: siujamo Date: Fri, 26 Dec 2025 17:49:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=89=93=E5=BC=80=E5=90=8E=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/add-role-dialogue/index.tsx | 2 + src/components/edit-role-dialogue/index.tsx | 3 +- src/components/role-display-form/index.tsx | 24 +++++++++-- src/page/role/index.tsx | 46 ++++++++++++++++++++- src/types/form/index.ts | 2 + 5 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/components/add-role-dialogue/index.tsx b/src/components/add-role-dialogue/index.tsx index 2e3fc2c..dfa3d13 100644 --- a/src/components/add-role-dialogue/index.tsx +++ b/src/components/add-role-dialogue/index.tsx @@ -10,6 +10,7 @@ export default function AddRoleDialogue({ form }: AddRoleDialogueProps) { ) } diff --git a/src/components/edit-role-dialogue/index.tsx b/src/components/edit-role-dialogue/index.tsx index e4169e9..e1db88b 100644 --- a/src/components/edit-role-dialogue/index.tsx +++ b/src/components/edit-role-dialogue/index.tsx @@ -1,5 +1,6 @@ import type { FormInstance } from "antd" import RoleDisplayForm, { type RoleFormValues } from "@/components/role-display-form" +import type { Role } from "@/types/entity" export interface EditRoleDialogueProps { form: FormInstance @@ -7,5 +8,5 @@ export interface EditRoleDialogueProps { } export default function EditRoleDialogue({ form, initialValues }: EditRoleDialogueProps) { - return + return } diff --git a/src/components/role-display-form/index.tsx b/src/components/role-display-form/index.tsx index 9b9b771..498acb5 100644 --- a/src/components/role-display-form/index.tsx +++ b/src/components/role-display-form/index.tsx @@ -1,10 +1,13 @@ import { App, Form, type FormInstance, Input, InputNumber, Select, Switch } from "antd" import { type Status, StatusOptions } from "@/types/constant" +import type { FormMode } from "@/types/form" +import { useEffect, useMemo } from "react" /** * Role form values. */ export interface RoleFormValues { + id: number | string | null name: string code: string sort: number @@ -18,12 +21,22 @@ export interface RoleFormValues { */ export interface RoleDisplayFormProps { initialValues?: RoleFormValues - isEditing?: boolean form: FormInstance - isAdding?: boolean + mode: FormMode } -export default function RoleDisplayForm({ initialValues, form }: RoleDisplayFormProps) { +export default function RoleDisplayForm({ initialValues, form, mode }: RoleDisplayFormProps) { + const isEditing = useMemo(() => mode == "edit", [mode]) + + // Initialise form values + useEffect(() => { + if (initialValues) { + form.setFieldsValue(initialValues) + } else { + form.resetFields() + } + }, [initialValues, form]) + return ( form={form} @@ -31,6 +44,9 @@ export default function RoleDisplayForm({ initialValues, form }: RoleDisplayForm layout="vertical" labelAlign="right" validateTrigger="onBlur"> + label="角色编号" hidden={!isEditing} name="id"> + + label="角色名称" name="name" @@ -56,7 +72,7 @@ export default function RoleDisplayForm({ initialValues, form }: RoleDisplayForm label="是否为默认角色" name="defaultValue"> - + label="角色状态" name="status"> options={StatusOptions} /> diff --git a/src/page/role/index.tsx b/src/page/role/index.tsx index e3c5b76..e568369 100644 --- a/src/page/role/index.tsx +++ b/src/page/role/index.tsx @@ -17,6 +17,8 @@ import type { QueryRoleForm } from "@/types/form" import type { Status } from "@/types/constant" import AddRoleDialogue from "@/components/add-role-dialogue" import type { RoleFormValues } from "@/components/role-display-form" +import EditRoleDialogue from "@/components/edit-role-dialogue" +import { addRole } from "@/api/role" export default function RolePage() { const { message, modal } = App.useApp() @@ -94,6 +96,48 @@ export default function RolePage() { console.error("用户取消添加角色") } ) + .finally(() => { + addRoleForm.resetFields() + }) + } + + const onEditRoleFinish = async () => { + try { + const values = await editRoleForm.validateFields() + console.log(values) + // await RoleApi.addRole(values) + void message.success(`角色 ${values.name} 修改成功`) + return true + } catch (error: unknown) { + if (error instanceof Error && error.message.includes("Validation Failed")) { + return false + } else if (axios.isAxiosError(error)) { + void message.error(error.response?.data.message ?? "创建失败,请稍后再试") + } + return false + } + } + + const handleEditRole = (role: Role) => { + modal + .confirm({ + title: "修改用户", + content: , + width: 600, + onOk: onEditRoleFinish, + }) + .then( + () => { + const formValues = queryForm.getFieldsValue() + queryRoles(pageNum, pageSize, formValues) + }, + () => { + console.error("用户取消添加角色") + } + ) + .finally(() => { + editRoleForm.resetFields() + }) } useEffect(() => { @@ -194,7 +238,7 @@ export default function RolePage() { render: (role: Role) => ( <> -