diff --git a/client/src/sections/wuyuanbiaoba/components/AdvancedSettings.jsx b/client/src/sections/wuyuanbiaoba/components/AdvancedSettings.jsx
new file mode 100644
index 0000000..4f4eabe
--- /dev/null
+++ b/client/src/sections/wuyuanbiaoba/components/AdvancedSettings.jsx
@@ -0,0 +1,493 @@
+import React, { useState } from "react";
+import {
+ Card,
+ Input,
+ Slider,
+ InputNumber,
+ Switch,
+ Select,
+ Row,
+ Col,
+ Button,
+ message,
+ Space,
+ Typography,
+} from "antd";
+import {
+ SettingOutlined,
+ SaveOutlined,
+ ReloadOutlined,
+ DatabaseOutlined,
+ ClockCircleOutlined,
+ BellOutlined,
+ FilterOutlined,
+ CloudUploadOutlined,
+} from "@ant-design/icons";
+
+const { Option } = Select;
+const { Title, Text } = Typography;
+
+const AdvancedSettings = ({ onLogout }) => {
+ const [deviceId, setDeviceId] = useState("");
+ const [fps, setFps] = useState(5);
+ const [enableOfflineAlert, setEnableOfflineAlert] = useState(false);
+ const [offlineThreshold, setOfflineThreshold] = useState(60);
+ const [enableFiltering, setEnableFiltering] = useState(true);
+ const [filterMethod, setFilterMethod] = useState("median");
+ const [windowSize, setWindowSize] = useState(5);
+ const [filterThreshold, setFilterThreshold] = useState(0.1);
+ const [flowThreshold, setFlowThreshold] = useState(10.0);
+ const [enableMqtt, setEnableMqtt] = useState(true);
+ const [brokerAddress, setBrokerAddress] = useState("");
+ const [mqttPort, setMqttPort] = useState("");
+ const [mqttTopic, setMqttTopic] = useState("");
+ const [mqttClientId, setMqttClientId] = useState("");
+ const [mqttUsername, setMqttUsername] = useState("");
+ const [mqttPassword, setMqttPassword] = useState("");
+
+ const handleSave = () => message.success("配置已保存");
+ const handleReset = () => {
+ setDeviceId("");
+ setFps(5);
+ setEnableOfflineAlert(false);
+ setOfflineThreshold(60);
+ setEnableFiltering(true);
+ setFilterMethod("median");
+ setWindowSize(5);
+ setFilterThreshold(0.1);
+ setFlowThreshold(10.0);
+ setEnableMqtt(true);
+ setBrokerAddress("");
+ setMqttPort("");
+ setMqttTopic("");
+ setMqttClientId("");
+ setMqttUsername("");
+ setMqttPassword("");
+ message.info("配置已重置");
+ };
+
+ return (
+
+
+
+
+
+
+
+ 高级参数配置
+
+
+ 针对下位机运行的参数配置,修改后请及时保存(慎用)
+
+
+
+
+
+ }
+ onClick={handleReset}
+ size="large"
+ style={{ height: 42, borderRadius: 8 }}
+ >
+ 重置/刷新
+
+ }
+ onClick={handleSave}
+ size="large"
+ style={{
+ height: 42,
+ borderRadius: 8,
+ background: "white",
+ color: "#667eea",
+ borderColor: "white",
+ }}
+ >
+ 保存更改
+
+
+
+
+
+
+
+
+
+
+ 基础设备信息
+
+ }
+
+ style={{
+ marginBottom: 12,
+ borderRadius: 12,
+ paddingLeft: 24,
+ paddingRight: 24,
+ }}
+ >
+
+ 设备编码
+
+ setDeviceId(e.target.value)}
+ placeholder="请输入设备编码"
+ size="large"
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+
+ 数据帧率 (FPS)
+
+ }
+
+ style={{
+ marginBottom: 12,
+ borderRadius: 12,
+ paddingLeft: 24,
+ paddingRight: 24,
+ }}
+ >
+
+ 数据帧率
+
+
+
+
+
+
+
+
+
+
+ 有效范围 1~30 Hz
+
+
+
+
+
+ 异常监控与报警
+
+ }
+
+ style={{
+ marginBottom: 12,
+ borderRadius: 12,
+ paddingLeft: 24,
+ paddingRight: 24,
+ }}
+ >
+
+
+
+ 启用离线超时告警
+
+
+ 超过此时长未接收到新数据则触发报警
+
+
+
+
+
+
+
+
+ 超时阈值
+
+
+
+
+
+
+
+
+ 数据滤波与异常记录
+
+ }
+
+ style={{
+ marginBottom: 12,
+ borderRadius: 12,
+ paddingLeft: 24,
+ paddingRight: 24,
+ }}
+ >
+
+
+
+ 滤波配置
+
+
+ 启用数据滤波算法
+
+
+
+
+
+
+
+
+
+
+ 滤波方法
+
+
+
+
+
+ 窗口大小
+
+
+
+
+
+ 滤波阈值
+
+
+
+
+
+ 波动阈值
+
+
+
+
+
+
+
+
+
+ 数据上报 (MQTT)
+
+
+
+ }
+
+ style={{
+ borderRadius: 12,
+ paddingLeft: 24,
+ paddingRight: 24,
+ }}
+ >
+
+
+
+ Broker Address
+
+ setBrokerAddress(e.target.value)}
+ placeholder="例如: 218.3.126.49"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+ Port
+
+ setMqttPort(e.target.value)}
+ placeholder="1883"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+ Topic
+
+ setMqttTopic(e.target.value)}
+ placeholder="例如: wybb/z/mqtt179"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+ Client ID
+
+ setMqttClientId(e.target.value)}
+ placeholder="wybb_z1_123"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+ Username
+
+ setMqttUsername(e.target.value)}
+ placeholder="用户名"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+ Password
+
+ setMqttPassword(e.target.value)}
+ placeholder="密码"
+ size="large"
+ disabled={!enableMqtt}
+ style={{ borderRadius: 8 }}
+ />
+
+
+
+
+
+
+ );
+};
+
+export default AdvancedSettings;
diff --git a/client/src/sections/wuyuanbiaoba/components/index.js b/client/src/sections/wuyuanbiaoba/components/index.js
index a55d6d2..b1f5ff0 100644
--- a/client/src/sections/wuyuanbiaoba/components/index.js
+++ b/client/src/sections/wuyuanbiaoba/components/index.js
@@ -6,3 +6,4 @@ export { default as RealtimeDataTable } from './RealtimeDataTable';
export { default as TemplateModal } from './TemplateModal';
export { default as TargetDetailModal } from './TargetDetailModal';
export { default as AdvancedConfigAuth } from './AdvancedConfigAuth';
+export { default as AdvancedSettings } from './AdvancedSettings';
diff --git a/client/src/sections/wuyuanbiaoba/container/index.jsx b/client/src/sections/wuyuanbiaoba/container/index.jsx
index ffacc0d..b21bb96 100644
--- a/client/src/sections/wuyuanbiaoba/container/index.jsx
+++ b/client/src/sections/wuyuanbiaoba/container/index.jsx
@@ -12,6 +12,7 @@ import {
TemplateModal,
TargetDetailModal,
AdvancedConfigAuth,
+ AdvancedSettings,
} from "../components";
import {
WebSocketProvider,
@@ -520,7 +521,7 @@ const WuyuanbiaobaContent = () => {
style={{
border: "none",
fontSize: "18px",
- justifyContent: "flex-end"
+ justifyContent: "flex-end",
}}
items={[
{
@@ -619,21 +620,7 @@ const WuyuanbiaobaContent = () => {
{currentMenu === "advanced" && (
{isUnlocked ? (
-
+
) : (