fix: 仿真地图库接口重复调用
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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?.();
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user