From 7518f9366927b0458a9b6392e907aaee0efa07a6 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 23 一月 2026 15:46:23 +0800
Subject: [PATCH] lsh#

---
 rsf-admin/src/page/components/BasStationSelect.jsx                                           |   76 ++++++++++++++++++++++++++++++++++++++
 rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx                                   |   10 +++--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java |    8 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java               |    2 
 4 files changed, 91 insertions(+), 5 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
index d1367d0..bf5c990 100644
--- a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteEdit.jsx
@@ -30,6 +30,8 @@
 import StatusSelectInput from "../../components/StatusSelectInput";
 import DictionarySelect from "../../components/DictionarySelect";
 import WarehouseSelect from "../../components/WarehouseSelect";
+import BasStationSelect from "../../components/BasStationSelect";
+import BasStation from "@/page/basicInfo/basStation/index.jsx";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
@@ -115,10 +117,10 @@
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.deviceSite.deviceCode"
-                                source="deviceCode"
-                                parse={v => v}
+                            <BasStationSelect
+                                label={translate("table.field.deviceSite.deviceCode")}
+                                name="deviceCode"
+                                validate={[required()]}
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
diff --git a/rsf-admin/src/page/components/BasStationSelect.jsx b/rsf-admin/src/page/components/BasStationSelect.jsx
new file mode 100644
index 0000000..757044c
--- /dev/null
+++ b/rsf-admin/src/page/components/BasStationSelect.jsx
@@ -0,0 +1,76 @@
+import { useState, useEffect } from 'react';
+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 BasStationSelect = (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('/basStation/page/v1', { current: 1, pageSize: 100 });
+        if (res?.data?.code === 200) {
+            setList(res.data.data.records.map((item) => {
+                return {
+                    id: item.id.toString(),
+                    name: item.stationName
+                };
+            }));
+        } else {
+            notify(res.data.msg);
+        }
+    };
+
+    const handleChange = (event) => {
+        const selectedValue = event.target.value;
+        field.onChange(selectedValue);
+    };
+
+    const validValue = list.some(item => item.id === field.value) ? field.value : '';
+
+    return (
+        <FormControl required fullWidth error={!!fieldState.error}>
+            <InputLabel id={`${name}-label`}>{label}</InputLabel>
+            <Select
+                labelId={`${name}-label`}
+                value={validValue}
+                variant="filled"
+                onChange={handleChange}
+                size='small'
+            >
+                {list.map((item) => (
+                    <MenuItem
+                        key={item.id}
+                        value={item.id}>
+                        {item.name}
+                    </MenuItem>
+                ))}
+            </Select>
+        </FormControl>
+    );
+};
+
+export default BasStationSelect;
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
index 933bcea..69be08c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -47,6 +47,14 @@
         return R.ok().add(page);
     }
 
+    @PreAuthorize("hasAuthority('manager:warehouseAreas:list')")
+    @PostMapping("/basStation/page/v1")
+    public R pagev22(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<BasStation, BaseParam> pageParam = new PageParam<>(baseParam, BasStation.class);
+        return R.ok().add(basStationService.page(pageParam, pageParam.buildWrapper(true)));
+    }
+
     @PreAuthorize("hasAuthority('manager:basStation:list')")
     @PostMapping("/basStation/list")
     public R list(@RequestBody Map<String, Object> map) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
index c5054c8..bd4d8dc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -84,7 +84,7 @@
     /**
      * 璁惧缂栧彿
      */
-    @ApiModelProperty(value= "璁惧缂栧彿")
+    @ApiModelProperty(value= "鎺ラ┏浣�")
     private String deviceCode;
 
     /**

--
Gitblit v1.9.1