Ver Fonte

feat(controlPage):反应流程控制页面
refactor(components):组件调整

HMY há 9 meses atrás
pai
commit
a0a94dc6d5

+ 6 - 6
admin/src/main/java/com/dcs/hnyz/service/impl/EquipmentExtensionServiceImpl.java

@@ -70,17 +70,17 @@ public class EquipmentExtensionServiceImpl implements IEquipmentExtensionService
         //新增数据时的校验
         Equipment e = new Equipment();
         e.setEquipmentId(equipmentExtension.getEquipmentId());
-        e.setFlowIds(String.valueOf(equipmentExtension.getPageId()));
+        e.setPageIds(String.valueOf(equipmentExtension.getPageId()));
         List<Equipment> equipmentList = equipmentService.selectEquipmentList(e);
         if (equipmentList.size() == 0) {
-            throw new CustomException("设备与该流程不匹配");
+            throw new CustomException("设备与该页面不匹配");
         }
         LambdaQueryWrapper<EquipmentExtension> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(EquipmentExtension::getEquipmentId, equipmentExtension.getEquipmentId());
         wrapper.eq(EquipmentExtension::getPageId, equipmentExtension.getPageId());
         EquipmentExtension ee = equipmentExtensionMapper.selectOne(wrapper);
         if (ee != null) {
-            throw new CustomException("该设备对应流程已配置");
+            throw new CustomException("该设备在对应页面已配置");
         }
         return equipmentExtensionMapper.insert(equipmentExtension);
     }
@@ -100,10 +100,10 @@ public class EquipmentExtensionServiceImpl implements IEquipmentExtensionService
         //修改数据时的校验
         Equipment e = new Equipment();
         e.setEquipmentId(equipmentExtension.getEquipmentId());
-        e.setFlowIds(String.valueOf(equipmentExtension.getPageId()));
+        e.setPageIds(String.valueOf(equipmentExtension.getPageId()));
         List<Equipment> equipmentList = equipmentService.selectEquipmentList(e);
         if (equipmentList.size() == 0) {
-            throw new CustomException("设备与该流程不匹配");
+            throw new CustomException("设备与该页面不匹配");
         }
         LambdaQueryWrapper<EquipmentExtension> wrapper = new LambdaQueryWrapper<>();
         wrapper.ne(EquipmentExtension::getId, equipmentExtension.getId());
@@ -111,7 +111,7 @@ public class EquipmentExtensionServiceImpl implements IEquipmentExtensionService
         wrapper.eq(EquipmentExtension::getPageId, equipmentExtension.getPageId());
         EquipmentExtension ee = equipmentExtensionMapper.selectOne(wrapper);
         if (ee != null) {
-            throw new CustomException("该设备对应流程已配置");
+            throw new CustomException("该设备在对应页面已配置");
         }
         return equipmentExtensionMapper.updateById(equipmentExtension);
     }

+ 9 - 9
ui/src/components/GeneralComponents/FlowMeterComponent.vue

@@ -4,8 +4,8 @@
             <!-- 弹出内容 -->
             <template #default>
                 <div class="flow_title">{{ title }}</div>
-                <div class="flow_value" v-if="meterType === 1">瞬时流量: {{ flowValue[0] }} m³/h</div>
-                <div class="flow_value" v-if="meterType === 1">累计流量: {{ flowValue[1] }} m³</div>
+                <div class="flow_value">瞬时流量: {{ flowValue[0] }} m³/h</div>
+                <div class="flow_value" v-if="flowValue[1]">累计流量: {{ flowValue[1] }} m³</div>
                 <!-- <div class="flow_value" v-if="meterType === 2">K离子浓度: {{ ionValue }} %</div> -->
             </template>
             <!-- 悬浮触发区域 -->
@@ -42,16 +42,16 @@ const props = defineProps({
         default: 55
     },
     //仪表类型1:流量计,2:离子浓度测量仪
-    meterType: {
-        type: Number,
-        default: 1
-    }
+    // meterType: {
+    //     type: Number,
+    //     default: 1
+    // }
 
 });
