update 人力负载优化

This commit is contained in:
2026-02-26 13:43:24 +08:00
parent d6113243a0
commit 9598e115a4
3 changed files with 29 additions and 27 deletions

View File

@@ -7,11 +7,12 @@
<el-radio-button label="图表" value="chart" />
</el-radio-group>
</div>
<div class="content-inner" v-if="radioData === 'table'">
<div class="content-inner" v-show="radioData === 'table'">
<BaseTable
:fullHeight="true"
ref="workloadTableRef"
:tableName="'PROJECT_TASK_WORKLOAD'"
:data="tableData"
:tableName="'SIMULATION_TASK_EXECUTE_LIST'"
:hideSearch="true"
:hidePagination="true"
>
<template #exeStatus="{ row }">
@@ -46,13 +47,12 @@
</template>
</BaseTable>
</div>
<div class="content-inner" v-else>
<div class="content-inner" v-if="radioData === 'chart'">
<EchartCard
title=""
ref="workloadChartRef"
:barType="'barChart'"
:chartsId="'workload-chart'"
@refresh="initWorkloadChartFun"
></EchartCard>
</div>
</div>
@@ -60,7 +60,7 @@
</template>
<script setup lang="ts">
import { ref, watch, nextTick } from 'vue';
import { ref, watch } from 'vue';
import Dialog from '@/components/common/dialog/index.vue';
import { listTaskWorkDaysApi } from '@/api/project/task';
import BaseTable from '@/components/common/table/baseTable.vue';
@@ -93,15 +93,10 @@ const props = withDefaults(defineProps<Props>(), {
const visible = ref(false);
const tableData = ref<any>([]);
const radioData = ref('table');
const workloadTableRef = ref();
const workloadChartRef = ref();
const changeRadioDataFun = async () => {
if (radioData.value === 'table') {
nextTick(() => {
workloadTableRef.value.setDataFun(tableData.value);
});
} else {
if (radioData.value === 'chart') {
await initWorkloadChartFun();
}
};

View File

@@ -2,7 +2,7 @@
<div class="gl-page-content gantt">
<div class="page-filter-box">
<el-form :model="filterFprmData" inline>
<slot name="filter-form"></slot>
<slot v-if="dimension !== 'person'" name="filter-form"></slot>
<el-form-item v-if="dimension === 'person'" label="用户组:">
<el-select
v-model="filterFprmData.userGroupId"
@@ -183,7 +183,7 @@ const getUserGroupFun = async () => {
if (groupList.value?.length) {
// 默认选择仿真组
filterFprmData.userGroupId =
groupList.value.filter((v) => v.groupCode === 'SIMULATION_GROUP')[0]?.id || '';
groupList.value.filter((v: any) => v.groupCode === 'SIMULATION_GROUP')[0]?.id || '';
if (filterFprmData.userGroupId) {
queryGroupUserListFun(filterFprmData.userGroupId);
}
@@ -228,6 +228,7 @@ const getWorkLoadDataFun = async () => {
if (props.dimension === 'project') {
delete param.userGroupId;
delete param.userIds;
param.projectIdList = param.projectIdList ? param.projectIdList.split(',') : [];
if (param.projectIdList.length === 0) {
return (loading.value = false);
}
@@ -600,8 +601,8 @@ watch(
const isInitialized = ref(false);
onMounted(async () => {
await getUserGroupFun();
if (props.dimension === 'person') {
await getUserGroupFun();
filterFprmData.beginTime = dayjs().subtract(3, 'month').format('YYYY-MM-DD HH:mm:ss');
filterFprmData.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
} else {

View File

@@ -2,22 +2,28 @@
<div class="project-gantt">
<workLoad
dimension="project"
:filterData="{
projectIdList: filterData.projectIdList ? filterData.projectIdList.split(',') : [],
}"
:filterData="filterData"
:showTotal="true"
:configColumns="columns"
:api="queryProjectUserLoadsApi"
:fieldMapFun="fieldMapFun"
>
<template #filter-form>
<el-form-item label="项目">
<el-form-item label="项目名称">
<ProjectSelect
class="select-width margin-right-12"
v-model="filterData.projectIdList"
multiple
/>
</el-form-item>
<el-form-item label="项目编号">
<ProjectSelect
class="select-width margin-right-12"
:showCodeList="true"
v-model="filterData.projectIdList"
multiple
/>
</el-form-item>
</template>
</workLoad>
</div>
@@ -40,7 +46,7 @@ const columns = [
label: '项目',
width: 180,
template: function (task: any) {
return `<div class="gantt-cell-ellipsis" title="${formatProjectName(task)}">${formatProjectName(task)}</div>`;
return `<div class="gantt-cell-ellipsis" title="${task.userName}">${task.userName}</div>`;
},
},
{
@@ -58,13 +64,13 @@ const columns = [
},
},
];
const formatProjectName = (data: any) => {
if (data.relateProjectName) {
return data.userName + '(参考项目:' + data.relateProjectName + '';
} else {
return data.userName;
}
};
// const formatProjectName = (data: any) => {
// if (data.relateProjectName) {
// return data.userName + '(参考项目:' + data.relateProjectName + '';
// } else {
// return data.userName;
// }
// };
// 字段映射
const fieldMapFun = (data: any) => {