mege
This commit is contained in:
@@ -74,6 +74,14 @@ export const dataUpdateFileApi = (params: any, onProgress?: any, options?: any)
|
||||
return upload(`${PREFIX}data/updateFile`, params, onProgress, options);
|
||||
};
|
||||
|
||||
export const prepareUpdateFileInfoApi = (params: any) => {
|
||||
return post(`${PREFIX}data/prepareUpdateFileInfo`, params);
|
||||
};
|
||||
|
||||
export const updateFileCallbackApi = (params: any) => {
|
||||
return post(`${PREFIX}data/updateFileCallback`, params);
|
||||
};
|
||||
|
||||
export const fileSearchApi = (params: any) => {
|
||||
return post(`${PREFIX}data/fileSearch`, params);
|
||||
};
|
||||
|
||||
@@ -89,3 +89,12 @@ export const stopHpcJobAdapterApi = (params: any) => {
|
||||
export const delHpcJobsAdapterApi = (params: any) => {
|
||||
return post(`${PREFIX}pbs/delHpcJobsAdapter`, params);
|
||||
};
|
||||
|
||||
/**
|
||||
* mockSubmit-中车hpc提交
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export const mockSubmitApi = (params: any) => {
|
||||
return post(`${PREFIX}pbs/mockSubmit`, params);
|
||||
};
|
||||
|
||||
@@ -238,3 +238,12 @@ export const togglePinProjectApi = (params: any) => {
|
||||
export const getTaskAchieveStatisticsByDisciplineApi = (params: any) => {
|
||||
return post(`${PREFIX}node/getTaskAchieveStatisticsByDiscipline`, params);
|
||||
};
|
||||
|
||||
// 删除团队成员
|
||||
export const deleteNodeMemberApi = (params: any) => {
|
||||
return post(`${PREFIX}node/deleteNodeMember`, params);
|
||||
};
|
||||
// 新增团队成员
|
||||
export const addNodeMemberApi = (params: any) => {
|
||||
return post(`${PREFIX}node/addNodeMember`, params);
|
||||
};
|
||||
|
||||
@@ -62,7 +62,11 @@ import { ref, onMounted, watch } from 'vue';
|
||||
import { Upload, Delete } from '@element-plus/icons-vue';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { formatFileSize } from '@/utils/file';
|
||||
import { chunkUploadToMinioApi, chunkUploadCallbackApi } from '@/api/data/data';
|
||||
import {
|
||||
chunkUploadToMinioApi,
|
||||
chunkUploadCallbackApi,
|
||||
updateFileCallbackApi,
|
||||
} from '@/api/data/data';
|
||||
import emitter from '@/utils/eventBus';
|
||||
import { chunkUploadToLocalApi } from '@/api/pbs/pbs';
|
||||
|
||||
@@ -278,7 +282,7 @@ const callBackFun = (data: any) => {
|
||||
2: chunkUploadCallbackApi, // 知识库后处理
|
||||
4: chunkUploadCallbackApi, // 交付物后处理
|
||||
5: chunkUploadCallbackApi, // 项目文件接口后处理
|
||||
6: chunkUploadCallbackApi, // 知识库编辑接口后处理
|
||||
6: updateFileCallbackApi, // 知识库编辑接口后处理
|
||||
};
|
||||
|
||||
if (taskType) {
|
||||
|
||||
@@ -28,7 +28,9 @@
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-else-if="flowNodeParamData.nodeTypeValue === '3'"
|
||||
v-else-if="
|
||||
flowNodeParamData.nodeTypeValue === '3' || flowNodeParamData.label === '动力学计算'
|
||||
"
|
||||
@click="flowClickFun('startOtherNodeFun')"
|
||||
>计算</el-button
|
||||
>
|
||||
|
||||
@@ -7,7 +7,12 @@
|
||||
<el-button type="primary" icon="finished" @click="openAddApproveUserFun">
|
||||
{{ $t('工况库.提交评审') }}
|
||||
</el-button>
|
||||
<el-button type="danger" icon="delete" @click="openDelPoolFun">
|
||||
<el-button
|
||||
v-if="!enableConfigByTenant([TENANT_ENUM.LYRIC])"
|
||||
type="danger"
|
||||
icon="delete"
|
||||
@click="openDelPoolFun"
|
||||
>
|
||||
{{ $t('工况库.删除库') }}
|
||||
</el-button>
|
||||
<div class="pool-select select-form">
|
||||
@@ -68,6 +73,7 @@
|
||||
</div>
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
v-if="!enableConfigByTenant([TENANT_ENUM.LYRIC])"
|
||||
:content="$t('工况库.切换至一维表格视图')"
|
||||
placement="top"
|
||||
:disabled="currentTableType !== TableViewType.CARD"
|
||||
@@ -153,7 +159,10 @@
|
||||
</div>
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
v-if="currentTableType === TableViewType.TREE"
|
||||
v-if="
|
||||
currentTableType === TableViewType.TREE &&
|
||||
!enableConfigByTenant([TENANT_ENUM.LYRIC])
|
||||
"
|
||||
:content="$t('工况库.切换至一维表格视图')"
|
||||
placement="top"
|
||||
ref="switchFromTreeToListTooltipRef"
|
||||
@@ -330,6 +339,7 @@ import { TABLE_NAME } from '@/utils/enum/tableName';
|
||||
import { CommonStore } from '@/stores/common';
|
||||
import { useTaskStore } from '@/stores/taskPool';
|
||||
import { jumpPage } from '@/utils/common';
|
||||
import { enableConfigByTenant, TENANT_ENUM } from '@/tenants/tenant';
|
||||
|
||||
const commonStore = CommonStore();
|
||||
const taskStore = useTaskStore();
|
||||
@@ -822,6 +832,7 @@ const createTaskPoolFun = async (formData: any) => {
|
||||
approvePreviewInfo: {
|
||||
isCreate: true,
|
||||
isUpdate: false,
|
||||
currentVersion: '',
|
||||
columns,
|
||||
finalFullData: fullData,
|
||||
originalFullData: null,
|
||||
@@ -884,6 +895,7 @@ const updateTaskPoolFun = async (formData: any) => {
|
||||
approvePreviewInfo: {
|
||||
isCreate: false,
|
||||
isUpdate: true,
|
||||
currentVersion: currentPoolBriefVersion.value?.poolVersion || '',
|
||||
columns,
|
||||
originalFullData: cloneDeep(originalSnapshot),
|
||||
finalFullData: cloneDeep(fullData),
|
||||
|
||||
@@ -377,13 +377,14 @@ const lang = {
|
||||
},
|
||||
项目详情页: {
|
||||
项目详情: 'Project Detail',
|
||||
团队成员: 'Project Team Member',
|
||||
团队成员: 'Project Team Member(Project Execution Participants)',
|
||||
基本信息: 'Basic Information',
|
||||
方案维护: 'Scheme Maintenance',
|
||||
批次信息: 'Batch Information',
|
||||
产线信息: 'Production Line Information',
|
||||
项目参与人员: 'Project User',
|
||||
项目参与人员: 'Project User(From EP)',
|
||||
工位时间维护: 'Workspace Time',
|
||||
参与人员: 'Participants (Temporary Project Participants)',
|
||||
},
|
||||
仿真策划: {
|
||||
仿真策划: 'Simulation Plan',
|
||||
|
||||
@@ -372,13 +372,14 @@ const lang = {
|
||||
},
|
||||
项目详情页: {
|
||||
项目详情: '项目详情',
|
||||
团队成员: '团队成员',
|
||||
团队成员: '团队成员(参与项目执行的人员)',
|
||||
基本信息: '基本信息',
|
||||
方案维护: '方案维护',
|
||||
批次信息: '批次信息',
|
||||
产线信息: '产线信息',
|
||||
项目参与人员: '项目参与人员',
|
||||
项目参与人员: '项目参与人员(从EP拉取的项目参与人员)',
|
||||
工位时间维护: '工位时间维护',
|
||||
参与人员: '参与人员(临时新增的项目参与人员)',
|
||||
},
|
||||
仿真策划: {
|
||||
仿真策划: '仿真策划',
|
||||
|
||||
@@ -609,6 +609,7 @@ const createTaskPoolFun = async (formData: any) => {
|
||||
approvePreviewInfo: {
|
||||
isCreate: true,
|
||||
isUpdate: false,
|
||||
currentVersion: '',
|
||||
columns,
|
||||
finalFullData: fullData,
|
||||
originalFullData: null,
|
||||
@@ -666,6 +667,7 @@ const updateTaskPoolFun = async (formData: any) => {
|
||||
approvePreviewInfo: {
|
||||
isCreate: false,
|
||||
isUpdate: true,
|
||||
currentVersion: currentPoolBriefVersion.value?.poolVersion || '',
|
||||
columns,
|
||||
originalFullData: cloneDeep(originalSnapshot),
|
||||
finalFullData: cloneDeep(fullData),
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="label">
|
||||
<span v-if="isCreatePool">{{ $t('工况库.新增') }}</span
|
||||
><span v-else>{{ $t('工况库.编辑') }}</span
|
||||
>{{ $t('工况库.仿真地图库') }}:
|
||||
>{{ poolName === STANDARD_SCENE_POOL_NAME ? STANDARD_SCENE_POOL_NAME : '仿真地图库' }}:
|
||||
</div>
|
||||
<div class="content">
|
||||
<span size="large" type="success" v-if="isCreatePool"> {{ poolName }}</span>
|
||||
@@ -25,6 +25,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!isCreatePool && currentVersionText" class="preview-desc">
|
||||
基于{{ poolName === STANDARD_SCENE_POOL_NAME ? STANDARD_SCENE_POOL_NAME : '仿真地图库' }}版本
|
||||
{{ currentVersionText }} 修改内容如下
|
||||
</div>
|
||||
<div class="body">
|
||||
<loadCaseTable
|
||||
:editMode="false"
|
||||
@@ -46,6 +50,7 @@ import { nextTick, onMounted, ref, watchEffect } from 'vue';
|
||||
import loadCaseTable from '@/components/common/treeCaseTable/loadCaseTable.vue';
|
||||
import type { VxeTablePropTypes } from 'vxe-table';
|
||||
import { TABLE_NAME } from '@/utils/enum/tableName';
|
||||
import { STANDARD_SCENE_POOL_NAME } from '@/utils/node';
|
||||
|
||||
interface Props {
|
||||
data: any;
|
||||
@@ -62,6 +67,7 @@ enum PreviewAction {
|
||||
}
|
||||
|
||||
const poolName = ref();
|
||||
const currentVersionText = ref('');
|
||||
const approveContents = ref<any>(null);
|
||||
|
||||
const mergedPreviewTree = ref<any>([]);
|
||||
@@ -228,6 +234,7 @@ const initPreviewData = () => {
|
||||
|
||||
mergedPreviewTree.value = previewData;
|
||||
poolName.value = approveContents.value?.poolBrief?.poolName;
|
||||
currentVersionText.value = approvePreviewInfo.currentVersion || '';
|
||||
isCreatePool.value = Boolean(approvePreviewInfo.isCreate);
|
||||
expandAllFun();
|
||||
};
|
||||
@@ -259,6 +266,12 @@ watchEffect(() => {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.preview-desc {
|
||||
padding: 12px 0;
|
||||
font-size: 14px;
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.header {
|
||||
height: 20px;
|
||||
display: flex;
|
||||
|
||||
@@ -435,6 +435,7 @@ import analysisResult from './runPagecomponent/analysisResult.vue';
|
||||
import vehicleStabilityAnalysis_Demo from './runPagecomponent/vehicleStabilityAnalysis_Demo.vue';
|
||||
import rollingWheelForceAnalysis_Demo from './runPagecomponent/rollingWheelForceAnalysis_Demo.vue';
|
||||
import vibrationSignalAnalysis_Demo from './runPagecomponent/vibrationSignalAnalysis_Demo.vue';
|
||||
import { mockSubmitApi } from '@/api/pbs/pbs';
|
||||
|
||||
const props = defineProps({
|
||||
runInfo: {
|
||||
@@ -838,6 +839,26 @@ const continueStartRunJobFun = async () => {
|
||||
taskDefinitionKey: flowNodeData.value.nodeId,
|
||||
flowelementType: flowNodeData.value.nodeDetailInfo.type,
|
||||
});
|
||||
|
||||
if (flowNodeData.value.nodeName === '动力学计算') {
|
||||
await skipCurrentNodeFlowFun();
|
||||
|
||||
await mockSubmitApi({
|
||||
runId: props.runInfo.uuid,
|
||||
uuid: 'd03cb60715b1ee61c585b3e31405e7de',
|
||||
type: 'single',
|
||||
softwareId: flowNodeData.value.nodeId,
|
||||
software: flowNodeData.value.nodeName,
|
||||
jobName: '测试单一任务0326',
|
||||
coreNum: 4,
|
||||
jobDesc: 'HPC任务单独提交',
|
||||
hpcGroup: 'HPC_PACK',
|
||||
params: {
|
||||
licience: 'test',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (res && res.code === 200) {
|
||||
refreshFlowPage();
|
||||
}
|
||||
@@ -1313,6 +1334,11 @@ const getDictionaryDataFun = async () => {
|
||||
};
|
||||
|
||||
const skipCurrentNodeFlowFun = async () => {
|
||||
await updateFlowNodeDataInfoFun();
|
||||
|
||||
if (!flowNodeData.value?.nodeDetailInfo.asyncTaskId) {
|
||||
return;
|
||||
}
|
||||
const params = {
|
||||
asyncTaskId: flowNodeData.value?.nodeDetailInfo.asyncTaskId,
|
||||
resultJson: 'success',
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
<div class="app-icon app-text" v-else>{{ appProperty?.name.split('')[0] }}</div>
|
||||
<div class="app-info">
|
||||
<div class="app-name" :title="appProperty.name">{{ appProperty.name }}</div>
|
||||
<div class="app-tag">{{ appProperty.type }}</div>
|
||||
<div class="app-tag">
|
||||
{{ appProperty.name === '动力学计算' ? '计算节点' : appProperty.type }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="app-status">
|
||||
<div class="round" :style="{ background: getStyleFun(appProperty.status).color }"></div>
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
ref="tableRef"
|
||||
showIndex
|
||||
table-name="NODE_TASK_TEAM"
|
||||
:params="{ projectNodeId: nodeLevel1Uuid }"
|
||||
:params="queryParams"
|
||||
:api="getProjectMemberListApi"
|
||||
:actionList="type === 'temporary-add' && isMember ? actionList : []"
|
||||
:show-setting="type !== 'temporary-add'"
|
||||
>
|
||||
<template #leftOptions v-if="type === 'temporary-add' && isMember">
|
||||
<el-button type="primary" @click="diaVisible = true">新增</el-button>
|
||||
</template>
|
||||
<template #nickname="{ row }">
|
||||
{{ row.userInfo.nickname || '--' }}
|
||||
</template>
|
||||
@@ -31,6 +36,19 @@
|
||||
{{ row.userInfo.sex || '--' }}
|
||||
</template>
|
||||
</BaseTable>
|
||||
<Dialog v-model="diaVisible" diaTitle="新增人员" :width="400" @close="closeFun">
|
||||
<div>
|
||||
<TableForm ref="tableFormRef" tableName="ADD_USER_FORM" v-model:data="formData" />
|
||||
</div>
|
||||
<template #footer>
|
||||
<div>
|
||||
<el-button @click="closeFun">{{ $t('通用.取消') }}</el-button>
|
||||
<el-button type="primary" :disabled="!formData.addNodeMemberIdList" @click="submitFun">{{
|
||||
$t('通用.确定')
|
||||
}}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</Dialog>
|
||||
<!-- <div class="organization">
|
||||
<div class="level">
|
||||
<div class="node">
|
||||
@@ -77,15 +95,71 @@
|
||||
</div> -->
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { getProjectMemberListApi } from '@/api/project/node';
|
||||
import { getProjectMemberListApi, deleteNodeMemberApi, addNodeMemberApi } from '@/api/project/node';
|
||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
||||
import { ref } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import Dialog from '@/components/common/dialog/index.vue';
|
||||
import TableForm from '@/components/common/table/tableForm.vue';
|
||||
|
||||
defineProps<{
|
||||
const { t } = useI18n();
|
||||
const props = defineProps<{
|
||||
nodeLevel1Uuid: string;
|
||||
type?: string;
|
||||
isMember?: boolean;
|
||||
}>();
|
||||
|
||||
const queryParams = ref<any>({
|
||||
projectNodeId: props.nodeLevel1Uuid,
|
||||
type: props.type,
|
||||
});
|
||||
const actionList = ref<any>([
|
||||
{
|
||||
title: t('通用.删除'),
|
||||
type: 'danger',
|
||||
needConfirm: true,
|
||||
confirmTip: t('通用.确认删除吗'),
|
||||
click: (row: any) => delUserFun(row),
|
||||
},
|
||||
]);
|
||||
const tableRef = ref();
|
||||
const delUserFun = async (row: any) => {
|
||||
const params = {
|
||||
projectId: props.nodeLevel1Uuid,
|
||||
deleteNodeMemberIdList: [row.userId],
|
||||
};
|
||||
deleteNodeMemberApi(params).then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('删除成功');
|
||||
tableRef.value.resetFun();
|
||||
} else {
|
||||
ElMessage.error('删除失败');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const formData = ref<any>({});
|
||||
const diaVisible = ref(false);
|
||||
const closeFun = () => {
|
||||
formData.value.addNodeMemberIdList = '';
|
||||
diaVisible.value = false;
|
||||
};
|
||||
const submitFun = () => {
|
||||
const params = {
|
||||
projectId: props.nodeLevel1Uuid,
|
||||
addNodeMemberIdList: formData.value.addNodeMemberIdList
|
||||
? formData.value.addNodeMemberIdList.split(',')
|
||||
: [],
|
||||
};
|
||||
addNodeMemberApi(params).then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('添加成功');
|
||||
tableRef.value.resetFun();
|
||||
closeFun();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// const getProjectMemberListFun = async () => {
|
||||
// const res:any = await getProjectMemberListApi({
|
||||
|
||||
@@ -89,6 +89,15 @@
|
||||
<teamMember v-if="projectUuid" :nodeLevel1Uuid="projectUuid" />
|
||||
</div>
|
||||
<template v-if="enableConfigByTenant([TENANT_ENUM.LYRIC])">
|
||||
<!-- <div class="section-block">
|
||||
<div class="section-title">{{ $t('项目详情页.参与人员') }}</div>
|
||||
<teamMember
|
||||
v-if="projectUuid"
|
||||
type="temporary-add"
|
||||
:isMember="isMember"
|
||||
:nodeLevel1Uuid="projectUuid"
|
||||
/>
|
||||
</div> -->
|
||||
<div class="section-block">
|
||||
<div class="section-title">{{ $t('项目详情页.方案维护') }}</div>
|
||||
<SchemeMaintain ref="schemeMaintainRef" :nodeId="projectUuid" />
|
||||
|
||||
Reference in New Issue
Block a user