Bladeren bron

perf(views): 优化“协议结果”步骤的逻辑

1. 根据协议类型区分协议表单项
wangcong 3 maanden geleden
bovenliggende
commit
2c8a9ac0ac
2 gewijzigde bestanden met toevoegingen van 31 en 10 verwijderingen
  1. 3 0
      src/views/setup-protocol/CustomParams.vue
  2. 28 10
      src/views/setup-protocol/ProtocolContent.vue

+ 3 - 0
src/views/setup-protocol/CustomParams.vue

@@ -15,6 +15,9 @@ import type { FormRules, ProtocolParamInfo } from '@/types';
 
 interface Props {
   protocolId?: number;
+  isModbusRtuProtocol?: boolean;
+  isModbusTcpProtocol?: boolean;
+  isS7Protocol?: boolean;
 }
 
 const props = defineProps<Props>();

+ 28 - 10
src/views/setup-protocol/ProtocolContent.vue

@@ -7,7 +7,7 @@ import { useDictData } from '@/hooks/dict-data';
 import { useRequest } from '@/hooks/request';
 import { t } from '@/i18n';
 import { batchDeleleProtocolParam, getProtocolParamList } from '@/api';
-import { DictCode } from '@/constants';
+import { DictCode, ProtocolType } from '@/constants';
 
 import CustomParams from './CustomParams.vue';
 import SelectStandardParams from './SelectStandardParams.vue';
@@ -29,6 +29,18 @@ const { dictData: readContinuousAddr, getDictData: getReadContinuousAddr } = use
 const { dictData: byteOrderList, getDictData: getByteOrderList } = useDictData(DictCode.ByteOrder);
 const { dictData: addrOrderList, getDictData: getAddrOrderList } = useDictData(DictCode.AddrOrder);
 
+const isModbusRtuProtocol = computed(() => {
+  return props.info.protocolType?.includes(ProtocolType.ModbusRTU);
+});
+
+const isModbusTcpProtocol = computed(() => {
+  return props.info.protocolType?.includes(ProtocolType.ModbusTCP);
+});
+
+const isS7Protocol = computed(() => {
+  return props.info.protocolType?.includes(ProtocolType.S7);
+});
+
 const formRef = ref<FormInstance>();
 
 const rules = computed<FormRules<ProtocolBaseInfo>>(() => {
@@ -283,7 +295,7 @@ defineExpose({
             </ASelect>
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="isModbusRtuProtocol" :span="6">
           <AFormItem :label="$t('setupProtocol.dataBit')" name="dataBit">
             <ARadioGroup v-model:value="info.dataBit">
               <ARadio :value="5">5</ARadio>
@@ -293,7 +305,7 @@ defineExpose({
             </ARadioGroup>
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="isModbusRtuProtocol" :span="6">
           <AFormItem :label="$t('setupProtocol.parityBit')" name="parityBit">
             <ARadioGroup v-model:value="info.parityBit">
               <ARadio value="N">N</ARadio>
@@ -302,7 +314,7 @@ defineExpose({
             </ARadioGroup>
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="isModbusRtuProtocol" :span="6">
           <AFormItem :label="$t('setupProtocol.stopBit')" name="stopBit">
             <ARadioGroup v-model:value="info.stopBit">
               <ARadio value="1">1</ARadio>
@@ -311,7 +323,7 @@ defineExpose({
             </ARadioGroup>
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="isModbusRtuProtocol" :span="6">
           <AFormItem :label="$t('setupProtocol.baudRate')" name="baudRate">
             <ASelect v-model:value="info.baudRate" class="protocol-input" :placeholder="$t('common.plzSelect')">
               <ASelectOption v-for="item in baudRateList" :key="item.dictValueId" :value="Number(item.dictValue)">
@@ -380,7 +392,7 @@ defineExpose({
             />
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="!isS7Protocol" :span="6">
           <AFormItem :label="$t('setupProtocol.readContinuousAddr')" name="readContinuousAddr">
             <ASwitch
               v-model:checked="info.readContinuousAddr"
@@ -392,7 +404,7 @@ defineExpose({
             />
           </AFormItem>
         </ACol>
-        <ACol :span="6">
+        <ACol v-if="!isS7Protocol" :span="6">
           <AFormItem :label="$t('setupProtocol.readContinuousAddrLength')" name="readContinuousAddrLength">
             <AInputNumber
               v-model:value="info.readContinuousAddrLength"
@@ -404,8 +416,8 @@ defineExpose({
           </AFormItem>
         </ACol>
       </ARow>
-      <div class="protocol-label advanced-label">{{ $t('common.advancedSettings') }}</div>
-      <ARow :gutter="[4, 30]">
+      <div v-if="!isS7Protocol" class="protocol-label advanced-label">{{ $t('common.advancedSettings') }}</div>
+      <ARow v-if="!isS7Protocol" :gutter="[4, 30]">
         <ACol :span="6">
           <AFormItem :label="$t('setupProtocol.byteOrder')" name="byteOrder">
             <ASelect
@@ -530,7 +542,13 @@ defineExpose({
       />
       <ATableColumn :title="$t('setupProtocol.protocolParamFields.decimalPlaces')" data-index="decimalPlace" />
     </ATable>
-    <CustomParams ref="customParams" :protocol-id="info.id" />
+    <CustomParams
+      ref="customParams"
+      :protocol-id="info.id"
+      :is-modbus-rtu-protocol="isModbusTcpProtocol"
+      :is-modbus-tcp-protocol="isModbusTcpProtocol"
+      :is-s7-protocol="isS7Protocol"
+    />
     <SelectStandardParams ref="selectStandardParams" :protocol-id="info.id" />
   </div>
 </template>