Эх сурвалжийг харах

pms 瑞都日报 项目任务 非平台井切换 平台井 逻辑优化

zhangcl 6 цаг өмнө
parent
commit
fae8a058fd

+ 60 - 8
src/views/pms/iotprojecttask/IotProjectTaskForm.vue

@@ -447,7 +447,7 @@
             type="danger"
             type="danger"
             size="small"
             size="small"
             @click="removePlatformWellDetail($index)"
             @click="removePlatformWellDetail($index)"
-            :disabled="currentTask.platformWellDetails[$index].taskId === currentTask.id"
+            :disabled="isMainPlatformWellDetail($index)"
           >
           >
             删除
             删除
           </el-button>
           </el-button>
@@ -1742,11 +1742,54 @@ const submitForm = async () => {
   }
   }
 }
 }
 
 
+// 判断是否为主要的平台井详情(不能删除)
+const isMainPlatformWellDetail = (index: number) => {
+  if (!currentTask.value.platformWellDetails || currentTask.value.platformWellDetails.length === 0) {
+    return false;
+  }
+
+  const detail = currentTask.value.platformWellDetails[index];
+  // 主记录的条件:是第一条记录且有关联的任务ID,或者是自动从非平台井转换过来的主记录
+  return index === 0 && (detail.taskId === currentTask.value.id ||
+    (detail.wellName === currentTask.value.wellName && detail.workloadDesign === currentTask.value.workloadDesign));
+};
+
 // 处理平台井开关变化
 // 处理平台井开关变化
 const handlePlatformWellChange = (value) => {
 const handlePlatformWellChange = (value) => {
   if (value === '1') {
   if (value === '1') {
+
+    // 检查是否是从非平台井切换过来,且当前任务有井号信息
+    const hasWellName = currentTask.value.wellName && currentTask.value.wellName.trim() !== '';
+    const hasWorkloadDesign = currentTask.value.workloadDesign;
+
+    if (hasWellName && hasWorkloadDesign) {
+      // 从非平台井切换到平台井,自动添加一条记录
+      const mainDetail = {
+        taskId: currentTask.value.id, // 关联当前任务ID
+        wellName: currentTask.value.wellName,
+        workloadDesign: currentTask.value.workloadDesign
+      };
+
+      // 清空现有详情,添加主记录
+      currentTask.value.platformWellDetails = [mainDetail];
+
+      // 清空主任务的井号和设计工作量(因为现在在平台井详情中管理)
+      // currentTask.value.wellName = '';
+      // currentTask.value.workloadDesign = '';
+    } else {
+      // 恢复之前保存的数据或初始化
+      if (platformWellDetailsBackup.value.length > 0) {
+        currentTask.value.platformWellDetails = [...platformWellDetailsBackup.value];
+        sortPlatformWellDetails();
+      } else {
+        addPlatformWellDetail();
+      }
+    }
+    // 更新备份数据
+    platformWellDetailsBackup.value = [...currentTask.value.platformWellDetails];
+
     // 切换到平台井模式,恢复之前保存的数据
     // 切换到平台井模式,恢复之前保存的数据
-    if (platformWellDetailsBackup.value.length > 0) {
+    /* if (platformWellDetailsBackup.value.length > 0) {
       // 恢复数据时进行排序
       // 恢复数据时进行排序
       currentTask.value.platformWellDetails = [...platformWellDetailsBackup.value].sort((a, b) => {
       currentTask.value.platformWellDetails = [...platformWellDetailsBackup.value].sort((a, b) => {
         if (a.taskId === currentTask.value.id) return -1;
         if (a.taskId === currentTask.value.id) return -1;
@@ -1756,10 +1799,16 @@ const handlePlatformWellChange = (value) => {
     } else {
     } else {
       // 如果没有备份数据,初始化一行
       // 如果没有备份数据,初始化一行
       addPlatformWellDetail();
       addPlatformWellDetail();
-    }
+    } */
   } else {
   } else {
     // 切换到非平台井模式,保存当前数据到备份
     // 切换到非平台井模式,保存当前数据到备份
     platformWellDetailsBackup.value = [...currentTask.value.platformWellDetails];
     platformWellDetailsBackup.value = [...currentTask.value.platformWellDetails];
+    // 如果有平台井详情,将第一个详情的数据设置回主任务
+    if (currentTask.value.platformWellDetails.length > 0) {
+      const mainDetail = currentTask.value.platformWellDetails[0];
+      currentTask.value.wellName = mainDetail.wellName || '';
+      currentTask.value.workloadDesign = mainDetail.workloadDesign || '';
+    }
     // 切换到非平台井模式,清空详情列表
     // 切换到非平台井模式,清空详情列表
     currentTask.value.platformWellDetails = [];
     currentTask.value.platformWellDetails = [];
   }
   }
@@ -1783,7 +1832,7 @@ const addPlatformWellDetail = () => {
   // 将新记录添加到数组末尾,而不是开头
   // 将新记录添加到数组末尾,而不是开头
   currentTask.value.platformWellDetails.push(newDetail);
   currentTask.value.platformWellDetails.push(newDetail);
   // 添加后重新排序,确保当前任务对应的记录始终在第一行
   // 添加后重新排序,确保当前任务对应的记录始终在第一行
-  sortPlatformWellDetails();
+  // sortPlatformWellDetails();
 };
 };
 
 
 // 删除平台井详情行
 // 删除平台井详情行
@@ -1800,11 +1849,14 @@ const sortPlatformWellDetails = () => {
   }
   }
 
 
   currentTask.value.platformWellDetails.sort((a, b) => {
   currentTask.value.platformWellDetails.sort((a, b) => {
-    // 当前任务对应的记录排在最前面
-    if (a.taskId === currentTask.value.id) return -1;
-    if (b.taskId === currentTask.value.id) return 1;
+    // 主记录(关联当前任务ID或从非平台井转换过来的记录)排在最前面
+    const aIsMain = a.taskId === currentTask.value.id;
+    const bIsMain = b.taskId === currentTask.value.id;
+
+    if (aIsMain && !bIsMain) return -1;
+    if (!aIsMain && bIsMain) return 1;
 
 
-    // 其他记录保持原有顺序(新添加的在后)
+    // 其他记录保持原有顺序
     return 0;
     return 0;
   });
   });
 };
 };