From 2fb1e4fec9fd815c71291f65317c25c8f89de060 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 23 一月 2026 15:29:50 +0800
Subject: [PATCH] #

---
 rsf-admin/src/page/orders/config/orderItemColumns.jsx      |    1 +
 rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx |   19 +++++++++++--------
 rsf-admin/src/page/components/WarehouseSelect.jsx          |   30 +++++++++++++++++++++---------
 3 files changed, 33 insertions(+), 17 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
index d077e67..d1367d0 100644
--- a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
@@ -29,6 +29,7 @@
 import MemoInput from "../../components/MemoInput";
 import StatusSelectInput from "../../components/StatusSelectInput";
 import DictionarySelect from "../../components/DictionarySelect";
+import WarehouseSelect from "../../components/WarehouseSelect";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
@@ -69,13 +70,13 @@
                                 label={translate("table.field.deviceSite.type")}
                                 name="type"
                                 validate={[required()]}
-                                dictTypeCode="sys_task_type"                                
+                                dictTypeCode="sys_task_type"
                                 multiple
                                 perPage={REFERENCE_INPUT_PAGESIZE}
                                 pagination={true}
                                 sort={{ field: 'id', order: 'ASC' }}
                                 filter={{ active: true }}
-                            />                            
+                            />
                         </Stack>
                         <Stack direction='row' gap={2}>
                             <TextInput
@@ -128,15 +129,17 @@
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.deviceSite.areaIdStart"
-                                source="areaIdStart"
+                            <WarehouseSelect
+                                label={translate("table.field.deviceSite.areaIdStart")}
+                                name="areaIdStart"
+                                validate={[required()]}
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.deviceSite.areaIdEnd"
-                                source="areaIdEnd"
+                            <WarehouseSelect
+                                label={translate("table.field.deviceSite.areaIdEnd")}
+                                name="areaIdEnd"
+                                validate={[required()]}
                             />
                         </Stack>
 
diff --git a/rsf-admin/src/page/components/WarehouseSelect.jsx b/rsf-admin/src/page/components/WarehouseSelect.jsx
index 74f4653..18e5507 100644
--- a/rsf-admin/src/page/components/WarehouseSelect.jsx
+++ b/rsf-admin/src/page/components/WarehouseSelect.jsx
@@ -2,14 +2,29 @@
 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();
@@ -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 required 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}
diff --git a/rsf-admin/src/page/orders/config/orderItemColumns.jsx b/rsf-admin/src/page/orders/config/orderItemColumns.jsx
index aa939e1..3c1578f 100644
--- a/rsf-admin/src/page/orders/config/orderItemColumns.jsx
+++ b/rsf-admin/src/page/orders/config/orderItemColumns.jsx
@@ -58,6 +58,7 @@
             key={el.fields}
             source={`extendFields.[${el.fields}]`}
             label={el.fieldsAlise}
+            sortable={false}
         />
     ));
 };

--
Gitblit v1.9.1