-const flowValue=computed(()=>{
+const flowValue = computed(() => {
     return props.sensorValue && props.sensorValue.length > 0
-    ? props.sensorValue
-    : [10, 22]
+        ? props.sensorValue
+        : [10, 22]
 })
 </script>
 

+ 16 - 8
ui/src/components/GeneralComponents/MixerComponent.vue

@@ -1,21 +1,30 @@
 <template>
     <div class="mixer_pump">
-        <i class="icon iconfont icon-fengshan icon_fan" :class="{ 'fan_run': pumpDataArr[1]>0 }" :style="{ fontSize: iconSize + 'px' }"></i>
+        <i class="icon iconfont icon-fengshan icon_fan" :class="{ fan_run: safePumpDataArr[1] > 0 }"
+            :style="{ fontSize: iconSize + 'px' }"></i>
     </div>
 </template>
+
 <script setup>
-import { defineProps } from 'vue'
+import { defineProps, computed } from 'vue'
 
 const props = defineProps({
     pumpDataArr: {
         type: Array,
-        default: [1, 10]
+        default: () => []
     },
-    iconSize: {//图标大小
+    iconSize: {
         type: Number,
-        default: 30,
+        default: 30
     }
 })
+
+// 处理默认值逻辑:传空数组或未传时,使用 [1, 100]
+const safePumpDataArr = computed(() => {
+    return Array.isArray(props.pumpDataArr) && props.pumpDataArr.length >= 2
+        ? props.pumpDataArr
+        : [1, 100]
+})
 </script>
 
 <style lang="scss" scoped>
@@ -26,7 +35,6 @@ const props = defineProps({
     }
 }
 
-//旋转动画
 @keyframes rotate-clockwise {
     from {
         transform: rotate(0deg);
@@ -40,6 +48,6 @@ const props = defineProps({
 .fan_run {
     animation: rotate-clockwise 1s linear infinite;
     transform-origin: 49% 52%;
-    transform-box: fill-box; 
+    transform-box: fill-box;
 }
-</style>
+</style>

+ 54 - 0
ui/src/components/GeneralComponents/PageDrawerComponent.vue

@@ -0,0 +1,54 @@
+<template>
+    <div>
+        <el-button @click="visible = true">
+            组态页面目录
+        </el-button>
+
+        <el-drawer v-model="visible" :show-close="false" size="300px">
+            <template #header="{ close, titleId, titleClass }">
+                <h4 :id="titleId" :class="titleClass">页面目录</h4>
+                <el-button type="danger" @click="close">
+                    关闭
+                </el-button>
+            </template>
+
+            <el-menu @select="handleSelect" :default-active="activePath">
+                <el-menu-item v-for="item in pages" :key="item.path" :index="item.path">
+                    {{ item.label }}
+                </el-menu-item>
+            </el-menu>
+        </el-drawer>
+    </div>
+
+</template>
+
+<script setup>
+import { ref } from 'vue'
+import { useRouter, useRoute } from 'vue-router'
+const props = defineProps({
+    pages: {
+        type: Array,
+        default: () => []
+    }
+})
+// 控制抽屉显隐
+const visible = ref(false)
+
+// 路由跳转相关
+const router = useRouter()
+const route = useRoute()
+const activePath = ref(route.path)
+
+const handleSelect = (path) => {
+    visible.value = false
+    if (path !== route.path) {
+        router.push(path)
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.el-menu {
+    border-right: none;
+}
+</style>

+ 16 - 8
ui/src/components/GeneralComponents/PhSliderComponent.vue

@@ -1,8 +1,8 @@
 <template>
     <div class="slider_demo_block">
         <!-- pH计 -->
-        <el-slider :model-value="props.sensorValue[0]" vertical disabled :max="14" :min="0" :marks="marks" class="ph_slider"
-            :class="getPhClass" :style="sliderStyle" />
+        <el-slider :model-value="safeSensorValue[0]" vertical disabled :max="14" :min="0" :marks="marks"
+            class="ph_slider" :class="getPhClass" :style="sliderStyle" />
     </div>
 </template>
 
@@ -12,7 +12,7 @@ import { computed } from 'vue'
 const props = defineProps({
     sensorValue: {
         type: Array,
-        default:[7]
+        default: () => [6.6] // 默认值设为 [6.6]
     },
     sensorWidth: {
         type: Number,
@@ -20,10 +20,17 @@ const props = defineProps({
     },
     sensorHeight: {
         type: Number,
-        default:100,
+        default: 100,
     },
 })
 
+// 安全处理 sensorValue,避免传空数组或无效值
+const safeSensorValue = computed(() => {
+    return Array.isArray(props.sensorValue) && props.sensorValue.length > 0
+        ? props.sensorValue
+        : [6.6]
+})
+
 // 获取颜色和 class
 function getPhColor(val) {
     if (val >= 9) return { class: 'ph_purple', color: '#9C27B0' } // 强碱
@@ -34,14 +41,15 @@ function getPhColor(val) {
 }
 
 // class
-const getPhClass = computed(() => getPhColor(props.sensorValue[0]).class)
+const getPhClass = computed(() => getPhColor(safeSensorValue.value[0]).class)
 
 // 刻度 marks
 const marks = computed(() => {
-    if (props.sensorValue[0] == null || isNaN(props.sensorValue[0])) return {}
+    const temp = safeSensorValue.value[0]
+    if (temp == null || isNaN(temp)) return {}
 
-    const { color } = getPhColor(props.sensorValue[0])
-    const valueNum = Number(props.sensorValue[0])
+    const { color } = getPhColor(temp)
+    const valueNum = Number(temp)
     const valueLabel = valueNum.toFixed(1)
 
     return {

+ 1 - 1
ui/src/components/GeneralComponents/STypeHollowTankComponent.vue

@@ -40,7 +40,7 @@ const props = defineProps({
             left: 50%;
             transform: translate(-50%, -50%);
             font-size: 24px;
-            color: #FFA500;
+            color: #e65100;
             font-weight: bold;
         }
     }

+ 22 - 14
ui/src/components/GeneralComponents/TempSliderComponent.vue

@@ -1,7 +1,7 @@
 <template>
-    <div class="slider_demo_block" v-if="props.sensorValue[0] !== null && props.sensorValue[0] !== undefined">
+    <div class="slider_demo_block">
         <!-- 温度计 -->
-        <el-slider :model-value="props.sensorValue[0]" vertical disabled :max="140" :min="-10" :marks="marks"
+        <el-slider :model-value="safeSensorValue[0]" vertical disabled :max="140" :min="-10" :marks="marks"
             class="temp_slider" :class="getTempClass" :style="sliderStyle" />
     </div>
 </template>
@@ -12,34 +12,42 @@ import { computed } from 'vue'
 const props = defineProps({
     sensorValue: {
         type: Array,
-        default:[36.5]
+        default: () => [66.6]  // 默认值设为 [66.6]
     },
-    sensorWidth: {// 进度条宽度
+    sensorWidth: { // 进度条宽度
         type: Number,
         default: 10,
     },
-    sensorHeight: {// 进度条高度
+    sensorHeight: { // 进度条高度
         type: Number,
     },
 })
 
-/** 颜色 & 进度条 class */
+// 处理默认值:如果为空数组或无效,使用默认值
+const safeSensorValue = computed(() => {
+    return Array.isArray(props.sensorValue) && props.sensorValue.length > 0
+        ? props.sensorValue
+        : [66.6]
+})
+
+//  颜色 & 进度条 class 
 function getTempColor(val) {
     if (val >= 120) return { class: 'temp_red', color: '#F44336' } // 红
     if (val >= 75) return { class: 'temp_orange', color: '#FF9800' } // 橙
     return { class: 'temp_green', color: '#4CAF50' }      // 绿
 }
 
-/** 进度条主体颜色 class */
-const getTempClass = computed(() => getTempColor(props.sensorValue[0]).class)
+// 进度条主体颜色 class 
+const getTempClass = computed(() => getTempColor(safeSensorValue.value[0]).class)
 
-/** slider 上的刻度 marks */
+// slider 上的刻度 marks
 const marks = computed(() => {
-    if (props.sensorValue[0] == null || isNaN(props.sensorValue[0])) return {}
+    const temp = safeSensorValue.value[0]
+    if (temp == null || isNaN(temp)) return {}
 
-    const { color } = getTempColor(props.sensorValue[0])
-    const valueNum = Number(props.sensorValue[0])    // 数值型 key
-    const valueLabel = Math.round(valueNum)
+    const { color } = getTempColor(temp)
+    const valueNum = Number(temp)    // 数值型 key
+    const valueLabel = Math.round(valueNum)//取整
 
     return {
         [valueNum]: {
@@ -48,6 +56,7 @@ const marks = computed(() => {
         },
     }
 })
+
 // slider 动态样式
 const sliderStyle = computed(() => ({
     '--marks-font-size': `${props.sensorWidth * 1.8}px`,// 刻度字体大小
@@ -56,7 +65,6 @@ const sliderStyle = computed(() => ({
         ? `${props.sensorHeight}px`
         : '0.5em',                   // 进度条高度
 }))
-
 </script>
 
 <style scoped lang="scss">

+ 5 - 1
ui/src/components/GeneralComponents/control/PumpControlComponent.vue

@@ -4,7 +4,7 @@
         <div class="flow_single_show">
             <!-- 变频状态 -->
             <div class="show_body">
-                <div class="show_body_left">变频状态</div>
+                <div class="show_body_left">状态</div>
                 <div class="show_body_right">
                     <div class="show_detail">
                         <div class="text">当前</div>
@@ -119,6 +119,10 @@ function setPump(registerData, value) {
     const close = 2;
     const setValue = value ? frequencyOptions[open].value : frequencyOptions[close].value;
     setPumpVaule(registerData, setValue);
+    //如果是关闭,则同步设置转速为0
+    if(!value){
+        setPumpVaule(pumpSetArr.value[1], 0);
+    }
 }
 
 // 设置转速

+ 72 - 14
ui/src/components/GeneralComponents/control/SensorControlComponent.vue

@@ -4,11 +4,17 @@
             <div class="flow_single_title"> {{ title }} </div>
             <div class="flow_single_body">
                 <div class="body_show">
+                    当前:
                     <div class="body_show_value">
                         {{ sensorArr[0] }}
                     </div>
                     <div class="body_show_unit"> {{ unit || '' }}</div>
                 </div>
+                <div class="body_show">
+                    设置:
+                    <input class="body_show_input" v-model="setValue" @blur="handleSet" @keyup.enter="handleSet" />
+                    <div class="body_show_unit"> {{ unit || '' }}</div>
+                </div>
             </div>
         </div>
     </div>
@@ -17,25 +23,55 @@
 <script setup>
 import { ref, onMounted } from 'vue'
 import { getMainSetParam } from '@/api/hnyz/param'
+import { setValues } from '@/api/dcs/flowControl';
 
 const props = defineProps({
     title: String,
-    sensorArr: Array, // 传感器数据
-    code: String,// 传感器编码
-});
+    sensorArr: Array,
+    code: String,
+})
 
 const unit = ref('')
-
-// 在挂载后获取 unit 数据
+const setValue = ref('')
+const registerData = ref({})
+// 获取初始设置值和单位
 onMounted(() => {
     if (props.code) {
-        getMainSetParam(props.code).then(res => {
-            unit.value = res.data.unitType || '';
-        }).catch(err => {
-            console.log('获取设备主设置项参数失败:', err);
-        });
+        getMainSetParam(props.code)
+            .then(res => {
+                unit.value = res.data.unitType || ''
+                registerData.value = res.data
+            })
+            .catch(err => {
+                console.error('获取设置值失败:', err)
+            })
     }
-});
+})
+
+// 提交设置值
+const handleSet = () => {
+    if (!props.code || setValue.value === '') return
+
+    //   updateMainSetParam(props.code, setValue.value)
+    //     .then(() => {
+    //       console.log('设置成功')
+    //     })
+    //     .catch(err => {
+    //       console.error('设置失败:', err)
+    //     })
+    const data = {
+        protocol: registerData.value.protocolId,                    // MODBUS_TCP 协议
+        unitId: registerData.value.unitId,                      // 从站 ID
+        dataType: registerData.value.dataType,                 // 1 表示布尔型
+        // resource: '05',                  // 功能码,05 是写单个线圈
+        offsetOrIndex: registerData.value.address,   // 起始地址
+        lengthOrQos: 1,                // 数量
+        data: [setValue.value],                 // 写入的值,例如 [true]
+        ipAddress: registerData.value.ipAddress,    // 你的 Modbus TCP 服务地址
+        port: registerData.value.port                      // 默认端口
+    }
+    setValues(data)
+}
 </script>
 
 <style lang="scss" scoped>
@@ -69,12 +105,15 @@ onMounted(() => {
         .flow_single_body {
             display: flex;
             flex-direction: column;
+            justify-content: center;
             align-items: center;
 
             .body_show {
                 display: flex;
-                align-items: baseline;
+                align-items: center;
                 gap: 8px;
+                font-size: 16px;
+                color: #b8cee5;
 
                 .body_show_value {
                     font-size: 26px;
@@ -85,6 +124,7 @@ onMounted(() => {
                     border: 1px solid #3ecfff;
                     background: #0b1c2f;
                     min-width: 100px;
+                    min-height: 45px;
                     text-align: center;
                 }
 
@@ -92,9 +132,27 @@ onMounted(() => {
                     font-size: 16px;
                     color: #b8cee5;
                 }
+
+                .body_show_input {
+                    font-size: 26px;
+                    font-weight: bold;
+                    color: #3ecfff;
+                    padding: 6px 14px;
+                    border-radius: 6px;
+                    border: 1px solid #3ecfff;
+                    background: #0b1c2f;
+                    min-width: 100px;
+                    min-height: 45px;
+                    text-align: center;
+                    width: 100px;
+                }
+
+                .body_show_input:focus {
+                    outline: none;
+                    border-color: #76e1ff;
+                }
             }
         }
     }
 }
-
-</style>
+</style>

+ 12 - 1
ui/src/router/index.js

@@ -141,7 +141,7 @@ export const constantRoutes = [
     component: () => import('@/views/dcs/flowSelect/paramSetting/index'),
     name: 'paramSetting',
   },
-  //控制页面
+  //湖南控制页面
   {
     path: '/controlPage/flowSelect',
     component: () => import('@/views/controlPage/flowSelect/index'),
@@ -152,6 +152,11 @@ export const constantRoutes = [
     component: () => import('@/views/controlPage/flowSelect/mgm/index'),
     name: 'MGM_Control',//mgm控制页面
   },
+  {
+    path: '/controlPage/flowSelect/reaction',
+    component: () => import('@/views/controlPage/flowSelect/reaction/index'),
+    name: 'Reaction_Control',//反应控制页面
+  },
   //上海组态页面
   {
     path: '/m1sj',//水解:m1Hydrolyze
@@ -214,6 +219,12 @@ export const constantRoutes = [
     component: () => import('@/views/hnyzConfiguratePage/MGM/index'),
     name: 'MGM',
   },
+  //湖南硫酸钠组态页面
+  {
+    path:'/Na2SO4_FY',//硫酸钠-反应
+    component: () => import('@/views/hnyzConfiguratePage/Na2SO4_FY/index'),
+    name: 'Na2SO4_FY',
+  },
   { // 页面设计器
     path: '/deviceState',
     hidden: false,

+ 1 - 1
ui/src/views/controlPage/flowSelect/index.vue

@@ -9,7 +9,7 @@
             </div>
 
             <!-- 正式按钮 -->
-            <div class="flow_btn reaction">反应</div>
+            <div class="flow_btn reaction" @click="$router.push('/controlPage/flowSelect/reaction')">反应</div>
             <div class="flow_btn separation">第一次固液分离</div>
             <div class="flow_btn filter">24平带式过滤</div>
 

+ 144 - 0
ui/src/views/controlPage/flowSelect/reaction/index.vue

@@ -0,0 +1,144 @@
+<!-- src/views/control/MGMControlPage.vue -->
+<template>
+    <div class="dcs">
+        <!-- 顶部返回标题 -->
+        <HeaderComponent title="MGM控制页面" backTo="/controlPage/flowSelect" />
+
+        <!-- 顶部导航栏 -->
+        <PageNav :items="navItems_Na2SO4" :currentCode="flowCode" />
+
+        <!-- 控制组件区域 -->
+        <div v-if="deviceConfigGroup.SENSORS" class="block">
+            <h2 class="block-title">传感器</h2>
+            <div class="group-row">
+                <SensorControl v-for="item in deviceConfigGroup.SENSORS" :key="item.code"
+                    :sensorArr="sensorHelper.getDataArrByCode(item.code)" :title="item.title"
+                    :code="item.code" />
+            </div>
+        </div>
+
+        <div v-if="deviceConfigGroup.PUMPS" class="block">
+            <h2 class="block-title">泵</h2>
+            <div class="group-row">
+                <PumpControlComponent v-for="item in deviceConfigGroup.PUMPS" :key="item.code"
+                    :title="item.title" :pumpArr="pumpHelper.getDataArrByCode(item.code)" :code="item.code" />
+            </div>
+        </div>
+
+        <div v-if="deviceConfigGroup.VALVES" class="block">
+            <h2 class="block-title">阀门</h2>
+            <div class="group-row">
+                <ValveControlComponent v-for="item in deviceConfigGroup.VALVES" :key="item.code"
+                    :title="item.equipmentName" :valveArr="valveHelper.getDataArrByCode(item.code)" :code="item.code" />
+            </div>
+        </div>
+    </div>
+</template>
+
+<script setup>
+import PageNav from '@/components/GeneralComponents/control/PageNavComponent.vue';
+import SensorControl from '@/components/GeneralComponents/control/SensorControlComponent.vue';
+import PumpControlComponent from '@/components/GeneralComponents/control/PumpControlComponent.vue';
+import ValveControlComponent from '@/components/GeneralComponents/control/ValveControlComponent.vue';
+import HeaderComponent from '@/components/DCS/HeaderComponent.vue';
+import { useValveHelper } from '@/hooks/useValveHelper'
+import { computed, onMounted, onBeforeUnmount, reactive, ref } from 'vue';
+import { stompClient } from '@/utils/ws/stompClient';
+import { updateZTPageConfig } from '@/api/dcs/configurePage';
+import { getEquipmentGroup } from '@/api/hnyz/equipment'
+import { useEquipmentLayout } from '@/hooks/useEquipmentLayout';
+import { navItems_Na2SO4 } from '@/config';
+const flowCode = 'Reaction_Control'
+const { generatePageParams } = useEquipmentLayout()
+const deviceConfigGroup = ref({})
+const pageParams = ref({})
+
+const valveArr = []
+const pumpArr = []
+const sensorArr = []
+
+const deviceDataGroup = reactive({
+    VALVES: valveArr,
+    PUMPS: pumpArr,
+    SENSORS: sensorArr,
+})
+
+onMounted(() => {
+    getEquipmentGroup(flowCode).then(res => {
+        deviceConfigGroup.value = res.data
+        pageParams.value = generatePageParams(res.data)
+        updatePageConfig()
+    })
+})
+
+onBeforeUnmount(() => {
+    stompClient.unsubscribeFromPage(flowCode)
+})
+
+function updatePageConfig() {
+    updateZTPageConfig(flowCode, pageParams.value)
+        .then(() => {
+            stompClient.subscribeToPage(flowCode, (data) => {
+                // console.log('收到页面数据:', data)
+                deviceDataGroup.VALVES = Object.values(data.VALVES || {})
+                deviceDataGroup.PUMPS = Object.values(data.PUMPS || {})
+                deviceDataGroup.SENSORS = Object.values(data.SENSORS || {})
+            })
+        })
+        .catch(err => {
+            console.log('页面配置失败:', err)
+        });
+}
+
+const pumpHelper = useValveHelper(computed(() => deviceDataGroup.PUMPS))
+const valveHelper = useValveHelper(computed(() => deviceDataGroup.VALVES))
+const sensorHelper = useValveHelper(computed(() => deviceDataGroup.SENSORS))
+</script>
+
+<style scoped lang="scss">
+.dcs {
+    width: 100%;
+    min-height: 100vh;
+    padding: 24px 32px;
+    background-color: #141414;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+
+.block {
+    margin-bottom: 32px;
+    background: #1a1a1a;
+    padding: 16px;
+    border: 1px solid #333;
+    border-radius: 12px;
+    max-width: 1200px;
+    width: 100%;
+    animation: fadeInUp 0.4s ease;
+}
+
+.block-title {
+    font-size: 20px;
+    color: #fff;
+    margin-bottom: 12px;
+}
+
+.group-row {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 12px 20px;
+    justify-content: flex-start;
+}
+
+@keyframes fadeInUp {
+    from {
+        opacity: 0;
+        transform: translateY(20px);
+    }
+
+    to {
+        opacity: 1;
+        transform: translateY(0);
+    }
+}
+</style>

+ 7 - 7
ui/src/views/dcsForm2/equipmentParam/index.vue

@@ -69,26 +69,26 @@
       <el-table-column label="归属设备" align="center" prop="equipmentName" />
       <el-table-column label="关联设备" align="center" prop="relatedEquipmentName" />
       <el-table-column label="寄存器名称" align="center" prop="registerName" />
-      <el-table-column label="设备数据类型" align="center" prop="dataType">
+      <!-- <el-table-column label="设备数据类型" align="center" prop="dataType">
         <template #default="scope">
           <dict-tag :options="dcs_data_type" :value="scope.row.dataType" />
         </template>
-      </el-table-column>
-      <el-table-column label="寄存器类型" align="center" prop="registerCode">
-        <template #default="scope">
+</el-table-column>
+<el-table-column label="寄存器类型" align="center" prop="registerCode">
+  <template #default="scope">
           <dict-tag :options="dcs_register_code" :value="scope.row.registerCode" />
         </template>
-      </el-table-column>
+</el-table-column> -->
       <el-table-column label="单位类型" align="center" prop="unitType">
         <template #default="scope">
           <dict-tag :options="unit_type" :value="scope.row.unitType" />
         </template>
       </el-table-column>
-      <el-table-column label="参数类型" align="center" prop="paramType">
+      <!-- <el-table-column label="参数类型" align="center" prop="paramType">
         <template #default="scope">
           <dict-tag :options="param_type" :value="scope.row.paramType" />
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="启用状态" align="center" width="100">
         <template #default="scope">
           <el-switch v-model="scope.row.status" active-value="0" inactive-value="1"

+ 2 - 3
ui/src/views/hnyzConfiguratePage/MGM/index.vue

@@ -99,8 +99,7 @@ import { useEquipmentLayout } from '@/hooks/useEquipmentLayout'
 import { useComponentHelper } from '@/hooks/useComponentHelper'
 
 const route = useRoute();
-const pageCode = route.name?.toLowerCase();
-const flowId = 9;//当前页面流程Id
+const pageCode = route.name;
 
 // 获取设备布局
 // 获取设备布局 
@@ -124,7 +123,7 @@ const {
 
 
 onMounted(async () => {
-    await fetchPageConfig(flowId).then(res => {
+    await fetchPageConfig(pageCode).then(res => {
         updatePageConfig()
     })
 })

+ 1 - 1
ui/src/views/index.vue

@@ -217,7 +217,7 @@ function toConfig() {
 }
 function toHnyzConfig() {
   // 跳转湖南组态页面
-  router.push('/CaSO4_1')
+  router.push('/Na2SO4_FY')
 }
 function toSimulatorPage() {
   // 跳转模拟器页面