未分发的和已分发的合并起来,单个需求任务的分发功能开发

This commit is contained in:
weibl
2026-02-03 17:24:20 +08:00
parent 6c33831886
commit 5bb1f6f6bf
6 changed files with 664 additions and 69 deletions

View File

@@ -17,6 +17,10 @@ export const updateTaskStatusApi = (params: any) => {
return post(`${PREFIX}task/operation`, params);
};
export const batchUpdateTaskStatusApi = (params: any) => {
return post(`${PREFIX}task/batchOperation`, params);
};
export const attentionTaskApi = (params: any) => {
return post(`${PREFIX}task/attention`, params);
};

View File

@@ -6,7 +6,7 @@
ref="tableFormRef"
tableName="SIMULATION_TASK_DEMAND_CREATE"
:colNum="2"
:hideKeys="['attachments']"
:hideKeys="hideKeys"
>
<template #form-downAttachments>
<div class="attachments">
@@ -39,6 +39,7 @@ import { dataQueryDirApi } from '@/api/data/data';
import { downloadFileById } from '@/utils/file';
import { CommonStore } from '@/stores/common';
import { listDeptApi } from '@/api/system/departMent';
import { getDemandHideKeys, getUserSimulationType } from '@/tenants/lyric/views/task/lyricTask';
const props = defineProps<{
demandUid: string;
@@ -48,6 +49,8 @@ const commonStore = CommonStore();
const demandInfo = ref<any>({});
const tableFormRef = ref();
const hideKeys = ref(['attachments'].concat(getDemandHideKeys(getUserSimulationType())));
const getDemandInfoFun = async () => {
const res: any = await getDemandDetailApi({ demandId: props.demandUid });
if (res.code === 200) {

View File

@@ -19,13 +19,13 @@ const commonStore = CommonStore();
const demandRef = ref();
const visibleDialog = ({ isCreate, row }: any) => {
if (!isCreate) {
if (row) {
if (row.demandType) {
setHideKeys(row.demandType);
}
}
}
// if (!isCreate) {
// if (row) {
// if (row.demandType) {
// setHideKeys(row.demandType);
// }
// }
// }
};
const loadTableForm = () => {};
@@ -40,17 +40,17 @@ const hideKeys = ref(['downAttachments']);
* @param type
*/
const changeFun = async (val: any) => {
if (val.type === 'form') {
if (val.val.key === 'demandType') {
const formData = demandRef.value.tableFormRef.getFormDataFun();
const simTypeList: any = commonStore.getDictData(val.val.data.demandType);
demandRef.value.tableFormRef.setOptionsFun('simType', simTypeList.A);
// const formData = tableFormRef.value.getFormDataFun();
// tableFormRef.value.setFormDataFun({ ...formData, simType: '' });
demandRef.value.editFormInfo = { ...formData, simType: '' };
setHideKeys(val.val.val);
}
}
// if (val.type === 'form') {
// if (val.val.key === 'demandType') {
// const formData = demandRef.value.tableFormRef.getFormDataFun();
// const simTypeList: any = commonStore.getDictData(val.val.data.demandType);
// demandRef.value.tableFormRef.setOptionsFun('simType', simTypeList.A);
// // const formData = tableFormRef.value.getFormDataFun();
// // tableFormRef.value.setFormDataFun({ ...formData, simType: '' });
// demandRef.value.editFormInfo = { ...formData, simType: '' };
// setHideKeys(val.val.val);
// }
// }
};
const setHideKeys = (key: string) => {
if (key === 'DEMAND_TYPE1') {

View File

@@ -0,0 +1,46 @@
export const getDemandHideKeys = (key: string) => {
const allKeys = [
'simulationPurpose',
'animationPurpose',
'robotBrand',
'axis',
'beatDemand',
'useType',
'styleRequirements',
'viewRequirements',
'referenceData',
'deviceMessage',
'materialAndCraftsmanship',
];
let keys: string[] = [];
if (key.indexOf('有限元') !== -1 || key.indexOf('DISCIPLINE_TYPE') !== -1) {
const finiteElementKeys = ['simulationPurpose'];
keys = allKeys.filter((item) => !finiteElementKeys.includes(item));
} else if (key.indexOf('动画') !== -1) {
const animationKeys = ['animationPurpose', 'robotBrand', 'axis', 'beatDemand'];
keys = allKeys.filter((item) => !animationKeys.includes(item));
} else if (key.indexOf('工业') !== -1) {
const industrialKeys = [
'useType',
'styleRequirements',
'viewRequirements',
'referenceData',
'deviceMessage',
'materialAndCraftsmanship',
];
keys = allKeys.filter((item) => !industrialKeys.includes(item));
} else if (key.indexOf('机器人') !== -1) {
const robotKeys = ['robotBrand', 'axis'];
keys = allKeys.filter((item) => !robotKeys.includes(item));
} else if (key.indexOf('公差') !== -1) {
const toleranceKeys = [''];
keys = allKeys.filter((item) => !toleranceKeys.includes(item));
}
return keys;
};
export const getUserSimulationType = () => {
return '有限元';
// return '动画';
// return '工业';
};

View File

@@ -1,15 +1,23 @@
<template>
<div class="gl-page-content-full">
<taskTable
showIndex
ref="exeTableRef"
tableName="SIMULATION_TASK_SEND_LIST"
:params="taskParams"
exportFileName="我分发的任务列表"
:action-list="actionList"
@show="editTaskFun"
>
</taskTable>
<div class="tabs">
<el-tabs v-model="isSend" type="card">
<el-tab-pane label="未分发任务" :name="false" />
<el-tab-pane label="已分发任务" :name="true" />
</el-tabs>
</div>
<div class="task-table-list">
<taskTable
showIndex
ref="exeTableRef"
tableName="SIMULATION_TASK_EXECUTE_LIST"
:params="taskParams"
exportFileName="我分发的任务列表"
:action-list="actionList"
@show="editTaskFun"
>
</taskTable>
</div>
<Dialog
v-model="formVisible"
:loading="loadingInterface"
@@ -23,7 +31,7 @@
ref="tableFormRef"
tableName="SIMULATION_TASK_SEND_LIST"
@load="formLoad"
v-model:data="editFormInfo"
v-model:data="editRow"
@change="changeFun"
:formAttrs="formAttrs"
>
@@ -47,11 +55,12 @@
@update-fn="updateTaskFun"
>
</taskDetail>
<SendTask v-if="showSendDia" v-model:diaVisible="showSendDia" :taskInfo="editRow"></SendTask>
</div>
</template>
<script setup lang="ts">
import { deleteTaskApi, updateTaskStatusApi } from '@/api/project/task';
import { updateTaskStatusApi } from '@/api/project/task';
// import BaseTable from '@/components/common/table/baseTable.vue';
import {
disposeDisabledExeStatus,
@@ -62,13 +71,16 @@ import {
} from '@/utils/enum/task';
import { ElMessage } from 'element-plus';
import taskTable from '../components/taskTable.vue';
import { nextTick, onMounted, ref } from 'vue';
import { computed, nextTick, onMounted, ref } from 'vue';
import Dialog from '@/components/common/dialog/index.vue';
import TableForm from '@/components/common/table/tableForm.vue';
import dayjs from 'dayjs';
import { getMemberListIds } from '@/utils/task';
import { isNumber } from 'lodash-es';
import taskDetail from '@/views/task/projectDetail/components/taskDetail.vue';
import { enableConfigByTenant, TENANT_ENUM } from '@/tenants/tenant';
import SendTask from './sendTask.vue';
import { changeTaskStatusCommon } from '../taskPage';
const props = defineProps({
actionList: {
@@ -96,21 +108,49 @@ const formAttrs = ref({
},
});
const taskParams = ref({ type: 3 });
const isSend = ref(false);
const taskParams = computed(() => {
if (isSend.value) {
// 已分发的任务
return { type: 3 };
} else {
// 未分发的任务
return { type: 4 };
}
});
const closeFun = () => {
formVisible.value = false;
};
const showSendDia = ref(false);
const actionList = ref([
{
title: '编辑',
type: 'primary',
click: (row: any) => {
editTaskFun(row);
// console.log('tag9', row['tag9'], enableConfigByTenant([TENANT_ENUM.LYRIC]));
// 从需求来的任务,走分发逻辑,lyric定制逻辑
if (
!isSend.value &&
enableConfigByTenant([TENANT_ENUM.LYRIC]) &&
row['tag9'] === 'FROM_DEMAND'
) {
showSendDia.value = true;
// editRow.value = row;
} else {
// 仿真策划出来的任务,走编辑逻辑
editTaskFun(row);
}
editRow.value = {
...row,
achieveStatus: row.achieveStatus + '',
eMemberList: getMemberListIds(row.eMemberList),
planTime: [row.beginTime, row.endTime],
};
},
},
...props.actionList,
{
title: '详情',
@@ -120,14 +160,23 @@ const actionList = ref([
},
},
{
title: '删除',
title: '驳回',
type: 'danger',
needConfirm: true,
confirmTip: '确认删除吗?',
confirmTip: '确认驳回吗?',
click: (row: any) => {
deleteTaskFun(row.uuid);
changeTaskStatus(row, TASK_PROCESS_STATUS.REJECTED);
},
},
// {
// title: '删除',
// type: 'danger',
// needConfirm: true,
// confirmTip: '确认删除吗?',
// click: (row: any) => {
// deleteTaskFun(row.uuid);
// },
// },
]);
const editRow = ref();
@@ -137,7 +186,7 @@ const editTaskFun = (row: any) => {
nextTick(() => {
formLoad();
});
setFormData(editRow.value);
// setFormData(editRow.value);
};
const showTaskDetailDialog = ref(false);
@@ -148,43 +197,50 @@ const showTaskDetailFun = (row: any) => {
currentTaskInfo.value = row;
};
const editFormInfo = ref({});
// const editFormInfo = ref({});
const changeFun = async () => {
const formData = tableFormRef.value.getFormDataFun();
editFormInfo.value = formData;
// const formData = tableFormRef.value.getFormDataFun();
// editFormInfo.value = formData;
};
const setFormData = (row: any) => {
if (tableFormRef.value) {
// tableFormRef.value.setFormDataFun({
// ...row,
// achieveStatus: row.achieveStatus + '',
// eMemberList: getMemberListIds(row.eMemberList),
// });
editFormInfo.value = {
...row,
achieveStatus: row.achieveStatus + '',
eMemberList: getMemberListIds(row.eMemberList),
};
}
};
// const setFormData = (row: any) => {
// if (tableFormRef.value) {
// // tableFormRef.value.setFormDataFun({
// // ...row,
// // achieveStatus: row.achieveStatus + '',
// // eMemberList: getMemberListIds(row.eMemberList),
// // });
// editFormInfo.value = {
// ...row,
// achieveStatus: row.achieveStatus + '',
// eMemberList: getMemberListIds(row.eMemberList),
// };
// }
// };
const deleteTaskFun = async (uuid: string) => {
const res: any = await deleteTaskApi({ taskIdList: [uuid] });
if (res.code === 200) {
ElMessage({
message: '删除成功!',
type: 'success',
});
const changeTaskStatus = async (row: any, status: string) => {
if (await changeTaskStatusCommon(row, status)) {
exeTableRef.value.tableRef.resetFun();
} else {
ElMessage({
message: res.msg,
type: 'error',
});
exeTableRef.value.initTaskCount();
}
};
// const deleteTaskFun = async (uuid: string) => {
// const res: any = await deleteTaskApi({ taskIdList: [uuid] });
// if (res.code === 200) {
// ElMessage({
// message: '删除成功!',
// type: 'success',
// });
// exeTableRef.value.tableRef.resetFun();
// } else {
// ElMessage({
// message: res.msg,
// type: 'error',
// });
// }
// };
const formLoad = () => {
// nextTick(() => {
const exeStatusList = TASK_PROCESS_STATUS_OPTIONS.map((item: any) => {
@@ -203,7 +259,7 @@ const formLoad = () => {
});
tableFormRef.value.setOptionsFun('exeStatus', exeStatusList);
tableFormRef.value.setOptionsFun('achieveStatus', achieveStatusList);
setFormData(editRow.value);
// setFormData(editRow.value);
// });
};
@@ -309,3 +365,8 @@ const updateTaskFun = async (info: any) => {
};
onMounted(() => {});
</script>
<style lang="scss" scoped>
.task-table-list {
height: calc(100% - 55px) !important;
}
</style>

View File

@@ -0,0 +1,481 @@
<template>
<Dialog
:loading="loadingInterface"
v-model="diaVisible"
diaTitle="分发任务"
:width="500"
:height="500"
@close="closeSendFun"
show-footer
>
<el-form ref="sendFormRef" :rules="sendFormRules" :model="sendForm" label-width="auto">
<el-form-item label="上层节点:" prop="insertIndex">
<el-tree-select
ref="taskTreeRef"
filterable
:check-strictly="true"
v-model="sendForm.insertIndex"
:data="indexTreeData"
node-key="uuid"
:props="{ label: 'nodeName', value: 'uuid' }"
default-expand-all
:render-after-expand="false"
>
<template #default="{ data: { nodeName } }">
{{ nodeName }}
</template>
</el-tree-select>
</el-form-item>
<el-form-item label="所属学科:">
<el-select class="loadcase-lib" :teleported="false" v-model="sendForm.discipline">
<el-option
v-for="item in disciplineList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<div class="" v-if="formDemandAndNotFiniteElement">
<el-form-item label="场景选择:">
<el-select class="loadcase-lib" :teleported="false" v-model="sendForm.scenario">
<el-option
v-for="item in scenarioList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
<div v-else>
<el-form-item label="插入模式:">
<el-radio-group v-model="insertTaskMode">
<el-radio value="lib" size="large">从工况库选任务</el-radio>
<el-radio value="custom" size="large">自定义任务名称</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="库名称:" prop="currentLoadcaseLib" v-if="insertTaskMode === 'lib'">
<el-select
class="loadcase-lib"
:teleported="false"
v-model="sendForm.currentLoadcaseLib"
:props="{ label: 'poolName', value: 'value' }"
value-key="poolName"
:fit-input-width="true"
@change="changeLoadcaseLibFun"
>
<el-option
v-for="item in loadcaseLibList"
:key="item.value"
:label="item.poolName"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item
label="版本:"
prop="currentLoadcaseLibVersion"
v-if="insertTaskMode === 'lib'"
>
<el-select
class="version"
:teleported="false"
v-model="sendForm.currentLoadcaseLibVersion"
:props="{ label: 'poolVersion', value: 'value' }"
value-key="poolVersion"
:fit-input-width="true"
@change="changeLoadcaseVersionFun"
>
<el-option
v-for="item in loadcaseLibVersionList"
:key="item.value"
:label="item.poolVersion"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="选择工况:" prop="chooseTaskList" v-if="insertTaskMode === 'lib'">
<el-select-v2
v-model="sendForm.chooseTaskList"
:options="libTaskList"
placeholder="请选择"
filterable
clearable
value-key="uuid"
:multiple="false"
>
<template #default="{ item }">
<div class="flex items-center">
<img class="loadcase-img" src="@/assets/imgs/projectTree/loadcase.png" alt="" />
<span>{{ item.label }}</span>
</div>
</template>
</el-select-v2>
</el-form-item>
<el-form-item label="任务名称:" prop="taskName" v-if="insertTaskMode === 'custom'">
<el-input v-model="sendForm.taskName"></el-input>
</el-form-item>
</div>
<el-form-item label="计划时间">
<el-date-picker
v-model="sendForm.planTime"
type="datetimerange"
placeholder="选择日期"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item label="仿真执行人:" prop="eMemberList">
<UserSelect v-model="sendForm.eMemberList" :multiple="true" />
</el-form-item>
</el-form>
<template #footer>
<div>
<el-button @click="closeSendFun">取消</el-button>
<el-button :loading="loadingInterface" type="primary" @click="sendTaskConfirmFun"
>确认</el-button
>
</div>
</template>
</Dialog>
</template>
<script lang="ts" setup>
import { getMemberListIds, getTagMapList } from '@/utils/task';
import { computed, nextTick, reactive, ref } from 'vue';
import { getTaskTreeFun } from '../../projectDetail/components/projectApi';
import { filterTask } from '../../projectDetail/components/project';
import { tagSortList } from '@/utils/enum/node';
import { ElMessage } from 'element-plus';
import Dialog from '@/components/common/dialog/index.vue';
import {
getAllTaskPoolApi,
getTaskPoolLoadcasesApi,
getTaskPoolVersionsApi,
} from '@/api/task/taskpool';
// import { useDict } from '@/utils/useDict';
import { onMounted } from 'vue';
import UserSelect from '@/components/common/userSelect/index.vue';
import { modifyNodeTaskPerformanceApi } from '@/api/project/node';
import { CommonStore } from '@/stores/common';
import { batchUpdateTaskStatusApi } from '@/api/project/task';
import { getUserSimulationType } from '@/tenants/lyric/views/task/lyricTask';
import { enableConfigByTenant, TENANT_ENUM } from '@/tenants/tenant';
const props = defineProps({
diaVisible: {
type: Boolean,
default: false,
},
taskInfo: {
type: Object,
},
});
const emits = defineEmits(['update:diaVisible']);
// const { DISCIPLINE_TYPE } = useDict('DISCIPLINE_TYPE');
const diaVisible = computed({
get() {
return props.diaVisible;
},
set(val) {
emits('update:diaVisible', val);
},
});
const sendForm = reactive<any>({
beginTime: '',
endTime: '',
taskName: '',
eMemberList: '',
chooseTaskList: [],
currentLoadcaseLibVersion: '',
currentLoadcaseLib: '',
});
const loadingInterface = ref(false);
const closeSendFun = () => {
emits('update:diaVisible', false);
loadingInterface.value = false;
};
/**
* lib 工况库
* custom 自定义
*/
const insertTaskMode = ref('lib');
const loadcaseLibList = ref<any[]>([]);
const loadcaseLibVersionList = ref();
const changeLoadcaseLibFun = (lib: any) => {
sendForm.currentLoadcaseLib = lib;
queryLoadcaseLibVersionsFun();
};
const changeLoadcaseVersionFun = () => {
getLoadcaseList();
};
const queryPoolListFun = async () => {
const res: any = await getAllTaskPoolApi({ bCurrent: true });
if (res.code === 200 && Array.isArray(res.data)) {
loadcaseLibList.value = res.data.reverse();
} else {
loadcaseLibList.value = [];
}
if (loadcaseLibList.value.length > 0) {
sendForm.currentLoadcaseLib = loadcaseLibList.value[0];
queryLoadcaseLibVersionsFun();
}
};
const queryLoadcaseLibVersionsFun = async () => {
const req = {
poolName: sendForm.currentLoadcaseLib.poolName,
};
const res: any = await getTaskPoolVersionsApi(req);
if (res.code === 200 && res.data && Array.isArray(res.data) && res.data.length > 0) {
loadcaseLibVersionList.value = res.data;
if (loadcaseLibVersionList.value.length > 0) {
sendForm.currentLoadcaseLibVersion = loadcaseLibVersionList.value[0];
}
} else {
loadcaseLibVersionList.value = [];
}
// await queryTaskPoolFun();
getLoadcaseList();
};
const libTaskList = ref<any[]>([]);
const getLoadcaseList = async () => {
const res: any = await getTaskPoolLoadcasesApi({
poolName: sendForm.currentLoadcaseLib.poolName,
version: sendForm.currentLoadcaseLibVersion.poolVersion,
});
if (res.code === 200) {
libTaskList.value = res.data.map((item: any) => {
return {
label: item.nodeName,
value: item,
};
});
}
};
const sendFormRef = ref();
const sendFormRules = reactive<any>({
insertIndex: [{ required: true, message: '请选择上层节点', trigger: 'change' }],
currentLoadcaseLib: [{ required: true, message: '请选择工况库', trigger: 'change' }],
currentLoadcaseLibVersion: [{ required: true, message: '请选择工况库版本', trigger: 'change' }],
chooseTaskList: [{ required: true, message: '请选择分发的任务', trigger: 'change' }],
eMemberList: [{ required: true, message: '请选择仿真执行人', trigger: 'change' }],
taskName: [{ required: true, message: '请填写任务名称', trigger: 'blur' }],
});
const taskTreeRef = ref();
const simulationType = getUserSimulationType();
/** 来自需求的任务,且非有限元仿真 */
const formDemandAndNotFiniteElement = computed(() => {
return props.taskInfo?.tag9 === 'FROM_DEMAND' && simulationType.indexOf('有限元') === -1;
});
const sendTaskConfirmFun = () => {
sendFormRef.value.validate(async (valid: boolean) => {
if (valid) {
// if (insertTaskMode.value === 'lib') {
// if (sendForm.chooseTaskList.value.length === 0) {
// ElMessage.error('请选择任务');
// return;
// }
// }
loadingInterface.value = true;
const parentNodeInfo = taskTreeRef.value.getCurrentNode();
const tagProperty: { [key: string]: any } = {};
// 保留tag10的信息获取tag10的信息再存起来
tagSortList.concat(['tag10']).forEach((item: any) => {
// tagProperty[item] = parentNodeInfo[item] ? parentNodeInfo[item].split(',') : [];
tagProperty[item] = parentNodeInfo[item] ? parentNodeInfo[item] : '';
});
let params: any = {};
const pMemberListStr = getMemberListIds(sendForm.pMemberList);
const payAttentionMemberStr = getMemberListIds(sendForm.payAttentionMemberList);
let hasRepeatTask = false;
debugger;
// 手动再添加一下工况的指标
const performanceList: any[] = [];
if (insertTaskMode.value === 'lib' && !formDemandAndNotFiniteElement.value) {
const chooseTaskList = [sendForm.chooseTaskList];
const addTaskList = chooseTaskList.map((item: any) => {
if (parentNodeInfo?.taskList?.length > 0) {
parentNodeInfo?.taskList.forEach((task: any) => {
if (task.nodeName === item.nodeName) {
// 利元亨会基于同名任务再次分发如果当前任务uuid与已有任务uuid相同则可以继续分发
if (enableConfigByTenant([TENANT_ENUM.LYRIC])) {
if (task.uuid !== sendForm.uuid) {
ElMessage.warning(item.nodeName + '任务已存在,无法再创建!');
hasRepeatTask = true;
}
} else {
ElMessage.warning(item.nodeName + '任务已存在,无法再创建!');
hasRepeatTask = true;
}
}
});
}
item.children.forEach((child: any) => {
performanceList.push({
...child,
pid: sendForm.uuid,
parentId: sendForm.uuid,
});
});
return {
taskName: item.nodeName,
// 基于已有uuid任务将工况任务信息复制到已有任务上
taskId: sendForm.uuid,
...item,
...tagProperty,
beginTime: sendForm.planTime ? sendForm.planTime[0] : '',
endTime: sendForm.planTime ? sendForm.planTime[1] : '',
pMemberList: pMemberListStr,
payAttentionMemberList: payAttentionMemberStr,
eMemberList: sendForm.eMemberList,
aMemberList: getMemberListIds(sendForm.aMemberList),
discipline: sendForm.discipline,
};
});
if (hasRepeatTask) {
loadingInterface.value = false;
return;
}
params = addTaskList[0];
} else {
parentNodeInfo?.taskList.forEach((task: any) => {
if (task.nodeName === sendForm.nodeName) {
// 利元亨会基于同名任务再次分发如果当前任务uuid与已有任务uuid相同则可以继续分发
if (enableConfigByTenant([TENANT_ENUM.LYRIC])) {
if (task.uuid !== sendForm.uuid) {
ElMessage.warning(sendForm.nodeName + '任务已存在,无法再创建!');
hasRepeatTask = true;
}
} else {
ElMessage.warning(sendForm.nodeName + '任务已存在,无法再创建!');
hasRepeatTask = true;
}
}
});
if (hasRepeatTask) {
loadingInterface.value = false;
return;
}
params = {
// 从需求来,且不是有限元仿真
taskName: formDemandAndNotFiniteElement.value ? sendForm.scenario : sendForm.taskName,
taskId: sendForm.uuid,
nodeId: parentNodeInfo.uuid,
...tagProperty,
beginTime: sendForm.planTime ? sendForm.planTime[0] : '',
endTime: sendForm.planTime ? sendForm.planTime[1] : '',
pMemberList: pMemberListStr,
payAttentionMemberList: payAttentionMemberStr,
eMemberList: sendForm.eMemberList,
aMemberList: getMemberListIds(sendForm.aMemberList),
discipline: sendForm.discipline,
};
}
if (params.id) {
delete params.id;
}
if (params.uuid) {
delete params.uuid;
}
const res: any = await batchUpdateTaskStatusApi({
req: [{ ...props.taskInfo, ...params }],
});
if (res.code === 200) {
ElMessage.success('任务分发成功!');
if (performanceList.length > 0) {
modifyNodeTaskPerformanceApi({
addNodeList: performanceList,
tagMap: getTagMapList(),
});
}
closeSendFun();
} else {
ElMessage.error('任务分发失败!');
}
loadingInterface.value = false;
}
});
};
const indexTreeData = ref<any[]>([]);
const sendTaskFun = async (row: any) => {
// props.diaVisible = true;
nextTick(() => {
sendFormRef.value.resetFields();
});
insertTaskMode.value = 'lib';
sendForm.currentLoadcaseLib = '';
sendForm.currentLoadcaseLibVersion = '';
sendForm.chooseTaskList = [];
sendForm.taskName = '';
sendForm.beginTime = '';
if (row.beginTime && row.endTime) {
sendForm.planTime = [row.beginTime, row.endTime];
} else {
sendForm.planTime = null;
}
sendForm.endTime = '';
sendForm.eMemberList = '';
// sendForm.aMemberList = row.aMemberList;
if (row.simType) {
sendForm.discipline = row.simType;
}
const taskTree = await getTaskTreeFun(row.newTag1, row.newTag2);
indexTreeData.value = filterTask(taskTree);
sendForm.insertIndex = row.newTag5;
taskTreeRef.value.setCurrentKey(row.newTag5, true);
await queryPoolListFun();
// for (const key in sendForm) {
// sendForm[key] = '';
// }
for (const key in row) {
if (key !== 'eMemberList') {
sendForm[key] = row[key];
}
}
sendForm.taskName = row.demandName;
sendForm.eMemberList = getMemberListIds(row.eMemberList);
};
const commonStore = CommonStore();
const scenarioList = ref<any[]>([]);
const disciplineList = ref<any[]>([]);
onMounted(() => {
sendTaskFun(props.taskInfo);
if (formDemandAndNotFiniteElement.value) {
// 从角色获取
scenarioList.value = commonStore.getDictData(simulationType + '场景').A;
disciplineList.value = commonStore.getDictData(simulationType).A;
}
});
</script>
<style lang="less" scoped></style>