From 6a05567014939c6ff847a4665a8c3019f24b450d Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 24 二月 2025 15:50:06 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/page/user/UserCreate.jsx | 119 +++++++++++++++++++++++++++++------------------------------
1 files changed, 58 insertions(+), 61 deletions(-)
diff --git a/zy-acs-flow/src/page/user/UserCreate.jsx b/zy-acs-flow/src/page/user/UserCreate.jsx
index 27ae515..5a129ed 100644
--- a/zy-acs-flow/src/page/user/UserCreate.jsx
+++ b/zy-acs-flow/src/page/user/UserCreate.jsx
@@ -13,10 +13,11 @@
AutocompleteInput,
Toolbar,
required,
- useDataProvider,
+ PasswordInput,
useNotify,
Form,
useCreateController,
+ email,
} from 'react-admin';
import {
Dialog,
@@ -30,6 +31,8 @@
import DialogCloseButton from "../components/DialogCloseButton";
import StatusSelectInput from "../components/StatusSelectInput";
import MemoInput from "../components/MemoInput";
+import TreeSelectInput from "../components/TreeSelectInput";
+import RolesSelect from './RolesSelect'
const UserCreate = (props) => {
const { open, setOpen } = props;
@@ -48,8 +51,8 @@
notify('common.response.success');
};
- const handleError = async (data) => {
- notify('common.response.fail');
+ const handleError = async (error) => {
+ notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
};
return (
@@ -69,7 +72,29 @@
disableRestoreFocus
maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
>
- <Form>
+ <Form validate={values => {
+ const errors = {};
+ if (!values.username) {
+ errors.username = 'ra.validation.required';
+ }
+ if (!values.nickname) {
+ errors.nickname = 'ra.validation.required';
+ }
+ if (!values.roleIds) {
+ errors.roleIds = 'ra.validation.required';
+ }
+ if (!values.email) {
+ } else {
+ const error = email()(values.email);
+ if (error) {
+ errors.email = error;
+ }
+ }
+ if (values.password && values.password !== values.confirmPassword) {
+ errors.confirmPassword = 'validate.pwdMisMatch';
+ }
+ return errors;
+ }}>
<DialogTitle id="form-dialog-title" sx={{
position: 'sticky',
top: 0,
@@ -93,13 +118,6 @@
validate={required()}
/>
</Grid>
- {/* <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.user.password"
- source="password"
- parse={v => v}
- />
- </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.user.nickname"
@@ -107,18 +125,29 @@
parse={v => v}
/>
</Grid>
- {/* <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.user.avatar"
- source="avatar"
- parse={v => v}
- />
- </Grid> */}
<Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.user.code"
- source="code"
- parse={v => v}
+ <TreeSelectInput
+ resource="dept"
+ label="table.field.user.deptId"
+ source="deptId"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <RolesSelect
+ label="table.field.user.role"
+ source="roleIds"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <PasswordInput
+ label="table.field.user.password"
+ source="password"
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <PasswordInput
+ label="table.field.user.confirmPwd"
+ source="confirmPassword"
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -130,6 +159,13 @@
{ id: 1, name: '鐢�' },
{ id: 2, name: '濂�' },
]}
+ />
+ </Grid>
+ <Grid item xs={6} display="flex" gap={1}>
+ <TextInput
+ label="table.field.user.code"
+ source="code"
+ parse={v => v}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -146,27 +182,6 @@
parse={v => v}
/>
</Grid>
- {/* <Grid item xs={6} display="flex" gap={1}>
- <SelectInput
- label="table.field.user.emailVerified"
- source="emailVerified"
- choices={[
- { id: 0, name: '鍚�' },
- { id: 1, name: '鏄�' },
- ]}
- />
- </Grid> */}
- <Grid item xs={6} display="flex" gap={1}>
- <ReferenceInput
- source="deptId"
- reference="dept"
- >
- <AutocompleteInput
- label="table.field.user.deptId"
- optionText="name"
- />
- </ReferenceInput>
- </Grid>
<Grid item xs={6} display="flex" gap={1}>
<TextInput
label="table.field.user.realName"
@@ -180,24 +195,6 @@
source="idCard"
parse={v => v}
/>
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.user.birthday"
- source="birthday"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.user.introduction"
- source="introduction"
- parse={v => v}
- />
- </Grid>
-
- <Grid item xs={6} display="flex" gap={1}>
- <StatusSelectInput />
</Grid>
<Grid item xs={12} display="flex" gap={1}>
<Stack direction="column" spacing={1} width={'100%'}>
--
Gitblit v1.9.1