From e0921e578658cc5181bcb9ff76f61ba47e6f0d76 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期六, 24 一月 2026 08:25:49 +0800
Subject: [PATCH] lsh#

---
 rsf-admin/src/page/components/WarehouseSelect.jsx |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/rsf-admin/src/page/components/WarehouseSelect.jsx b/rsf-admin/src/page/components/WarehouseSelect.jsx
index 33ead33..18e5507 100644
--- a/rsf-admin/src/page/components/WarehouseSelect.jsx
+++ b/rsf-admin/src/page/components/WarehouseSelect.jsx
@@ -2,21 +2,36 @@
 import {
     useTranslate, useNotify, required
 } from 'react-admin';
+import { useController } from 'react-hook-form';
 import request from '@/utils/request';
 import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
 
 const WarehouseSelect = (props) => {
-    const { dictTypeCode, label, value, onChange, ...params } = props;
+    const { dictTypeCode, label, name, validate, ...params } = props;
     const translate = useTranslate();
     const notify = useNotify();
     const [list, setList] = useState([]);
+
+    // 浣跨敤 useController 涓� react-hook-form 闆嗘垚
+    const { field, fieldState } = useController({
+        name: name,
+        rules: validate ? {
+            validate: (value) => {
+                for (const rule of validate) {
+                    const result = rule(value);
+                    if (result) return result;
+                }
+                return true;
+            }
+        } : undefined
+    });
 
     useEffect(() => {
         http();
     }, [dictTypeCode]);
 
     const http = async () => {
-        const res = await request.post('/warehouseAreas/page', {current: 1, pageSize: 100});
+        const res = await request.post('/warehouseAreas/page', { current: 1, pageSize: 100 });
         if (res?.data?.code === 200) {
             setList(res.data.data.records.map((item) => {
                 return {
@@ -31,19 +46,16 @@
 
     const handleChange = (event) => {
         const selectedValue = event.target.value;
-        console.log(event);
-        if (onChange) {
-            onChange(event);
-        }
+        field.onChange(selectedValue);
     };
 
-    const validValue = list.some(item => item.id === value) ? value : '';
+    const validValue = list.some(item => item.id === field.value) ? field.value : '';
 
     return (
-        <FormControl fullWidth>
-            <InputLabel id="demo-select-small-label">{label}</InputLabel>
+        <FormControl required fullWidth error={!!fieldState.error}>
+            <InputLabel id={`${name}-label`}>{label}</InputLabel>
             <Select
-                labelId="demo-select-small-label"
+                labelId={`${name}-label`}
                 value={validValue}
                 variant="filled"
                 onChange={handleChange}

--
Gitblit v1.9.1