fix: 仿真地图库接口重复调用

This commit is contained in:
JiangSheng
2026-04-16 10:21:04 +08:00
parent 4479f938d9
commit a52b1b7941
3 changed files with 44 additions and 64 deletions

View File

@@ -1,7 +1,7 @@
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import { queryFlowTemplateApi } from '@/api/capability/flow';
import { getAllTaskPoolApi, getTaskPoolApi } from '@/api/task/taskpool';
import { getAllTaskPoolApi } from '@/api/task/taskpool';
import { FLOW_TEMPLATE_PUBLIC_STATUS, FLOW_USE_STATUS } from '@/utils/enum/flow';
import { filterExcludeStandardScene } from '@/utils/node';
@@ -11,11 +11,16 @@ interface Template {
[k: string]: any;
}
const fetchPoolData = async () => {
interface EarlyPoolData {
pools: any[];
versions: any[];
}
const fetchPoolData = async (): Promise<EarlyPoolData> => {
try {
const poolRes: any = await getAllTaskPoolApi({ bCurrent: false });
if (poolRes.code !== 200 || !Array.isArray(poolRes.data) || poolRes.data.length === 0) {
return { pools: [], versions: [], data: null };
return { pools: [], versions: [] };
}
const pools = poolRes.data
.filter(filterExcludeStandardScene)
@@ -32,30 +37,23 @@ const fetchPoolData = async () => {
});
if (pools.length === 0) {
return { pools: [], versions: [], data: null };
return { pools: [], versions: [] };
}
const firstPool = pools[0];
if (!Array.isArray(firstPool.versions) || firstPool.versions.length === 0) {
return { pools, versions: [], data: null };
return { pools, versions: [] };
}
const versions = firstPool.versions;
const firstVersion = versions[0];
const dataRes: any = await getTaskPoolApi({
poolName: firstVersion.poolName,
version: firstVersion.poolVersion,
});
return { pools, versions, data: dataRes };
return { pools, versions };
} catch {
return { pools: [], versions: [], data: null };
return { pools: [], versions: [] };
}
};
let earlyPoolDataPromise: Promise<{ pools: any[]; versions: any[]; data: any }> | null =
fetchPoolData();
let earlyPoolDataPromise: Promise<EarlyPoolData> | null = fetchPoolData();
export const resetEarlyPoolData = () => {
earlyPoolDataPromise = null;

View File

@@ -973,18 +973,7 @@ const onVersionChangeFun = () => {
});
};
const extractTableData: any = ref([]);
const queryTaskPoolFun = async (poolBriefVersion?: any) => {
const version = poolBriefVersion || currentPoolBriefVersion.value;
if (!version) {
return;
}
const req = {
poolName: version.poolName,
version: version.poolVersion,
};
loading.value = true;
const res: any = await getTaskPoolApi(req);
loading.value = false;
const applyTaskPoolDataFun = (res: any) => {
let tree: any = [];
if (res.code === 200 && res.data.poolBrief && res.data && res.data.nodes) {
tree = transformPoolNodesToTree(res.data.nodes);
@@ -1005,6 +994,20 @@ const queryTaskPoolFun = async (poolBriefVersion?: any) => {
isEmptyPool.value = true;
}
};
const queryTaskPoolFun = async (poolBriefVersion?: any) => {
const version = poolBriefVersion || currentPoolBriefVersion.value;
if (!version) {
return;
}
const req = {
poolName: version.poolName,
version: version.poolVersion,
};
loading.value = true;
const res: any = await getTaskPoolApi(req);
loading.value = false;
applyTaskPoolDataFun(res);
};
const calcMergeCellsFun = (tableData: any) => {
const mergeCells: any[] = [];
if (!Array.isArray(tableData) || tableData.length === 0) return mergeCells;
@@ -1348,10 +1351,11 @@ const initPageDataFun = async () => {
return;
}
const forceRefresh = true;
const forceRefresh = false;
loading.value = true;
const { pools, versions, data: dataRes } = await getEarlyPoolData(forceRefresh);
const earlyPoolData = await getEarlyPoolData(forceRefresh);
loading.value = false;
const { pools, versions } = earlyPoolData;
if (!pools.length) {
poolList.value = [];
@@ -1381,22 +1385,7 @@ const initPageDataFun = async () => {
return;
}
if (dataRes?.code === 200 && dataRes.data?.poolBrief && dataRes.data?.nodes) {
const tree = transformPoolNodesToTree(dataRes.data.nodes);
tableData.value = tree;
isEmptyPool.value = false;
if (currentTableType.value === TableViewType.LIST) {
const flattenData = extractLeafNodesWithParentTypes(cloneDeep(tree));
mergeListTableColumnsFun(flattenData);
}
nextTick(() => {
originalSnapshot = cloneDeep(tree);
});
expandAllFun();
} else {
tableData.value = [];
isEmptyPool.value = true;
}
await queryTaskPoolFun(firstVersion);
} else {
await updateVersionsListFun();
}
@@ -1412,6 +1401,7 @@ onMounted(async () => {
defineExpose({
isHaveNotSave,
openAddApproveUserFun,
initPageDataFun,
});
</script>

View File

@@ -1,11 +1,6 @@
<template>
<div class="gl-page-content-full">
<TaskPool
ref="taskPoolRef"
:key="activeKey"
pageType="loadcase"
@approveComplete="onApproveCompleteFun"
/>
<TaskPool ref="taskPoolRef" pageType="loadcase" @approveComplete="onApproveCompleteFun" />
</div>
</template>
<script setup lang="ts">
@@ -18,27 +13,24 @@ import TaskPool from './components/taskPool.vue';
const route = useRoute();
const { t } = useI18n();
const taskPoolRef = ref<InstanceType<typeof TaskPool>>();
const buildKeyFun = () => {
const poolName = (route.query?.poolName as string) || '';
const isNew = (route.query?.isNew as string) || '';
return `${poolName}_${isNew}`;
};
const activeKey = ref(buildKeyFun());
const isFirstWatchRun = ref(true);
const onApproveCompleteFun = () => {
activeKey.value = buildKeyFun();
taskPoolRef.value?.initPageDataFun?.();
};
watch(
() => route.query?.poolName,
() => [route.query?.poolName, route.query?.isNew],
(newVal, oldVal) => {
if (newVal === oldVal) {
if (isFirstWatchRun.value) {
isFirstWatchRun.value = false;
return;
}
if (newVal[0] === oldVal?.[0] && newVal[1] === oldVal?.[1]) {
return;
}
const newKey = buildKeyFun();
if (!taskPoolRef.value?.isHaveNotSave?.()) {
activeKey.value = newKey;
taskPoolRef.value?.initPageDataFun?.();
return;
}
ElMessageBox.confirm(t('工况库.当前有修改未保存是否将修改提交评审后离开'), t('通用.提示'), {
@@ -50,7 +42,7 @@ watch(
taskPoolRef.value?.openAddApproveUserFun?.();
})
.catch(() => {
activeKey.value = newKey;
taskPoolRef.value?.initPageDataFun?.();
});
}
);