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