Browse Source

pms 瑞都日报 任务 详情回显设置的井任务多个工作量数据集合。

zhangcl 2 weeks ago
parent
commit
75ce952a77
1 changed files with 66 additions and 3 deletions
  1. 66 3
      src/views/pms/iotprojecttask/IotProjectTaskForm.vue

+ 66 - 3
src/views/pms/iotprojecttask/IotProjectTaskForm.vue

@@ -1516,10 +1516,14 @@ const syncCurrentTaskToTable = () => {
 
     // 处理每个平台井详情
     currentTask.value.platformWellDetails.forEach((detail, index) => {
+      // 获取当前井号的工作量数据
+      const workloadData = workloadMap.value.get(detail.wellName) || [];
+
       if (index === mainTaskDetailIndex) {
         // 主任务:使用当前任务对象
         currentTask.value.wellName = detail.wellName;
         currentTask.value.workloadDesign = detail.workloadDesign;
+        currentTask.value.workloadUnit = detail.workloadUnit;
         // platformWell 保持为 '1' - 主平台井任务
         currentTask.value.platformWell = '1';
 
@@ -1531,6 +1535,7 @@ const syncCurrentTaskToTable = () => {
           id: detail.taskId || undefined, // 已有任务使用taskId,新增任务为undefined
           wellName: detail.wellName,
           workloadDesign: detail.workloadDesign,
+          workloadUnit: detail.workloadUnit,
           platformWell: detail.taskId ? '2' : '2' // 子任务platformWell设为2
         };
 
@@ -1802,7 +1807,9 @@ const open = async () => {
           currentTask.value.platformWellDetails = currentTask.value.platformWells.map((item: any) => ({
             taskId: item.id,
             wellName: item.wellName,
-            workloadDesign: item.workloadDesign
+            workloadUnit: item.workloadUnit || '', // 确保有workloadUnit字段
+            workloadDesign: item.workloadDesign || '',
+            workloadDesignError: '' // 新增错误信息字段
           }));
 
           // 使用专门的排序方法
@@ -1810,10 +1817,17 @@ const open = async () => {
 
           // 初始化备份数据
           platformWellDetailsBackup.value = [...currentTask.value.platformWellDetails];
+          // 处理每个平台井的工作量数据
+          processPlatformWellWorkloadData(currentTask.value.platformWells);
         } else {
           // 非平台井模式,确保 platformWellDetails 是数组
           currentTask.value.platformWellDetails = currentTask.value.platformWellDetails || [];
           platformWellDetailsBackup.value = [];
+
+          // 处理非平台井的工作量数据
+          if (currentTask.value.extProperty?.[0]?.dropdownList) {
+            processWorkloadDataForWell(currentTask.value.wellName, currentTask.value.extProperty[0].dropdownList);
+          }
         }
 
         // 检查任务数据中是否有extProperty
@@ -2069,6 +2083,57 @@ const getAllSubmitterNamesForForm = (submitterIds: number[]) => {
 /** 提交表单 */
 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
 
+// 处理平台井工作量数据
+const processPlatformWellWorkloadData = (platformWells: any[]) => {
+  if (!platformWells || !platformWells.length) return;
+
+  platformWells.forEach((well: any) => {
+    if (well.wellName && well.extProperty?.[0]?.dropdownList) {
+      processWorkloadDataForWell(well.wellName, well.extProperty[0].dropdownList);
+    }
+  });
+};
+
+// 处理单个井的工作量数据
+const processWorkloadDataForWell = (wellName: string, dropdownList: any[]) => {
+  if (!wellName || !dropdownList || !dropdownList.length) return;
+
+  // 转换dropdownList格式为workloadMap需要的格式
+  const workloadData = dropdownList.map(item => ({
+    workloadUnit: getWorkloadUnitValueByName(item.name), // 通过name获取对应的value
+    workloadDesign: item.value
+  }));
+
+  // 存储到workloadMap
+  workloadMap.value.set(wellName, workloadData);
+
+  // 如果这个井在platformWellDetails中,更新其工作量单位和工作量设计
+  if (currentTask.value.platformWellDetails) {
+    const detailIndex = currentTask.value.platformWellDetails.findIndex(
+      (detail: any) => detail.wellName === wellName
+    );
+
+    if (detailIndex !== -1 && workloadData.length > 0) {
+      // 使用第一个工作量项作为平台井表格中显示的值
+      currentTask.value.platformWellDetails[detailIndex].workloadUnit = workloadData[0].workloadUnit;
+      currentTask.value.platformWellDetails[detailIndex].workloadDesign = workloadData[0].workloadDesign;
+    }
+  }
+
+  // 如果是主任务井,也更新当前任务的工作量数据
+  if (wellName === currentTask.value.wellName && workloadData.length > 0) {
+    currentTask.value.workloadUnit = workloadData[0].workloadUnit;
+    currentTask.value.workloadDesign = workloadData[0].workloadDesign;
+  }
+};
+
+// 通过工作量单位名称获取对应的值
+const getWorkloadUnitValueByName = (name: string): string => {
+  const options = getStrDictOptions(DICT_TYPE.PMS_PROJECT_WORKLOAD_UNIT);
+  const option = options.find(opt => opt.label === name);
+  return option ? option.value : '';
+};
+
 const submitForm = async () => {
   // 施工区域的数据字典类型
   currentTask.value.dictType = currentDictLabel.value;
@@ -2289,8 +2354,6 @@ const addPlatformWellDetail = () => {
 
   // 将新记录添加到数组末尾,而不是开头
   currentTask.value.platformWellDetails.push(newDetail);
-  // 添加后重新排序,确保当前任务对应的记录始终在第一行
-  // sortPlatformWellDetails();
 };
 
 // 删除平台井详情行