完善监测点优化前端请求和回报状态
This commit is contained in:
@@ -11,15 +11,22 @@ import {
|
|||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { PlayArrow as PlayArrowIcon } from "@mui/icons-material";
|
import { PlayArrow as PlayArrowIcon } from "@mui/icons-material";
|
||||||
import { useNotification } from "@refinedev/core";
|
import { useNotification } from "@refinedev/core";
|
||||||
|
import { useGetIdentity } from "@refinedev/core";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { config, NETWORK_NAME } from "@/config/config";
|
import { config, NETWORK_NAME } from "@/config/config";
|
||||||
|
|
||||||
|
type IUser = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
};
|
||||||
|
|
||||||
const OptimizationParameters: React.FC = () => {
|
const OptimizationParameters: React.FC = () => {
|
||||||
const { open } = useNotification();
|
const { open } = useNotification();
|
||||||
|
const { data: user } = useGetIdentity<IUser>();
|
||||||
|
|
||||||
// 表单状态
|
// 表单状态
|
||||||
const [sensorType, setSensorType] = useState<string>("压力");
|
const [sensorType, setSensorType] = useState<string>("pressure");
|
||||||
const [method, setMethod] = useState<string>("聚类分析");
|
const [method, setMethod] = useState<string>("kmeans");
|
||||||
const [sensorCount, setSensorCount] = useState<number>(5);
|
const [sensorCount, setSensorCount] = useState<number>(5);
|
||||||
const [minDiameter, setMinDiameter] = useState<number>(5);
|
const [minDiameter, setMinDiameter] = useState<number>(5);
|
||||||
const [schemeName, setSchemeName] = useState<string>(
|
const [schemeName, setSchemeName] = useState<string>(
|
||||||
@@ -30,16 +37,23 @@ const OptimizationParameters: React.FC = () => {
|
|||||||
|
|
||||||
// 传感器类型选项
|
// 传感器类型选项
|
||||||
const sensorTypeOptions = [
|
const sensorTypeOptions = [
|
||||||
{ value: "压力", label: "压力" },
|
{ value: "pressure", label: "压力" },
|
||||||
{ value: "流量", label: "流量" },
|
{ value: "flow", label: "流量" },
|
||||||
];
|
];
|
||||||
|
|
||||||
// 方法选项
|
// 方法选项
|
||||||
const methodOptions = [
|
const methodOptions = [
|
||||||
{ value: "聚类分析", label: "聚类分析" },
|
{ value: "kmeans", label: "聚类分析" },
|
||||||
{ value: "灵敏度分析", label: "灵敏度分析" },
|
{ value: "sensitivity", label: "灵敏度分析" },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// 获取传感器类型的中文标签
|
||||||
|
const getSensorTypeLabel = (value: string) => {
|
||||||
|
return (
|
||||||
|
sensorTypeOptions.find((option) => option.value === value)?.label || value
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
// 创建方案
|
// 创建方案
|
||||||
const handleCreateScheme = async () => {
|
const handleCreateScheme = async () => {
|
||||||
// 验证输入
|
// 验证输入
|
||||||
@@ -69,28 +83,40 @@ const OptimizationParameters: React.FC = () => {
|
|||||||
|
|
||||||
setAnalyzing(true);
|
setAnalyzing(true);
|
||||||
|
|
||||||
try {
|
if (!user || !user.name) {
|
||||||
// 构建请求参数
|
open?.({
|
||||||
const requestData = {
|
type: "error",
|
||||||
network: network,
|
message: "用户信息无效",
|
||||||
scheme_name: schemeName,
|
});
|
||||||
sensor_type: sensorType,
|
return;
|
||||||
method: method,
|
}
|
||||||
sensor_count: sensorCount,
|
|
||||||
min_diameter: minDiameter,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
try {
|
||||||
// 发送优化请求
|
// 发送优化请求
|
||||||
const response = await axios.post(
|
const response = await axios.post(
|
||||||
`${config.backendUrl}/monitoring-optimization/create`,
|
`${config.backendUrl}/sensorplacementscheme/create`,
|
||||||
requestData
|
null,
|
||||||
|
{
|
||||||
|
params: {
|
||||||
|
network: network,
|
||||||
|
scheme_name: schemeName,
|
||||||
|
sensor_type: sensorType,
|
||||||
|
method: method,
|
||||||
|
sensor_count: sensorCount,
|
||||||
|
min_diameter: minDiameter,
|
||||||
|
user_name: user.name,
|
||||||
|
},
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.data && response.data.success) {
|
console.log("响应数据:", response.data); // 添加日志以便调试
|
||||||
|
|
||||||
|
// 兼容后端返回字符串 "success" 或对象 { success: true }
|
||||||
|
if (response.data.success === true || response.data === "success") {
|
||||||
open?.({
|
open?.({
|
||||||
type: "success",
|
type: "success",
|
||||||
message: "方案创建成功",
|
message: "方案创建成功",
|
||||||
description: `方案 "${schemeName}" 已提交优化分析`,
|
description: `方案 "${schemeName}" 已完成优化分析`,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 重置方案名称
|
// 重置方案名称
|
||||||
@@ -193,7 +219,9 @@ const OptimizationParameters: React.FC = () => {
|
|||||||
type="number"
|
type="number"
|
||||||
value={sensorCount}
|
value={sensorCount}
|
||||||
onChange={(e) => setSensorCount(parseInt(e.target.value) || 0)}
|
onChange={(e) => setSensorCount(parseInt(e.target.value) || 0)}
|
||||||
inputProps={{ min: 1 }}
|
slotProps={{
|
||||||
|
htmlInput: { min: 1 },
|
||||||
|
}}
|
||||||
sx={{
|
sx={{
|
||||||
"& .MuiOutlinedInput-root": {
|
"& .MuiOutlinedInput-root": {
|
||||||
"&:hover fieldset": {
|
"&:hover fieldset": {
|
||||||
@@ -213,7 +241,7 @@ const OptimizationParameters: React.FC = () => {
|
|||||||
variant="subtitle2"
|
variant="subtitle2"
|
||||||
className="mb-2 font-semibold text-gray-700"
|
className="mb-2 font-semibold text-gray-700"
|
||||||
>
|
>
|
||||||
{sensorType}监测点安装最小管径(可选)
|
{getSensorTypeLabel(sensorType)}监测点安装最小管径(可选)
|
||||||
</Typography>
|
</Typography>
|
||||||
<TextField
|
<TextField
|
||||||
fullWidth
|
fullWidth
|
||||||
@@ -221,7 +249,9 @@ const OptimizationParameters: React.FC = () => {
|
|||||||
type="number"
|
type="number"
|
||||||
value={minDiameter}
|
value={minDiameter}
|
||||||
onChange={(e) => setMinDiameter(parseInt(e.target.value) || 0)}
|
onChange={(e) => setMinDiameter(parseInt(e.target.value) || 0)}
|
||||||
inputProps={{ min: 0 }}
|
slotProps={{
|
||||||
|
htmlInput: { min: 0 },
|
||||||
|
}}
|
||||||
sx={{
|
sx={{
|
||||||
"& .MuiOutlinedInput-root": {
|
"& .MuiOutlinedInput-root": {
|
||||||
"&:hover fieldset": {
|
"&:hover fieldset": {
|
||||||
|
|||||||
Reference in New Issue
Block a user