|
|
@@ -758,6 +758,9 @@ const currentTechnologyDictLabel = ref(''); // 存储当前项目对应的施工
|
|
|
// 添加一个变量来保存平台井详情数据
|
|
|
const platformWellDetailsBackup = ref([]);
|
|
|
|
|
|
+// 存储井号到工作量列表的映射(key: wellName, value: Array<{workloadUnit, workloadDesign}>)
|
|
|
+const workloadMap = ref(new Map());
|
|
|
+
|
|
|
// 工作量维护相关变量
|
|
|
const workloadDialogVisible = ref(false);
|
|
|
const workloadList = ref<any[]>([]);
|
|
|
@@ -1136,13 +1139,31 @@ const openWorkloadDialog = () => {
|
|
|
workloadList.value = [];
|
|
|
hasInitialWorkload.value = false;
|
|
|
|
|
|
- // 如果表单中已有值,添加到首行
|
|
|
- if (currentTask.value.workloadUnit && currentTask.value.workloadDesign) {
|
|
|
- workloadList.value.push({
|
|
|
- workloadUnit: currentTask.value.workloadUnit,
|
|
|
- workloadDesign: currentTask.value.workloadDesign
|
|
|
- });
|
|
|
- hasInitialWorkload.value = true;
|
|
|
+ // 获取当前操作的井号(兼容普通井/平台井)
|
|
|
+ let currentWellName = '';
|
|
|
+ if (currentTask.value.platformWell === '1') {
|
|
|
+ // 平台井:取主井号(优先当前任务wellName,其次取平台井详情第一个)
|
|
|
+ currentWellName = currentTask.value.wellName || (currentTask.value.platformWellDetails.length > 0
|
|
|
+ ? currentTask.value.platformWellDetails[0].wellName : '');
|
|
|
+ } else {
|
|
|
+ // 普通井:直接取当前任务井号
|
|
|
+ currentWellName = currentTask.value.wellName;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 从Map中回显当前井号的工作量数据
|
|
|
+ if (currentWellName && workloadMap.value.has(currentWellName)) {
|
|
|
+ // 深拷贝避免原数据被修改
|
|
|
+ workloadList.value = JSON.parse(JSON.stringify(workloadMap.value.get(currentWellName)));
|
|
|
+ hasInitialWorkload.value = workloadList.value.length > 0;
|
|
|
+ } else {
|
|
|
+ // 无历史数据时,沿用原有逻辑(取表单已有值初始化首行)
|
|
|
+ if (currentTask.value.workloadUnit && currentTask.value.workloadDesign) {
|
|
|
+ workloadList.value.push({
|
|
|
+ workloadUnit: currentTask.value.workloadUnit,
|
|
|
+ workloadDesign: currentTask.value.workloadDesign
|
|
|
+ });
|
|
|
+ hasInitialWorkload.value = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
workloadDialogVisible.value = true;
|
|
|
@@ -1181,6 +1202,18 @@ const confirmWorkloadSelection = () => {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // 获取当前井号并存储到Map
|
|
|
+ let currentWellName = '';
|
|
|
+ if (currentTask.value.platformWell === '1') {
|
|
|
+ currentWellName = currentTask.value.wellName || (currentTask.value.platformWellDetails.length > 0 ? currentTask.value.platformWellDetails[0].wellName : '');
|
|
|
+ } else {
|
|
|
+ currentWellName = currentTask.value.wellName;
|
|
|
+ }
|
|
|
+ // 深拷贝存储,避免后续修改影响Map数据
|
|
|
+ if (currentWellName) {
|
|
|
+ workloadMap.value.set(currentWellName, JSON.parse(JSON.stringify(workloadList.value)));
|
|
|
+ }
|
|
|
+
|
|
|
// 如果有数据,设置第一个项到表单中(保持原有逻辑)
|
|
|
if (workloadList.value.length > 0) {
|
|
|
const firstItem = workloadList.value[0];
|
|
|
@@ -1391,6 +1424,9 @@ const syncCurrentTaskToTable = () => {
|
|
|
|
|
|
// 重置任务表单
|
|
|
const resetTaskForm = () => {
|
|
|
+ // 记录旧井号,用于清理Map
|
|
|
+ const oldWellName = currentTask.value.wellName;
|
|
|
+
|
|
|
currentTask.value = {
|
|
|
id: undefined,
|
|
|
wellName: '',
|
|
|
@@ -1411,6 +1447,11 @@ const resetTaskForm = () => {
|
|
|
...(isSpecialDept.value ? { submitter: [] } : {})
|
|
|
};
|
|
|
|
|
|
+ // 清理当前井号对应的Map数据
|
|
|
+ if (oldWellName && workloadMap.value.has(oldWellName)) {
|
|
|
+ workloadMap.value.delete(oldWellName);
|
|
|
+ }
|
|
|
+
|
|
|
// 重新初始化动态属性
|
|
|
initDynamicAttrsToCurrentTask();
|
|
|
|
|
|
@@ -1978,6 +2019,13 @@ const handlePlatformWellChange = (value) => {
|
|
|
addPlatformWellDetail();
|
|
|
} */
|
|
|
} else {
|
|
|
+ // 关闭平台井时,清理所有平台井详情对应的Map数据
|
|
|
+ currentTask.value.platformWellDetails.forEach(detail => {
|
|
|
+ if (detail.wellName && workloadMap.value.has(detail.wellName)) {
|
|
|
+ workloadMap.value.delete(detail.wellName);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
// 切换到非平台井模式,保存当前数据到备份
|
|
|
platformWellDetailsBackup.value = [...currentTask.value.platformWellDetails];
|
|
|
// 如果有平台井详情,将第一个详情的数据设置回主任务
|
|
|
@@ -2014,6 +2062,12 @@ const addPlatformWellDetail = () => {
|
|
|
|
|
|
// 删除平台井详情行
|
|
|
const removePlatformWellDetail = (index: number) => {
|
|
|
+ // 获取被删除的井号,清理Map
|
|
|
+ const removedDetail = currentTask.value.platformWellDetails[index];
|
|
|
+ if (removedDetail.wellName && workloadMap.value.has(removedDetail.wellName)) {
|
|
|
+ workloadMap.value.delete(removedDetail.wellName);
|
|
|
+ }
|
|
|
+
|
|
|
currentTask.value.platformWellDetails.splice(index, 1);
|
|
|
// 删除后重新排序
|
|
|
sortPlatformWellDetails();
|