From 36e6c98d9e34fd8e90ae803e7de2eef0a4d0741b Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 18 二月 2025 16:45:57 +0800
Subject: [PATCH] #新增 1. 添加仓库信息 2. 添加库区信息表

---
 rsf-admin/src/page/login/Login.jsx |  121 ++++++++++++++++++++--------------------
 1 files changed, 61 insertions(+), 60 deletions(-)

diff --git a/rsf-admin/src/page/login/Login.jsx b/rsf-admin/src/page/login/Login.jsx
index c4e4825..a532631 100644
--- a/rsf-admin/src/page/login/Login.jsx
+++ b/rsf-admin/src/page/login/Login.jsx
@@ -16,7 +16,7 @@
     useLogin,
     useNotify,
 } from 'react-admin';
-import { useForm, Controller } from 'react-hook-form';
+import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
 import ProviderChoices from "./ProviderChoices";
 import Visibility from '@mui/icons-material/Visibility';
 import VisibilityOff from '@mui/icons-material/VisibilityOff';
@@ -26,9 +26,9 @@
     const notify = useNotify();
     const login = useLogin();
     const location = useLocation();
-    const { tenantList } = props;
+    const { systemInfo: { mode }, tenantList } = props;
 
-    const { control, watch, handleSubmit, setValue } = useForm();
+    const { control, handleSubmit, watch, setValue, getValues, setError, clearErrors } = useForm();
 
     const [loading, setLoading] = useState(false);
     const [showPassword, setShowPassword] = useState(false);
@@ -53,26 +53,24 @@
         login(
             data,
             location.state ? (location.state).nextPathname : '/'
-        ).catch((error) => {
+        ).catch((res) => {
             setLoading(false);
-            notify(
-                typeof error === 'string'
-                    ? error
-                    : typeof error === 'undefined' || !error.message
-                        ? 'ra.auth.sign_in_error'
-                        : error.message,
-                {
-                    type: 'error',
-                    messageArgs: {
-                        _:
-                            typeof error === 'string'
-                                ? error
-                                : error && error.message
-                                    ? error.message
-                                    : undefined,
-                    },
-                }
-            );
+            const { code, msg, data } = res;
+            if (code === 10003) {
+                setError('username', {
+                    message: msg
+                })
+            } else if (code === 10004) {
+                setError('username', {
+                    message: msg
+                })
+            } else if (code === 10001) {
+                setError('password', {
+                    message: msg
+                })
+            } else {
+                notify(msg, { type: 'error', messageArgs: { _: msg } });
+            }
         });
     };
 
@@ -85,49 +83,53 @@
                 component="form" onSubmit={handleSubmit(onSubmit)} noValidate
             >
                 <Stack spacing={2}>
-                    <Controller
-                        name="tenantId"
-                        control={control}
-                        rules={{ required: true }}
-                        defaultValue={tenantList.length > 0 ? tenantList[0].id : ''}
-                        render={({ field: { onChange, value, ref } }) => {
-                            const selectedTenant = tenantList.find(tenant => tenant.id === value) || null;
-                            return (
-                                <Autocomplete
-                                    options={tenantList}
-                                    getOptionLabel={(option) => option.name}
-                                    value={selectedTenant}
-                                    onChange={(_, newValue) => {
-                                        const newTenantId = newValue ? newValue.id : '';
-                                        onChange(newTenantId);
-                                        localStorage.setItem('remember_tenantId', newTenantId);
-                                    }}
-                                    renderInput={(params) => (
-                                        <TextField
-                                            {...params}
-                                            label={translate("page.login.tenant")}
-                                            variant="standard"
-                                            inputRef={ref}
-                                        />
-                                    )}
-                                />
-                            );
-                        }}
-                    />
+                    {mode === 'OFFLINE' && (
+                        <Controller
+                            name="tenantId"
+                            control={control}
+                            rules={{ required: true }}
+                            defaultValue={tenantList.length > 0 ? tenantList[0].id : ''}
+                            render={({ field: { onChange, value, ref } }) => {
+                                const selectedTenant = tenantList.find(tenant => tenant.id === value) || null;
+                                return (
+                                    <Autocomplete
+                                        options={tenantList}
+                                        getOptionLabel={(option) => option.name}
+                                        value={selectedTenant}
+                                        onChange={(_, newValue) => {
+                                            const newTenantId = newValue ? newValue.id : '';
+                                            onChange(newTenantId);
+                                            localStorage.setItem('remember_tenantId', newTenantId);
+                                        }}
+                                        renderInput={(params) => (
+                                            <TextField
+                                                {...params}
+                                                label={translate("page.login.tenant")}
+                                                variant="standard"
+                                                inputRef={ref}
+                                            />
+                                        )}
+                                    />
+                                );
+                            }}
+                        />
+                    )}
 
                     <Controller
                         name="username"
                         control={control}
                         defaultValue=""
                         rules={{ required: true }}
-                        render={({ field }) => (
+                        render={({ field, fieldState: { error } }) => (
                             <TextField
                                 {...field}
-                                label={translate('ra.auth.username')}
+                                label={translate("page.login.username")}
                                 variant="standard"
                                 disabled={loading}
                                 autoFocus
                                 autoComplete="off"
+                                error={!!error}
+                                helperText={error?.message || ""}
                             />
                         )}
                     />
@@ -137,14 +139,16 @@
                         control={control}
                         defaultValue=""
                         rules={{ required: true }}
-                        render={({ field }) => (
+                        render={({ field, fieldState: { error } }) => (
                             <TextField
                                 {...field}
-                                label={translate('ra.auth.password')}
+                                label={translate("page.login.password")}
                                 type={showPassword ? 'text' : 'password'}
                                 variant="standard"
                                 disabled={loading}
                                 autoComplete="off"
+                                error={!!error}
+                                helperText={error?.message || ""}
                                 InputProps={{
                                     endAdornment: (
                                         <InputAdornment position="end">
@@ -163,15 +167,12 @@
                         )}
                     />
 
-                    <Box mt={10}></Box>
+                    <Box />
 
                     <Button
                         type="submit"
                         variant="contained"
-                        disabled={loading || !(tenantId && username && password)}
-                        sx={{
-                            backgroundColor: "#3D4BA7"
-                        }}
+                        disabled={loading || !((mode === 'OFFLINE' ? tenantId : true) && username && password)}
                     >
                         {loading && <CircularProgress size={25} thickness={2} />}
                         {translate('page.login.button.login')}

--
Gitblit v1.9.1