Quellcode durchsuchen

perf(components): 优化“自定义参数”组件逻辑

1. 支持编辑参数
wangcong vor 2 Monaten
Ursprung
Commit
0e9c517566
2 geänderte Dateien mit 31 neuen und 14 gelöschten Zeilen
  1. 2 0
      src/i18n/locales/zh.json
  2. 29 14
      src/views/setup-protocol/CustomParams.vue

+ 2 - 0
src/i18n/locales/zh.json

@@ -416,6 +416,8 @@
     "selectedParams": "已选",
     "setupProtocol": "配置协议",
     "stopBit": "停止位",
+    "updateCustomParams": "编辑自定义参数",
+    "updateCustomParamsSuccessful": "变更自定义参数成功",
     "updateStandardParamsSuccessful": "变更标准参数成功",
     "uploadFile": "上传文件",
     "uploadFileFormat": "支持扩展名:.xls,xlsx",

+ 29 - 14
src/views/setup-protocol/CustomParams.vue

@@ -6,7 +6,7 @@ import { useDictData } from '@/hooks/dict-data';
 import { useRequest } from '@/hooks/request';
 import { useViewVisible } from '@/hooks/view-visible';
 import { t } from '@/i18n';
-import { addProtocolParam } from '@/api';
+import { addProtocolParam, updateProtocolParam } from '@/api';
 import { DictCode } from '@/constants';
 
 import type { FormInstance } from 'ant-design-vue';
@@ -15,6 +15,7 @@ import type { FormRules, ProtocolParamInfo } from '@/types';
 
 interface Props {
   protocolId?: number;
+  paramId?: number;
   isModbusRtuProtocol?: boolean;
   isModbusTcpProtocol?: boolean;
   isS7Protocol?: boolean;
@@ -135,6 +136,16 @@ const isModbusProtocol = computed(() => {
   return props.isModbusRtuProtocol || props.isModbusTcpProtocol;
 });
 
+const isAddParams = ref(true);
+
+const modalTitle = computed(() => {
+  return isAddParams.value ? t('setupProtocol.addCustomParams') : t('setupProtocol.updateCustomParams');
+});
+
+const setIsAddParams = (isAdd: boolean) => {
+  isAddParams.value = isAdd;
+};
+
 onMounted(() => {
   handleRequest(async () => {
     await getReadWriteTypes();
@@ -174,12 +185,22 @@ const handleOk = () => {
     ?.validate()
     .then(() => {
       handleRequest(async () => {
-        await addProtocolParam({
-          baseInfoId: props.protocolId,
-          ...customParamsForm,
-        });
+        if (isAddParams.value) {
+          await addProtocolParam({
+            baseInfoId: props.protocolId,
+            ...customParamsForm,
+          });
+
+          message.success(t('setupProtocol.addCustomParamsSuccessful'));
+        } else {
+          await updateProtocolParam({
+            ...customParamsForm,
+            id: props.paramId,
+          });
+
+          message.success(t('setupProtocol.updateCustomParamsSuccessful'));
+        }
 
-        message.success(t('setupProtocol.addCustomParamsSuccessful'));
         hideView();
         emit('refreshList');
       });
@@ -196,18 +217,12 @@ const handleClose = () => {
 defineExpose({
   showView,
   hideView,
+  setIsAddParams,
 });
 </script>
 
 <template>
-  <AModal
-    v-model:open="visible"
-    :title="$t('setupProtocol.addCustomParams')"
-    :width="920"
-    centered
-    :after-close="handleClose"
-    @ok="handleOk"
-  >
+  <AModal v-model:open="visible" :title="modalTitle" :width="920" centered :after-close="handleClose" @ok="handleOk">
     <AForm ref="formRef" :model="customParamsForm" :rules="rules" layout="vertical">
       <ARow :gutter="30">
         <ACol :span="8">