Переглянути джерело

feat(components): 优化“数据选择”组件编辑逻辑与多语言添加

wangshun 1 місяць тому
батько
коміт
dfbfb1c58b
1 змінених файлів з 53 додано та 27 видалено
  1. 53 27
      src/components/DataSelection.vue

+ 53 - 27
src/components/DataSelection.vue

@@ -4,6 +4,7 @@ import { message } from 'ant-design-vue';
 
 import { useRequest } from '@/hooks/request';
 import { useViewVisible } from '@/hooks/view-visible';
+import { t } from '@/i18n';
 import { getDeviceGroupList, getDeviceListSimple, queryDevicesList } from '@/api';
 
 import type { DataSelection, DeviceGroup, DeviceParams, DevicesListItem } from '@/types';
@@ -53,8 +54,13 @@ const addAllGatewayList = (value: number) => {
       twoDeviceGroup.value = data;
       if (data.length) {
         if (props.form.childGroupId) {
-          gradeTwo.value = props.form.childGroupId;
-          getEquipmentList(props.form.childGroupId);
+          if (twoDeviceGroup.value.some((item) => item.id === props.form.childGroupId)) {
+            gradeTwo.value = props.form.childGroupId;
+            getEquipmentList(props.form.childGroupId);
+          } else {
+            gradeTwo.value = data[0].id;
+            getEquipmentList(data[0].id);
+          }
         } else {
           gradeTwo.value = data[0].id;
           getEquipmentList(data[0].id);
@@ -78,13 +84,19 @@ const getEquipmentList = (id: number) => {
     equipmentList.value = records;
     if (records.length) {
       if (props.form.deviceId) {
-        equipmentId.value = props.form.deviceId;
-        records.forEach((item) => {
-          if (item.id === props.form.deviceId) {
-            equipmentName.value = item.deviceName;
-          }
-        });
-        getParameters(props.form.deviceId);
+        if (equipmentList.value.some((item) => item.id === props.form.deviceId)) {
+          equipmentId.value = props.form.deviceId;
+          records.forEach((item) => {
+            if (item.id === props.form.deviceId) {
+              equipmentName.value = item.deviceName;
+            }
+          });
+          getParameters(props.form.deviceId);
+        } else {
+          equipmentId.value = records[0].id;
+          equipmentName.value = records[0].deviceName;
+          getParameters(records[0].id);
+        }
       } else {
         equipmentId.value = records[0].id;
         equipmentName.value = records[0].deviceName;
@@ -104,13 +116,19 @@ const getParameters = (id: number) => {
     parametersList.value = await getDeviceListSimple(id);
     if (parametersList.value.length) {
       if (props.form.paramCode) {
-        parametersList.value.forEach((item) => {
-          if (item.deviceParamCode === props.form.paramCode) {
-            parametersId.value = item.id;
-            parametersCode.value = item.deviceParamCode;
-            parametersName.value = item.deviceParamName;
-          }
-        });
+        if (parametersList.value.some((item) => item.deviceParamCode === props.form.paramCode)) {
+          parametersList.value.forEach((item) => {
+            if (item.deviceParamCode === props.form.paramCode) {
+              parametersId.value = item.id;
+              parametersCode.value = item.deviceParamCode;
+              parametersName.value = item.deviceParamName;
+            }
+          });
+        } else {
+          parametersId.value = parametersList.value[0].id;
+          parametersCode.value = parametersList.value[0].deviceParamCode;
+          parametersName.value = parametersList.value[0].deviceParamName;
+        }
       } else {
         parametersId.value = parametersList.value[0].id;
         parametersCode.value = parametersList.value[0].deviceParamCode;
@@ -145,11 +163,11 @@ const chooseParameters = (item: DeviceParams) => {
 const okConfirm = () => {
   if (props.selectType === 0) {
     if (!parametersId.value) {
-      return message.warning('参数未选择!');
+      return message.warning(t('algorithmManage.parameterNotSelected'));
     }
   } else if (props.selectType === 1) {
     if (!equipmentId.value) {
-      return message.warning('下属设备未选择!');
+      return message.warning(t('algorithmManage.deviceNotSelected'));
     }
   }
 
@@ -174,7 +192,7 @@ defineExpose({
   <div>
     <AModal
       v-model:open="visible"
-      title="选择参数"
+      :title="selectType === 0 ? t('createDevice.selectParameters') : t('algorithmManage.selectEquipment')"
       @ok="okConfirm"
       :centered="true"
       :width="selectType === 0 ? 1070 : 814"
@@ -182,10 +200,12 @@ defineExpose({
       <AFlex class="parameters-content">
         <div class="content-div">
           <AFlex align="center" class="content-div-top">
-            <div class="content-div-top-text">设备组一</div>
+            <div class="content-div-top-text">{{ $t('algorithmManage.equipmentGroup1') }}</div>
           </AFlex>
           <div class="content-div-content">
-            <AFlex class="no-data" justify="center" align="center" v-if="!oneDeviceGroup.length">暂无数据</AFlex>
+            <AFlex class="no-data" justify="center" align="center" v-if="!oneDeviceGroup.length">{{
+              $t('common.noData')
+            }}</AFlex>
             <div v-else v-for="item in oneDeviceGroup" :key="item.id">
               <div @click="addParameters(item.id, 1)">
                 <AFlex
@@ -204,10 +224,12 @@ defineExpose({
         </div>
         <div class="content-div border-radius">
           <AFlex align="center" class="content-div-top">
-            <div class="content-div-top-text">设备组二</div>
+            <div class="content-div-top-text">{{ $t('algorithmManage.equipmentGroup2') }}</div>
           </AFlex>
           <div class="content-div-content">
-            <AFlex class="no-data" justify="center" align="center" v-if="!twoDeviceGroup.length">暂无数据</AFlex>
+            <AFlex class="no-data" justify="center" align="center" v-if="!twoDeviceGroup.length">{{
+              $t('common.noData')
+            }}</AFlex>
             <div v-else v-for="item in twoDeviceGroup" :key="item.id">
               <div @click="addParameters(item.id, 2)">
                 <AFlex
@@ -226,10 +248,12 @@ defineExpose({
         </div>
         <div :class="selectType === 0 ? 'content-div border-radius' : 'content-div border-radius border-right'">
           <AFlex align="center" class="content-div-top">
-            <div class="content-div-top-text">设备组属性/下属设备</div>
+            <div class="content-div-top-text">{{ $t('algorithmManage.subordinateEquipment') }}</div>
           </AFlex>
           <div class="content-div-content">
-            <AFlex class="no-data" justify="center" align="center" v-if="!equipmentList.length">暂无数据</AFlex>
+            <AFlex class="no-data" justify="center" align="center" v-if="!equipmentList.length">{{
+              $t('common.noData')
+            }}</AFlex>
             <div v-else v-for="item in equipmentList" :key="item.id">
               <div @click="chooseEquipment(item)">
                 <AFlex
@@ -248,10 +272,12 @@ defineExpose({
         </div>
         <div v-if="selectType === 0" class="content-div border-radius border-right">
           <AFlex align="center" class="content-div-top">
-            <div class="content-div-top-text">参数</div>
+            <div class="content-div-top-text">{{ $t('createDevice.parameters') }}</div>
           </AFlex>
           <div class="content-div-content">
-            <AFlex class="no-data" justify="center" align="center" v-if="!parametersList.length">暂无数据</AFlex>
+            <AFlex class="no-data" justify="center" align="center" v-if="!parametersList.length">{{
+              $t('common.noData')
+            }}</AFlex>
             <div v-else v-for="item in parametersList" :key="item.id">
               <div @click="chooseParameters(item)">
                 <AFlex