refactor: 工况库、指标库替换组件
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
:data="formatData"
|
||||
height="100%"
|
||||
v-bind="$attrs"
|
||||
keepSource
|
||||
:seq-config="{startIndex: (current - 1) * size}"
|
||||
:column-config="{
|
||||
drag: true,
|
||||
@@ -111,6 +112,7 @@ import TableSearch from './tableSearch.vue';
|
||||
import TableFormDia from './tableFormDia.vue';
|
||||
import { getFormConfigureApi } from '@/api/system/systemData';
|
||||
import { formOptionsFormat } from './lib';
|
||||
import { uniqBy } from 'lodash-es';
|
||||
|
||||
const emit = defineEmits(['searchChange', 'load']);
|
||||
|
||||
@@ -332,6 +334,21 @@ const removeFun = (data: any) => {
|
||||
return vxeTableRef.value.remove(data);
|
||||
}
|
||||
};
|
||||
const editRecords = ref<any>({
|
||||
insertRecords: [],
|
||||
removeRecords: [],
|
||||
updateRecords: [],
|
||||
});
|
||||
// 获取表格增删改的行
|
||||
const getRecordSetFun = () => {
|
||||
const { insertRecords, removeRecords, updateRecords } = vxeTableRef.value?.getRecordset();
|
||||
|
||||
return {
|
||||
insertRecords: uniqBy([...insertRecords, ...editRecords.value.insertRecords], 'fakeId'),
|
||||
removeRecords: uniqBy([...removeRecords, ...editRecords.value.removeRecords], 'fakeId'),
|
||||
updateRecords: uniqBy([...updateRecords, ...editRecords.value.updateRecords], 'fakeId'),
|
||||
};
|
||||
};
|
||||
|
||||
watch(() => props.tableName, () => {
|
||||
initFun();
|
||||
@@ -349,6 +366,7 @@ defineExpose({
|
||||
setOptionsFun,
|
||||
getCheckboxRecordsFun,
|
||||
removeFun,
|
||||
getRecordSetFun,
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
:actionsWidth="95"
|
||||
@checkbox-change="checkboxChangeFun"
|
||||
>
|
||||
<template #leftOptions>
|
||||
<template #leftOptions v-if="!readonly">
|
||||
<div>
|
||||
<el-button :icon="Plus" @click="addRowFun(NODE_TYPE.CATEGORY)" :disabled="addNodeDisabled[NODE_TYPE.CATEGORY]">{{ $t('工况库.分类') }}</el-button>
|
||||
<el-button :icon="Plus" @click="addRowFun(NODE_TYPE.TASK)" :disabled="addNodeDisabled[NODE_TYPE.TASK]">{{ $t('工况库.工况') }}</el-button>
|
||||
<el-button :icon="Plus" @click="addRowFun(NODE_TYPE.PERFORMANCE)" :disabled="addNodeDisabled[NODE_TYPE.PERFORMANCE]">{{ $t('工况库.指标') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template #tableActions="{ row }">
|
||||
<template #tableActions="{ row }" v-if="!readonly">
|
||||
<div class="gl-table-actions">
|
||||
<el-link type="primary" @click="editTableRowFun(row)">编辑</el-link>
|
||||
<el-popconfirm
|
||||
@@ -32,7 +32,7 @@
|
||||
</div>
|
||||
</template>
|
||||
</TreeCaseTable>
|
||||
<Dialog v-model="modalVisible" destroy-on-close :diaTitle="modalTitle" show-footer :height=" formData.nodeType===NODE_TYPE.TASK? 700 : 'auto'">
|
||||
<!-- <Dialog v-model="modalVisible" destroy-on-close :diaTitle="modalTitle" show-footer :height=" formData.nodeType===NODE_TYPE.TASK? 700 : 'auto'">
|
||||
<template #default>
|
||||
<el-form ref="modalFormRef" :model="formData" label-width="auto">
|
||||
<template v-for="item in formItemList" :key="item.field">
|
||||
@@ -145,19 +145,25 @@
|
||||
<el-button @click="cancelForm">取消</el-button>
|
||||
<el-button type="primary" @click="confirmForm">确定</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</Dialog> -->
|
||||
<nodeDetailDialog v-model="modalVisible" :tableName="currentModalTableName" :diaTitle="modalTitle" @ok="onNodeDetailOkFun" :detail="formData"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ref, onMounted, nextTick } from 'vue';
|
||||
import { Plus } from '@element-plus/icons-vue';
|
||||
import TreeCaseTable from '@/components/common/treeCaseTable/treeTable.vue';
|
||||
import Dialog from '@/components/common/dialog/index.vue';
|
||||
import UploadImg from '@/components/common/uploadImg/index.vue';
|
||||
import { NODE_TYPE } from '@/utils/enum/node';
|
||||
import { isCategoryType, canAddChild } from '@/utils/node';
|
||||
import { isFunction } from 'lodash-es';
|
||||
import nodeDetailDialog from './nodeDetailDialog.vue';
|
||||
import { random, cloneDeep, omit, minBy, uniqBy, findLastIndex, isFunction } from 'lodash-es';
|
||||
import { TASK_CALCULATE_STATUS, TASK_PROCESS_STATUS } from '@/utils/enum/task';
|
||||
import { disposeTagKey } from '@/views/task/projectDetail/components/project';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { isCategoryNodeType } from '@/utils/node';
|
||||
|
||||
const loadcaseTableRef = ref();
|
||||
const modalTitle = ref<string>('');
|
||||
@@ -170,22 +176,48 @@ const addNodeDisabled = ref<any>({});
|
||||
interface Props {
|
||||
data: any;
|
||||
tableName: string;
|
||||
modalTableNameList?: string[];
|
||||
leftVisible?: boolean;
|
||||
leftButtonVisible?: boolean;
|
||||
readonly?: boolean;
|
||||
rememberProjectPhaseId?: string;
|
||||
projectInfo?: any;
|
||||
excludeOperation?: any;
|
||||
needPermission?: boolean; // 需要判断权限
|
||||
projectManagerIds?: any; // 项目管理员
|
||||
creatorId?: any; // 项目创建人
|
||||
projectUuid?: string; // 项目uuid
|
||||
phaseUuid?: string; // 阶段uuid
|
||||
exportBtnVisible?: boolean; // 阶段uuid
|
||||
}
|
||||
|
||||
withDefaults(defineProps<Props>(), {
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
data: [],
|
||||
tableName: '',
|
||||
modalTableNameList: () => (['TASK_POOL_CATEGORY', 'TASK_POOL_TASK', 'TASK_POOL_PERFORMANCE']),
|
||||
leftVisible: true,
|
||||
leftButtonVisible: true,
|
||||
readonly: false,
|
||||
rememberProjectPhaseId: '',
|
||||
projectInfo: null,
|
||||
excludeOperation: [],
|
||||
needPermission: false,
|
||||
projectManagerIds: [],
|
||||
creatorId: '',
|
||||
projectUuid: '',
|
||||
phaseUuid: '',
|
||||
exportBtnVisible: false,
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
checkboxChangeFun();
|
||||
});
|
||||
|
||||
const addRowFun = (nodeType?: any) => {
|
||||
setModalTitle('add', nodeType);
|
||||
displayModalFun(nodeType, 'add');
|
||||
};
|
||||
|
||||
const currentModalTableName = ref('');
|
||||
const setModalTitle = (type: string, filterColumnType: string) => {
|
||||
let text = type === 'add' ? '新增' : '编辑';
|
||||
switch (filterColumnType) {
|
||||
@@ -194,14 +226,21 @@ const setModalTitle = (type: string, filterColumnType: string) => {
|
||||
break;
|
||||
case NODE_TYPE.CATEGORY:
|
||||
text += '分类';
|
||||
currentModalTableName.value = props.modalTableNameList[0];
|
||||
break;
|
||||
case NODE_TYPE.TASK:
|
||||
text += '工况';
|
||||
currentModalTableName.value = props.modalTableNameList[1];
|
||||
break;
|
||||
case NODE_TYPE.PERFORMANCE:
|
||||
text += '指标';
|
||||
currentModalTableName.value = props.modalTableNameList[2];
|
||||
break;
|
||||
}
|
||||
if (isCategoryNodeType(filterColumnType)) {
|
||||
text += '分类';
|
||||
currentModalTableName.value = props.modalTableNameList[0];
|
||||
}
|
||||
modalTitle.value = text;
|
||||
operationType.value = type;
|
||||
};
|
||||
@@ -246,12 +285,110 @@ const cancelForm = () => {
|
||||
formData.value = {};
|
||||
modalVisible.value = false;
|
||||
};
|
||||
// 保存form
|
||||
const isSameNameLevel = (row: any, visibleData: any) => {
|
||||
console.log('visibleData', visibleData);
|
||||
const sameLevelList = visibleData.filter((item: any) => {
|
||||
return item.parentId === row.parentId && item.fakeId !== row.fakeId;
|
||||
});
|
||||
const isExistSameName = sameLevelList.some((item: any) => {
|
||||
return item.nodeName === row.nodeName;
|
||||
});
|
||||
return isExistSameName;
|
||||
};
|
||||
|
||||
const getVxeRef = () => {
|
||||
return loadcaseTableRef.value?.TreeTableRef?.treeTableRef;
|
||||
};
|
||||
const onNodeDetailOkFun = (formData: any) => {
|
||||
const { visibleData } = getVxeRef()?.getTableData();
|
||||
const checkRowData = getVxeRef()?.getCheckboxRecords(true);
|
||||
if (operationType.value === 'add') {
|
||||
const addRow = {
|
||||
parentId: checkRowData[0]?.fakeId,
|
||||
fakeId: random(0, 1, true) * random(0, 1, true) + '',
|
||||
discipline: checkRowData[0]?.discipline,
|
||||
...formData,
|
||||
depth: checkRowData[0]?.depth + 1,
|
||||
};
|
||||
if (addRow.nodeType === NODE_TYPE.TASK) {
|
||||
addRow.exeStatus = TASK_PROCESS_STATUS.NO_STARTED;
|
||||
addRow.achieveStatus = TASK_CALCULATE_STATUS.NO_CALCULATE;
|
||||
}
|
||||
// 给新增节点赋值tagKeyMapList
|
||||
// const tagKeyList = disposeTagKey(addRow, checkRowData[0]?.tagKeyList || [], tagKeyMapList.value);
|
||||
// if (addRow?.nodeType === NodeTaskType.ROUNDS || addRow.type === TaskType.PERFORMANCE) {
|
||||
// addRow.parentBeginTime = null;
|
||||
// addRow.parentEndTime = null;
|
||||
// }
|
||||
// if (addRow.type === TaskType.PERFORMANCE) {
|
||||
// addRow.beginTime = null;
|
||||
// addRow.endTime = null;
|
||||
// }
|
||||
if (isSameNameLevel(addRow, visibleData)) {
|
||||
return ElMessage.warning('当前层级已有同名,请修改名称');
|
||||
}
|
||||
const insertPosition: any = -1;
|
||||
if (checkRowData[0]?.children?.length > 0) {
|
||||
// const lastBranchIndex = findLastIndex(checkRowData[0].children, (item: any) => {
|
||||
// return item.type === addRow.type;
|
||||
// });
|
||||
// if (lastBranchIndex === -1 && addRow.type === TaskType.NODE) {
|
||||
// insertPosition = null;
|
||||
// } else if (lastBranchIndex !== -1) {
|
||||
// const insertPositionRow = checkRowData[0]?.children[lastBranchIndex];
|
||||
// insertPosition = findNextRow(insertPositionRow, false) || -1;
|
||||
// }
|
||||
}
|
||||
// 新增顶层节点时要赋值顶层uuid
|
||||
if (checkRowData.length === 0) {
|
||||
// 有阶段就取阶段的uuid
|
||||
addRow.pid = props.phaseUuid || props.projectUuid;
|
||||
} else {
|
||||
addRow.pid = checkRowData[0].uuid;
|
||||
}
|
||||
nextTick(async () => {
|
||||
await getVxeRef()?.insertAt(addRow, insertPosition);
|
||||
await getVxeRef()?.setTreeExpand(checkRowData[0], true);
|
||||
// emits('updateCallback', 'add');
|
||||
});
|
||||
} else {
|
||||
if (isSameNameLevel(formData, visibleData)) {
|
||||
return ElMessage.warning('当前层级已有同名,请修改名称');
|
||||
}
|
||||
visibleData.forEach((item: any) => {
|
||||
if (item.fakeId === formData.fakeId) {
|
||||
// for (const key in formData) {
|
||||
// item[key] = formData[key];
|
||||
// }
|
||||
getVxeRef().setRow(item, formData).then(res => {
|
||||
console.log('res', res);
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
nextTick(() => {
|
||||
// TODO 测试代码 后期删除
|
||||
const { visibleData, fullData } = getVxeRef()?.getTableData();
|
||||
console.log('fullData', fullData);
|
||||
console.log('visibleData', visibleData);
|
||||
const { insertRecords, removeRecords, updateRecords } = getVxeRef()?.getRecordset();
|
||||
console.log({ insertRecords, removeRecords, updateRecords });
|
||||
const res = getVxeRef().getUpdateRecords();
|
||||
console.log('res', res);
|
||||
});
|
||||
|
||||
// emits('updateCallback', 'update');
|
||||
}
|
||||
getVxeRef()?.clearCheckboxRow();
|
||||
cancelForm();
|
||||
|
||||
};// 保存form
|
||||
const confirmForm = () => {
|
||||
// modalFormRef.value?.validate(async (valid: boolean) => {
|
||||
// if (valid) {
|
||||
// const { visibleData } = loadcaseTableRef.value?.proTreeRef?.getTableData();
|
||||
// const checkRowData = loadcaseTableRef.value?.proTreeRef?.vxeGridRef.getCheckboxRecords(true);
|
||||
// const checkRowData = getVxeRef()?.getCheckboxRecords(true);
|
||||
// if (operationType.value === 'add') {
|
||||
// const addRow = {
|
||||
// parentId: checkRowData[0]?.fakeId,
|
||||
@@ -297,8 +434,8 @@ const confirmForm = () => {
|
||||
// addRow.pid = checkRowData[0].uuid;
|
||||
// }
|
||||
// nextTick(async () => {
|
||||
// await loadcaseTableRef.value?.proTreeRef?.vxeGridRef.insertAt(addRow, insertPosition);
|
||||
// await loadcaseTableRef.value?.proTreeRef?.vxeGridRef?.setTreeExpand(checkRowData[0], true);
|
||||
// await getVxeRef()?.insertAt(addRow, insertPosition);
|
||||
// await getVxeRef()??.setTreeExpand(checkRowData[0], true);
|
||||
// emits('updateCallback', 'add');
|
||||
// });
|
||||
// } else {
|
||||
@@ -382,6 +519,10 @@ const canAddChildFun = (checkRowData: any, nodeType: string) => {
|
||||
}
|
||||
addNodeDisabled.value[nodeType] = !canAdd;
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
loadcaseTableRef,
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
80
src/components/common/treeCaseTable/nodeDetailDialog.vue
Normal file
80
src/components/common/treeCaseTable/nodeDetailDialog.vue
Normal file
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<Dialog
|
||||
v-model="visible"
|
||||
show-footer
|
||||
show-cancel-button
|
||||
show-confirm-button
|
||||
:diaTitle="diaTitle"
|
||||
@show="onShowFun"
|
||||
:confirm-closable="false"
|
||||
width="500"
|
||||
>
|
||||
<template #default>
|
||||
<TableForm ref="tableFormRef" :tableName="tableName" @change="onFormChangeFun">
|
||||
|
||||
</TableForm>
|
||||
</template>
|
||||
<template #footer>
|
||||
<div>
|
||||
<el-button @click="onConfirmCancel">取消</el-button>
|
||||
<el-button type="primary" @click="onConfirmFun">确定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, nextTick } from 'vue';
|
||||
import Dialog from '@/components/common/dialog/index.vue';
|
||||
import TableForm from '@/components/common/table/tableForm.vue';
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean;
|
||||
tableName: string;
|
||||
diaTitle: string;
|
||||
detail?: any;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
modelValue: false,
|
||||
tableName: '',
|
||||
diaTitle: '',
|
||||
});
|
||||
|
||||
const emits = defineEmits(['update:modelValue', 'ok']);
|
||||
const visible = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emits('update:modelValue', val),
|
||||
});
|
||||
const tableFormRef = ref<any>();
|
||||
const onShowFun = () => {
|
||||
resetFun();
|
||||
nextTick(() => {
|
||||
if (props.detail) {
|
||||
tableFormRef.value?.setFormDataFun({ ...props.detail });
|
||||
}
|
||||
});
|
||||
};
|
||||
const resetFun = () => {
|
||||
tableFormRef.value?.resetFun();
|
||||
};
|
||||
|
||||
const onFormChangeFun = () => {
|
||||
};
|
||||
const onConfirmCancel = () => {
|
||||
visible.value = false;
|
||||
};
|
||||
const onConfirmFun = async () => {
|
||||
const valid = await tableFormRef.value?.validateFun();
|
||||
if (valid) {
|
||||
const formData = tableFormRef.value?.getFormDataFun();
|
||||
emits('ok', formData);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.upload {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -146,6 +146,7 @@ const removeFun = (data: any) => {
|
||||
defineExpose({
|
||||
getCheckboxRecordsFun,
|
||||
removeFun,
|
||||
TreeTableRef,
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -31,9 +31,9 @@ export const canAddChild = (parent: TreeNode, childType: string): boolean => {
|
||||
if (!parent || !parent.nodeType) {
|
||||
return false;
|
||||
}
|
||||
if (parent.nodeType === NODE_TYPE.ROOT) {
|
||||
return getAllowedChildrenTypes(parent.nodeType).includes(childType);
|
||||
}
|
||||
// if (parent.nodeType === NODE_TYPE.ROOT) {
|
||||
// return getAllowedChildrenTypes(parent.nodeType).includes(childType);
|
||||
// }
|
||||
const parentNodeType = isCategoryNodeType(parent.nodeType) ? NODE_TYPE.CATEGORY : parent.nodeType;
|
||||
const childNodeType = isCategoryNodeType(childType) ? NODE_TYPE.CATEGORY : childType;
|
||||
return getAllowedChildrenTypes(parentNodeType).includes(childNodeType);
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
:deep(.button-container) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
:deep(.el-upload-list) {
|
||||
display: none;
|
||||
}
|
||||
@@ -44,6 +46,7 @@
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
|
||||
:deep(.el-input__inner) {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -82,17 +85,23 @@
|
||||
}
|
||||
|
||||
.pool-select {
|
||||
float: right;
|
||||
height: 60px;
|
||||
|
||||
.el-select {
|
||||
width: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
.select-form {
|
||||
.el-form-item {
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.el-form-item:nth-child(2) {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.flex-end {
|
||||
margin-bottom: var(--margin-small);
|
||||
}
|
||||
|
||||
@@ -14,66 +14,78 @@
|
||||
<el-icon class="mr5">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
{{ $t('工况库.创建清单库') }}
|
||||
{{ $t("工况库.创建清单库") }}
|
||||
</el-button>
|
||||
|
||||
<el-button @click="openImportPoolFun">
|
||||
<el-icon class="mr5">
|
||||
<Upload />
|
||||
</el-icon>
|
||||
{{ $t('工况库.导入Excel') }}
|
||||
{{ $t("工况库.导入Excel") }}
|
||||
</el-button>
|
||||
|
||||
<el-button @click="onExportPoolFun" :loading="exportLoading">
|
||||
<el-icon class="mr5">
|
||||
<Download />
|
||||
</el-icon>
|
||||
{{ $t('工况库.导出Excel') }}
|
||||
{{ $t("工况库.导出Excel") }}
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button type="primary" @click="openAddApproveUserFun">
|
||||
<el-icon class="mr5">
|
||||
<Finished />
|
||||
</el-icon>
|
||||
{{ $t('工况库.提交评审') }}
|
||||
{{ $t("工况库.提交评审") }}
|
||||
</el-button>
|
||||
<el-button type="danger" @click="openDelPoolFun">
|
||||
<el-icon class="mr5">
|
||||
<Finished />
|
||||
</el-icon>
|
||||
{{ $t('工况库.删除库') }}
|
||||
{{ $t("工况库.删除库") }}
|
||||
</el-button>
|
||||
<div class="select-form">
|
||||
<div class="pool-select select-form">
|
||||
<el-form :inline="true">
|
||||
<el-form-item :label="$t('工况库.工况清单库')" :label-width="100">
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model='currentPoolBrief'
|
||||
:props="{label:'poolName', value:'value'}"
|
||||
v-model="currentPoolBrief"
|
||||
:props="{ label: 'poolName', value: 'value' }"
|
||||
value-key="poolName"
|
||||
:fit-input-width="true"
|
||||
@change="onPoolChangeFun"
|
||||
>
|
||||
<el-option v-for="item in poolList" :key="item.value" :label="item.poolName" :value="item" />
|
||||
<el-option
|
||||
v-for="item in poolList"
|
||||
:key="item.value"
|
||||
:label="item.poolName"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('工况库.版本')" :label-width="40">
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model='currentPoolBriefVersion'
|
||||
:props="{label:'poolVersion', value:'value'}"
|
||||
v-model="currentPoolBriefVersion"
|
||||
:props="{ label: 'poolVersion', value: 'value' }"
|
||||
value-key="poolVersion"
|
||||
:fit-input-width="true"
|
||||
@change="onVersionChangeFun"
|
||||
>
|
||||
<el-option v-for="item in versionList" :key="item.value" :label="item.poolVersion" :value="item" />
|
||||
<el-option
|
||||
v-for="item in versionList"
|
||||
:key="item.value"
|
||||
:label="item.poolVersion"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-space>
|
||||
</div>
|
||||
<loadCaseTable ref="treeTableRef" tableName="TASK_POOL" :modalTableNameList="['TASK_POOL_CATEGORY','TASK_POOL_TASK','TASK_POOL_PERFORMANCE']" :data="tableData" > </loadCaseTable>
|
||||
<loadcase-pro-table
|
||||
v-if="false"
|
||||
ref="treeTableRef"
|
||||
:columns="tableColumns"
|
||||
:data-source="tableData"
|
||||
@@ -90,9 +102,12 @@
|
||||
@refresh="refreshData"
|
||||
>
|
||||
<template #toolbar_tools_extra>
|
||||
<span v-if="pageType === 'performance'" >
|
||||
<span v-if="pageType === 'performance'">
|
||||
显示配置:
|
||||
<el-radio-group v-model="loadcaseOrPerformanceSwitch" @change="changeLoadcaseOrPerformanceType">
|
||||
<el-radio-group
|
||||
v-model="loadcaseOrPerformanceSwitch"
|
||||
@change="changeLoadcaseOrPerformanceType"
|
||||
>
|
||||
<el-radio :value="true" size="large">树结构</el-radio>
|
||||
<el-radio :value="false" size="large">表结构</el-radio>
|
||||
</el-radio-group>
|
||||
@@ -102,34 +117,46 @@
|
||||
</div>
|
||||
<div class="contain" v-if="!loadcaseOrPerformanceSwitch && pageType !== 'loadcase'">
|
||||
<div class="pool-select">
|
||||
<el-form :inline="true" >
|
||||
<el-form :inline="true">
|
||||
<el-form-item :label="$t('工况库.工况清单库')" :label-width="100">
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model='currentPoolBrief'
|
||||
:props="{label:'poolName', value:'value'}"
|
||||
v-model="currentPoolBrief"
|
||||
:props="{ label: 'poolName', value: 'value' }"
|
||||
value-key="poolName"
|
||||
:fit-input-width="true"
|
||||
@change="onPoolChangeFun"
|
||||
>
|
||||
<el-option v-for="item in poolList" :key="item.value" :label="item.poolName" :value="item" />
|
||||
<el-option
|
||||
v-for="item in poolList"
|
||||
:key="item.value"
|
||||
:label="item.poolName"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('工况库.版本')" :label-width="40">
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model='currentPoolBriefVersion'
|
||||
:props="{label:'poolVersion', value:'value'}"
|
||||
v-model="currentPoolBriefVersion"
|
||||
:props="{ label: 'poolVersion', value: 'value' }"
|
||||
value-key="poolVersion"
|
||||
:fit-input-width="true"
|
||||
@change="onVersionChangeFun"
|
||||
>
|
||||
<el-option v-for="item in versionList" :key="item.value" :label="item.poolVersion" :value="item" />
|
||||
<el-option
|
||||
v-for="item in versionList"
|
||||
:key="item.value"
|
||||
:label="item.poolVersion"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<loadCaseTable ref="treeTableRef" :loading="performanceLoading" readonly tableName="PERFORMANCE_POOL" :data="performanceData" > </loadCaseTable>
|
||||
<loadcase-pro-table
|
||||
v-if="false"
|
||||
ref="treeTableRef"
|
||||
:toolbarConfig="{
|
||||
enabled: false,
|
||||
@@ -147,7 +174,7 @@
|
||||
readonly
|
||||
>
|
||||
<template #toolbar_tools_extra>
|
||||
<span v-if="pageType === 'performance'" >
|
||||
<span v-if="pageType === 'performance'">
|
||||
显示配置:
|
||||
<el-radio-group v-model="loadcaseOrPerformanceSwitch">
|
||||
<el-radio :value="true" size="large">树结构</el-radio>
|
||||
@@ -169,29 +196,57 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<addApproveUser v-model="dialogApproveUserVisible" :isInitial="isEmptyPool" @ok="onConfirmFun"></addApproveUser>
|
||||
<add-pool-modal v-model="addPoolModalVisible" mode="add" :poolList="poolList" detail="{}" @ok="onAddPoolOkFun"/>
|
||||
<del-pool-modal v-model="delPoolModalVisible" @ok="onDelPoolOkFun"/>
|
||||
<import-pool-modal v-model="importPoolModalVisible" :poolList="poolList" @ok="onImportPoolOkFun"/>
|
||||
<addApproveUser
|
||||
v-model="dialogApproveUserVisible"
|
||||
:isInitial="isEmptyPool"
|
||||
@ok="onConfirmFun"
|
||||
></addApproveUser>
|
||||
<add-pool-modal
|
||||
v-model="addPoolModalVisible"
|
||||
mode="add"
|
||||
:poolList="poolList"
|
||||
detail="{}"
|
||||
@ok="onAddPoolOkFun"
|
||||
/>
|
||||
<del-pool-modal v-model="delPoolModalVisible" @ok="onDelPoolOkFun" />
|
||||
<import-pool-modal
|
||||
v-model="importPoolModalVisible"
|
||||
:poolList="poolList"
|
||||
@ok="onImportPoolOkFun"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {
|
||||
computed,
|
||||
nextTick,
|
||||
onMounted,
|
||||
ref,
|
||||
type Ref,
|
||||
} from 'vue';
|
||||
import { computed, nextTick, onMounted, ref, type Ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { cloneDeep, groupBy } from 'lodash-es';
|
||||
import { onBeforeRouteLeave, useRouter } from 'vue-router';
|
||||
import loadcaseProTable from '@/components/loadCaseTable/commonTable/loadcaseProTable.vue';
|
||||
import { getLoadcaseLibColumn, getPerformanceLibColumn, taskPoolDictOptions } from '@/components/loadCaseTable/utils/project.ts';
|
||||
import loadCaseTable from '@/components/common/treeCaseTable/loadCaseTable.vue';
|
||||
import {
|
||||
getLoadcaseLibColumn,
|
||||
getPerformanceLibColumn,
|
||||
taskPoolDictOptions,
|
||||
} from '@/components/loadCaseTable/utils/project.ts';
|
||||
import addApproveUser from './addApproveUsers.vue';
|
||||
import { transformPoolNodesToTree, transformTreeToPoolNodes, getNodeExtras, canAddChild } from '@/utils/node';
|
||||
import {
|
||||
transformPoolNodesToTree,
|
||||
transformTreeToPoolNodes,
|
||||
getNodeExtras,
|
||||
canAddChild,
|
||||
extractLeafNodesWithParentTypes,
|
||||
} from '@/utils/node';
|
||||
import { poolNodeExtraPropPickMap } from '@/utils/enum/node';
|
||||
import { createTaskPoolApi, updateTaskPoolApi, getTaskPoolApi, getTaskPoolPerformanceApi, getTaskPoolVersionsApi, getAllTaskPoolApi, importTaskPoolApi, exportTaskPoolApi } from '@/api/task/taskpool';
|
||||
import {
|
||||
createTaskPoolApi,
|
||||
updateTaskPoolApi,
|
||||
getTaskPoolApi,
|
||||
getTaskPoolPerformanceApi,
|
||||
getTaskPoolVersionsApi,
|
||||
getAllTaskPoolApi,
|
||||
importTaskPoolApi,
|
||||
exportTaskPoolApi,
|
||||
} from '@/api/task/taskpool';
|
||||
import { NODE_TYPE } from '@/utils/enum/node';
|
||||
import addPoolModal from './addPoolModal.vue';
|
||||
import delPoolModal from './delPoolModal.vue';
|
||||
@@ -214,7 +269,16 @@ const tableColumns = computed(() => {
|
||||
let data: any = cloneDeep(loadcaseLibColumn.value);
|
||||
if (props.pageType === 'performance' && !loadcaseOrPerformanceSwitch.value) {
|
||||
data = data.filter((item: any) => {
|
||||
return !['operation', 'nodeType', 'days', 'flowTemplateName', 'analysisSoftware', 'confidence', 'difficult', 'analyseTarget'].includes(item.field);
|
||||
return ![
|
||||
'operation',
|
||||
'nodeType',
|
||||
'days',
|
||||
'flowTemplateName',
|
||||
'analysisSoftware',
|
||||
'confidence',
|
||||
'difficult',
|
||||
'analyseTarget',
|
||||
].includes(item.field);
|
||||
});
|
||||
data.forEach((item: any) => {
|
||||
if (item.field === 'nodeName') {
|
||||
@@ -241,14 +305,16 @@ const tableColumns = computed(() => {
|
||||
const tableData = ref<any>([]);
|
||||
|
||||
const isHaveNotSave = () => {
|
||||
const { insertRecords, removeRecords, updateRecords } =
|
||||
treeTableRef.value?.loadcaseTableRef?.proTreeRef?.getRecordset();
|
||||
return (
|
||||
// !store.loadcaseIsSave ||
|
||||
insertRecords.length > 0 ||
|
||||
removeRecords.length > 0 ||
|
||||
updateRecords.length > 0
|
||||
);
|
||||
|
||||
try {
|
||||
const { insertRecords, removeRecords, updateRecords } = getRecordSetFun();
|
||||
return (
|
||||
insertRecords.length > 0 || removeRecords.length > 0 || updateRecords.length > 0
|
||||
);
|
||||
} catch (e) {
|
||||
console.error('e', e);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
const saveType = ref<string>('');
|
||||
@@ -264,7 +330,12 @@ const refreshData = async (callback?: any) => {
|
||||
};
|
||||
|
||||
const treeTableRef = ref();
|
||||
|
||||
const getVxeRef = () => {
|
||||
return treeTableRef?.value?.loadcaseTableRef?.TreeTableRef?.treeTableRef;
|
||||
};
|
||||
const getRecordSetFun = () => {
|
||||
return treeTableRef?.value?.loadcaseTableRef?.TreeTableRef?.getRecordSetFun();
|
||||
};
|
||||
// 任务模板库、仿真指标库切换
|
||||
const loadcaseOrPerformanceSwitch = ref<boolean>(false); // 指标数据
|
||||
|
||||
@@ -275,7 +346,7 @@ const performanceData = ref<any>([]);
|
||||
const dialogApproveUserVisible = ref(false);
|
||||
// 打开选中评审人弹窗
|
||||
const openAddApproveUserFun = () => {
|
||||
const { visibleData } = treeTableRef.value?.loadcaseTableRef?.proTreeRef.getTableData();
|
||||
const { visibleData } = getVxeRef()?.getTableData();
|
||||
if (!visibleData.length) {
|
||||
ElMessage.warning('不能提交空数据');
|
||||
return;
|
||||
@@ -310,8 +381,8 @@ const onConfirmFun = async (formData: any) => {
|
||||
}
|
||||
};
|
||||
|
||||
const createTaskPoolFun = async (formData:any) => {
|
||||
const { fullData, visibleData } = treeTableRef.value?.loadcaseTableRef?.getTableData();
|
||||
const createTaskPoolFun = async (formData: any) => {
|
||||
const { fullData, visibleData } = getVxeRef()?.getTableData();
|
||||
console.log(' fullData, visibleData', fullData, visibleData);
|
||||
const nodes = cloneDeep(fullData);
|
||||
const pickedNodes = transformTreeToPoolNodes(nodes);
|
||||
@@ -323,14 +394,14 @@ const createTaskPoolFun = async (formData:any) => {
|
||||
nodes: pickedNodes,
|
||||
users: formData.selectUser,
|
||||
};
|
||||
const res:any = await createTaskPoolApi(req);
|
||||
const res: any = await createTaskPoolApi(req);
|
||||
if (res.code === 200) {
|
||||
refreshPoolFun();
|
||||
}
|
||||
};
|
||||
const updateTaskPoolFun = async (formData:any) => {
|
||||
const updateTaskPoolFun = async (formData: any) => {
|
||||
const { insertRecords, removeRecords, updateRecords } =
|
||||
treeTableRef.value?.loadcaseTableRef?.proTreeRef?.getRecordset();
|
||||
getRecordSetFun();
|
||||
const req = {
|
||||
users: formData.selectUser,
|
||||
bNewVersion: formData.bNewVersion,
|
||||
@@ -371,24 +442,23 @@ const updateTaskPoolFun = async (formData:any) => {
|
||||
const delObj = formatDelFun(cloneDeep(removeRecords));
|
||||
Object.assign(req, delObj);
|
||||
}
|
||||
const res:any = await updateTaskPoolApi(req);
|
||||
const res: any = await updateTaskPoolApi(req);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(res.message);
|
||||
refreshVersionFun();
|
||||
}
|
||||
|
||||
};
|
||||
const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
const { visibleData } = treeTableRef.value?.loadcaseTableRef?.getTableData();
|
||||
let nodes:any[] = [];
|
||||
const nodeExtras:any[] = [];
|
||||
let tasks:any[] = [];
|
||||
const taskExtras:any[] = [];
|
||||
let performances:any[] = [];
|
||||
const performanceExtras:any[] = [];
|
||||
const formatAdd = (arr:any ) => {
|
||||
arr.forEach((item:any) => {
|
||||
const parentRow = visibleData.find((row:any) => {
|
||||
const formatAddFun = (insertRecords: TreeNode[], updateRecords: TreeNode[]) => {
|
||||
const { visibleData } = getVxeRef()?.getTableData();
|
||||
let nodes: any[] = [];
|
||||
const nodeExtras: any[] = [];
|
||||
let tasks: any[] = [];
|
||||
const taskExtras: any[] = [];
|
||||
let performances: any[] = [];
|
||||
const performanceExtras: any[] = [];
|
||||
const formatAdd = (arr: any) => {
|
||||
arr.forEach((item: any) => {
|
||||
const parentRow = visibleData.find((row: any) => {
|
||||
return row.fakeId === item.parentId;
|
||||
});
|
||||
if (item.nodeType === NODE_TYPE.TASK) {
|
||||
@@ -399,14 +469,14 @@ const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
item.isTemp = true;
|
||||
}
|
||||
} else if (item.nodeType === NODE_TYPE.PERFORMANCE) {
|
||||
if (parentRow && parentRow.uuid ) {
|
||||
if (parentRow && parentRow.uuid) {
|
||||
item.parentId = parentRow.uuid;
|
||||
performances.push(item);
|
||||
} else {
|
||||
item.isTemp = true;
|
||||
}
|
||||
} else {
|
||||
if (parentRow && parentRow.uuid ) {
|
||||
if (parentRow && parentRow.uuid) {
|
||||
item.parentId = parentRow.uuid;
|
||||
} else {
|
||||
if (canAddChild({ nodeType: NODE_TYPE.ROOT }, item.nodeType)) {
|
||||
@@ -421,25 +491,25 @@ const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
};
|
||||
formatAdd(insertRecords);
|
||||
|
||||
nodes = nodes.filter(item => !item.isTemp);
|
||||
tasks = tasks.filter(item => !item.isTemp);
|
||||
performances = performances.filter(item => !item.isTemp);
|
||||
nodes = nodes.filter((item) => !item.isTemp);
|
||||
tasks = tasks.filter((item) => !item.isTemp);
|
||||
performances = performances.filter((item) => !item.isTemp);
|
||||
const nodesGroup = groupBy(nodes, 'parentId');
|
||||
const addNodes = Object.keys(nodesGroup).map(key => {
|
||||
const addNodes = Object.keys(nodesGroup).map((key) => {
|
||||
return {
|
||||
parentId: key === 'undefined' ? '' : key,
|
||||
nodes: transformTreeToPoolNodes(nodesGroup[key]),
|
||||
};
|
||||
});
|
||||
const tasksGroup = groupBy(tasks, 'parentId');
|
||||
const addTasks = Object.keys(tasksGroup).map(key => {
|
||||
const addTasks = Object.keys(tasksGroup).map((key) => {
|
||||
return {
|
||||
nodeId: key === 'undefined' ? '' : key,
|
||||
tasks: transformTreeToPoolNodes(tasksGroup[key]),
|
||||
};
|
||||
});
|
||||
const performancesGroup = groupBy(performances, 'parentId');
|
||||
const addPerformances = Object.keys(performancesGroup).map(key => {
|
||||
const addPerformances = Object.keys(performancesGroup).map((key) => {
|
||||
return {
|
||||
nodeId: key === 'undefined' ? '' : key,
|
||||
taskId: key === 'undefined' ? '' : key,
|
||||
@@ -447,11 +517,11 @@ const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
};
|
||||
});
|
||||
|
||||
const formatUpdate = (arr:any) => {
|
||||
arr.forEach((item:any) => {
|
||||
const formatUpdate = (arr: any) => {
|
||||
arr.forEach((item: any) => {
|
||||
item.extras = getNodeExtras(item, poolNodeExtraPropPickMap);
|
||||
if (Array.isArray(item.extras) && item.extras.length > 0) {
|
||||
item.extras.forEach((extra:any) => {
|
||||
item.extras.forEach((extra: any) => {
|
||||
if (!extra.uuid) {
|
||||
if (item.nodeType === NODE_TYPE.TASK) {
|
||||
taskExtras.push(extra);
|
||||
@@ -464,7 +534,6 @@ const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
formatUpdate(updateRecords);
|
||||
return {
|
||||
@@ -475,17 +544,16 @@ const formatAddFun = (insertRecords:TreeNode[], updateRecords:TreeNode[]) => {
|
||||
addPerformances,
|
||||
addPerformanceExtras: performanceExtras,
|
||||
};
|
||||
|
||||
};
|
||||
const formatUpdateFun = (updateRecords:TreeNode[]) => {
|
||||
const updateNodes:any[] = [];
|
||||
const updateNodeExtras:any[] = [];
|
||||
const updateTasks:any[] = [];
|
||||
const updateTaskExtras:any[] = [];
|
||||
const updatePerformances:any[] = [];
|
||||
const updatePerformanceExtras:any[] = [];
|
||||
const formatUpdate = (arr:TreeNode[]) => {
|
||||
arr.forEach(item => {
|
||||
const formatUpdateFun = (updateRecords: TreeNode[]) => {
|
||||
const updateNodes: any[] = [];
|
||||
const updateNodeExtras: any[] = [];
|
||||
const updateTasks: any[] = [];
|
||||
const updateTaskExtras: any[] = [];
|
||||
const updatePerformances: any[] = [];
|
||||
const updatePerformanceExtras: any[] = [];
|
||||
const formatUpdate = (arr: TreeNode[]) => {
|
||||
arr.forEach((item) => {
|
||||
if (item.nodeType === NODE_TYPE.TASK) {
|
||||
updateTasks.push(item);
|
||||
} else if (item.nodeType === NODE_TYPE.PERFORMANCE) {
|
||||
@@ -495,7 +563,7 @@ const formatUpdateFun = (updateRecords:TreeNode[]) => {
|
||||
}
|
||||
item.extras = getNodeExtras(item, poolNodeExtraPropPickMap);
|
||||
if (Array.isArray(item.extras) && item.extras.length > 0) {
|
||||
item.extras.forEach(extra => {
|
||||
item.extras.forEach((extra) => {
|
||||
if (extra.uuid) {
|
||||
if (item.nodeType === NODE_TYPE.TASK) {
|
||||
updateTaskExtras.push(extra);
|
||||
@@ -519,32 +587,32 @@ const formatUpdateFun = (updateRecords:TreeNode[]) => {
|
||||
updatePerformanceExtras,
|
||||
};
|
||||
};
|
||||
const formatDelFun = (removeRecords:TreeNode[]) => {
|
||||
const deleteNodes:any[] = [];
|
||||
const deleteNodeExtras:any[] = [];
|
||||
const deleteTasks:any[] = [];
|
||||
const deleteTaskExtras:any[] = [];
|
||||
const deletePerformances:any[] = [];
|
||||
const formatDelFun = (removeRecords: TreeNode[]) => {
|
||||
const deleteNodes: any[] = [];
|
||||
const deleteNodeExtras: any[] = [];
|
||||
const deleteTasks: any[] = [];
|
||||
const deleteTaskExtras: any[] = [];
|
||||
const deletePerformances: any[] = [];
|
||||
const deletePerformanceExtras: any[] = [];
|
||||
removeRecords.forEach((item:TreeNode) => {
|
||||
removeRecords.forEach((item: TreeNode) => {
|
||||
if (item.nodeType === NODE_TYPE.TASK) {
|
||||
deleteTasks.push(item.uuid);
|
||||
if (Array.isArray(item.extras) && item.extras.length > 0) {
|
||||
item.extras.forEach((extra:Extra) => {
|
||||
item.extras.forEach((extra: Extra) => {
|
||||
deleteTaskExtras.push(extra.uuid);
|
||||
});
|
||||
}
|
||||
} else if (item.nodeType === NODE_TYPE.PERFORMANCE) {
|
||||
deletePerformances.push(item.uuid);
|
||||
if (Array.isArray(item.extras) && item.extras.length > 0) {
|
||||
item.extras.forEach((extra:Extra) => {
|
||||
item.extras.forEach((extra: Extra) => {
|
||||
deletePerformanceExtras.push(extra.uuid);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
deleteNodes.push(item.uuid);
|
||||
if (Array.isArray(item.extras) && item.extras.length > 0) {
|
||||
item.extras.forEach((extra:Extra) => {
|
||||
item.extras.forEach((extra: Extra) => {
|
||||
deleteNodeExtras.push(extra.uuid);
|
||||
});
|
||||
}
|
||||
@@ -581,13 +649,15 @@ onBeforeRouteLeave((to, from, next) => {
|
||||
confirmButtonText: '是',
|
||||
cancelButtonText: '否',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
pendingRoute.value = to;
|
||||
dialogApproveUserVisible.value = true;
|
||||
next(false);
|
||||
}).catch(() => {
|
||||
next();
|
||||
});
|
||||
})
|
||||
.then(() => {
|
||||
pendingRoute.value = to;
|
||||
dialogApproveUserVisible.value = true;
|
||||
next(false);
|
||||
})
|
||||
.catch(() => {
|
||||
next();
|
||||
});
|
||||
});
|
||||
const poolList: Ref<Pool[]> = ref([]);
|
||||
const queryPoolListFun = async () => {
|
||||
@@ -609,9 +679,10 @@ const onPoolChangeFun = (pool: any) => {
|
||||
confirmButtonText: '是',
|
||||
cancelButtonText: '否',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
dialogApproveUserVisible.value = true;
|
||||
})
|
||||
.then(() => {
|
||||
dialogApproveUserVisible.value = true;
|
||||
})
|
||||
.catch(() => {
|
||||
currentPoolBrief.value = pool;
|
||||
queryVersionsFun();
|
||||
@@ -632,13 +703,15 @@ const onVersionChangeFun = () => {
|
||||
confirmButtonText: '是',
|
||||
cancelButtonText: '否',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
dialogApproveUserVisible.value = true;
|
||||
})
|
||||
.then(() => {
|
||||
dialogApproveUserVisible.value = true;
|
||||
})
|
||||
.catch(() => {
|
||||
refreshTreeFun();
|
||||
});
|
||||
};
|
||||
const extractTableData:any = ref([]);
|
||||
const queryTaskPoolFun = async () => {
|
||||
if (!currentPoolBriefVersion.value) {
|
||||
return;
|
||||
@@ -655,6 +728,7 @@ const queryTaskPoolFun = async () => {
|
||||
tree = transformPoolNodesToTree(res.data.nodes);
|
||||
tableData.value = tree;
|
||||
isEmptyPool.value = false;
|
||||
extractTableData.value = extractLeafNodesWithParentTypes(res.data.nodes);
|
||||
nextTick(() => {
|
||||
treeTableRef.value?.changeLevel('全部展开');
|
||||
});
|
||||
@@ -675,7 +749,7 @@ const queryTaskPoolPerformanceFun = async () => {
|
||||
performanceData.value = transformPoolNodesToTree(res.data);
|
||||
}
|
||||
};
|
||||
const refreshTreeFun = async() => {
|
||||
const refreshTreeFun = async () => {
|
||||
if (props.pageType === 'loadcase') {
|
||||
await queryTaskPoolFun();
|
||||
}
|
||||
@@ -683,7 +757,7 @@ const refreshTreeFun = async() => {
|
||||
await queryTaskPoolPerformanceFun();
|
||||
}
|
||||
};
|
||||
const refreshPoolFun = async() => {
|
||||
const refreshPoolFun = async () => {
|
||||
await queryPoolListFun();
|
||||
};
|
||||
const refreshVersionFun = async () => {
|
||||
@@ -693,7 +767,7 @@ const queryVersionsFun = async () => {
|
||||
const req = {
|
||||
poolName: currentPoolBrief.value.poolName,
|
||||
};
|
||||
const res:any = await getTaskPoolVersionsApi(req);
|
||||
const res: any = await getTaskPoolVersionsApi(req);
|
||||
if (res.code === 200 && res.data && Array.isArray(res.data) && res.data.length > 0) {
|
||||
versionList.value = res.data;
|
||||
if (versionList.value.length > 0) {
|
||||
@@ -843,4 +917,3 @@ onMounted(async () => {
|
||||
</script>
|
||||
|
||||
<style src="./taskPool.scss" lang="scss" scoped />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user