update 仿真汇总看板接口调用优化
This commit is contained in:
@@ -199,11 +199,11 @@ watch(
|
||||
(newVal) => {
|
||||
if (newVal && Object.keys(newVal).length > 0) {
|
||||
const { tag1, workspace, discipline, createTimeArr, finishTimeArr } = newVal;
|
||||
if (tag1 !== undefined) formData.value.tag1 = tag1;
|
||||
if (workspace !== undefined) formData.value.workspace = workspace;
|
||||
if (discipline !== undefined) formData.value.discipline = discipline;
|
||||
if (createTimeArr !== undefined) formData.value.createTimeArr = createTimeArr;
|
||||
if (finishTimeArr !== undefined) formData.value.finishTimeArr = finishTimeArr;
|
||||
formData.value.tag1 = tag1;
|
||||
formData.value.workspace = workspace;
|
||||
formData.value.discipline = discipline;
|
||||
formData.value.createTimeArr = createTimeArr;
|
||||
formData.value.finishTimeArr = finishTimeArr;
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
|
||||
@@ -127,23 +127,16 @@ const achieveFilterData = ref<any>({
|
||||
|
||||
const handleProgressFilterUpdate = async (data: any) => {
|
||||
progressFilterData.value = data;
|
||||
await progressBarChartUpdate(data);
|
||||
await progressPieChartUpdate(data);
|
||||
await updateProgressCharts(data);
|
||||
};
|
||||
|
||||
const handleAchieveFilterUpdate = async (data: any) => {
|
||||
achieveFilterData.value = data;
|
||||
await achieveBarChartUpdate(data);
|
||||
await achievePieChartUpdate(data);
|
||||
await updateAchieveCharts(data);
|
||||
};
|
||||
|
||||
// 【1】进度统计柱状图
|
||||
const progressBarChartNodata = ref(false);
|
||||
const progressBarOption = ref<any>();
|
||||
const getCommonOptionFun = async (data: any) => {
|
||||
let xData: any = [];
|
||||
let seriesData: any = [];
|
||||
let legendData: any = [];
|
||||
// 统一更新进度统计图表(只调用一次接口)
|
||||
const updateProgressCharts = async (data: any) => {
|
||||
const res: any = await getTaskCompleteStatisticsByDisciplineApi({
|
||||
tag1: data.tag1,
|
||||
tag5: data.workspace,
|
||||
@@ -151,16 +144,17 @@ const getCommonOptionFun = async (data: any) => {
|
||||
createTimeArr: data.createTimeArr,
|
||||
finishTimeArr: data.finishTimeArr,
|
||||
});
|
||||
|
||||
if (res && res.code === 200) {
|
||||
progressBarChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
xData = res.data.result.map((item: any) => {
|
||||
// 更新柱状图
|
||||
const xData = res.data.result.map((item: any) => {
|
||||
return item.name;
|
||||
});
|
||||
legendData = Object.keys(TASK_ACHIEVE_STATUS.value.O).map((item: any) => {
|
||||
const legendData = Object.keys(TASK_ACHIEVE_STATUS.value.O).map((item: any) => {
|
||||
return TASK_ACHIEVE_STATUS.value.O[item];
|
||||
});
|
||||
const names = Object.keys(TASK_ACHIEVE_STATUS.value.O);
|
||||
seriesData = names.map((str) => ({
|
||||
const seriesData = names.map((str) => ({
|
||||
name: TASK_ACHIEVE_STATUS.value.O[str],
|
||||
type: 'bar',
|
||||
emphasis: {
|
||||
@@ -168,81 +162,54 @@ const getCommonOptionFun = async (data: any) => {
|
||||
},
|
||||
data: res.data.result.map((item: any) => item?.statusCount[str] || 0),
|
||||
}));
|
||||
}
|
||||
return { xData, seriesData, legendData };
|
||||
};
|
||||
const progressBarChartUpdate = async (data: any) => {
|
||||
const { xData, seriesData, legendData } = await getCommonOptionFun(data);
|
||||
const option = {
|
||||
color: statusColorList,
|
||||
legend: { data: legendData },
|
||||
grid: { bottom: '50' },
|
||||
xAxis: { type: 'category', data: xData || [] },
|
||||
yAxis: { type: 'value', minInterval: 1 },
|
||||
dataZoom: xData.length > 4,
|
||||
series: seriesData || [],
|
||||
};
|
||||
progressBarOption.value = option;
|
||||
};
|
||||
|
||||
// 【2】进度统计饼图
|
||||
const progressPieChartNodata = ref(false);
|
||||
const progressPieOption = ref<any>();
|
||||
const progressPieChartUpdate = async (data: any) => {
|
||||
const seriesData: { name: any; value: any }[] = [];
|
||||
const res: any = await getTaskCompleteStatisticsByDisciplineApi({
|
||||
tag1: data.tag1,
|
||||
tag5: data.workspace,
|
||||
discipline: data.discipline,
|
||||
createTimeArr: data.createTimeArr,
|
||||
finishTimeArr: data.finishTimeArr,
|
||||
});
|
||||
if (res.code === 200) {
|
||||
progressPieChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
// 把res.data.allAchieveStatus数组转换为对象的key,value默认是0
|
||||
const barOption = {
|
||||
color: statusColorList,
|
||||
legend: { data: legendData },
|
||||
grid: { bottom: '50' },
|
||||
xAxis: { type: 'category', data: xData || [] },
|
||||
yAxis: { type: 'value', minInterval: 1 },
|
||||
dataZoom: xData.length > 4,
|
||||
series: seriesData || [],
|
||||
};
|
||||
progressBarOption.value = barOption;
|
||||
progressBarChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
|
||||
// 更新饼图
|
||||
const pieSeriesData: { name: any; value: any }[] = [];
|
||||
const achieveStatusObj: any = {};
|
||||
Object.keys(TASK_ACHIEVE_STATUS.value.O).forEach((item: any) => {
|
||||
achieveStatusObj[item] = 0;
|
||||
});
|
||||
// 遍历res.data.result数组,把每个对象的statusCount属性合并到achieveStatusObj中
|
||||
res.data.result?.forEach((item: any) => {
|
||||
for (const key in item.statusCount) {
|
||||
achieveStatusObj[key] += item.statusCount[key];
|
||||
}
|
||||
});
|
||||
// 遍历achieveStatusObj,把每个对象的key转换为中文
|
||||
for (const key in achieveStatusObj) {
|
||||
seriesData.push({
|
||||
pieSeriesData.push({
|
||||
name: TASK_ACHIEVE_STATUS.value.O[key],
|
||||
value: achieveStatusObj[key],
|
||||
});
|
||||
}
|
||||
const option = getPieOptions(statusColorList, seriesData);
|
||||
progressPieOption.value = option;
|
||||
const pieOption = getPieOptions(statusColorList, pieSeriesData);
|
||||
progressPieOption.value = pieOption;
|
||||
progressPieChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
}
|
||||
};
|
||||
|
||||
// 完成情况颜色列表:未分析、不合格、合格
|
||||
const completionStatusColorList = [
|
||||
'rgb(200, 201, 204)',
|
||||
getThemeColor('--el-color-danger'),
|
||||
getThemeColor('--el-color-success'),
|
||||
];
|
||||
// 【3】任务达成统计柱状图
|
||||
const achieveBarOption = ref<any>();
|
||||
const taskCalculateStatusLegendData = TASK_CALCULATE_STATUS_OPTIONS.map((item) => ({
|
||||
name: item.label,
|
||||
}));
|
||||
const achieveBarChartUpdate = async (data: any) => {
|
||||
// 统一更新达成统计图表(只调用一次接口)
|
||||
const updateAchieveCharts = async (data: any) => {
|
||||
const res: any = await getTaskAchieveStatisticsByDisciplineApi({
|
||||
// resultTagType: 'tag6',
|
||||
tag1: data.tag1,
|
||||
tag5: data.workspace,
|
||||
discipline: data.discipline,
|
||||
createTimeArr: data.createTimeArr,
|
||||
finishTimeArr: data.finishTimeArr,
|
||||
});
|
||||
|
||||
if (res && res.code === 200) {
|
||||
// 更新柱状图
|
||||
const xData = res.data.result.map((item: any) => {
|
||||
return item.name;
|
||||
});
|
||||
@@ -254,7 +221,7 @@ const achieveBarChartUpdate = async (data: any) => {
|
||||
},
|
||||
data: res.data.result.map((resultItem: any) => resultItem?.statusCount[item.value] || 0),
|
||||
}));
|
||||
const option = {
|
||||
const barOption = {
|
||||
color: completionStatusColorList,
|
||||
legend: { data: taskCalculateStatusLegendData },
|
||||
grid: { bottom: xData.length > 4 ? '50' : '10' },
|
||||
@@ -263,46 +230,52 @@ const achieveBarChartUpdate = async (data: any) => {
|
||||
dataZoom: xData.length > 4,
|
||||
series: seriesData,
|
||||
};
|
||||
achieveBarOption.value = { ...option };
|
||||
}
|
||||
};
|
||||
// 【4】任务达成统计饼图
|
||||
const achievePieChartNodata = ref(false);
|
||||
const achievePieOption = ref<any>();
|
||||
const achievePieChartUpdate = async (data: any) => {
|
||||
const seriesData: { name: any; value: any }[] = [];
|
||||
const res: any = await getTaskAchieveStatisticsByDisciplineApi({
|
||||
// resultTagType: 'tag6',
|
||||
tag1: data.tag1,
|
||||
tag5: data.workspace,
|
||||
discipline: data.discipline,
|
||||
createTimeArr: data.createTimeArr,
|
||||
finishTimeArr: data.finishTimeArr,
|
||||
});
|
||||
if (res.code === 200) {
|
||||
achievePieChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
achieveBarOption.value = { ...barOption };
|
||||
|
||||
// 更新饼图
|
||||
const pieSeriesData: { name: any; value: any }[] = [];
|
||||
const achieveStatusObj: any = {};
|
||||
Object.keys(RESULT_ACHIEVE_STATUS.value.O).forEach((item: any) => {
|
||||
achieveStatusObj[item] = 0;
|
||||
});
|
||||
// 遍历res.data.result数组,把每个对象的statusCount属性合并到achieveStatusObj中
|
||||
res.data.result?.forEach((item: any) => {
|
||||
for (const key in item.statusCount) {
|
||||
achieveStatusObj[key] += item.statusCount[key];
|
||||
}
|
||||
});
|
||||
// 遍历achieveStatusObj,把每个对象的key转换为中文
|
||||
for (const key in achieveStatusObj) {
|
||||
seriesData.push({
|
||||
pieSeriesData.push({
|
||||
name: RESULT_ACHIEVE_STATUS.value.O[key],
|
||||
value: achieveStatusObj[key],
|
||||
});
|
||||
}
|
||||
const option = getPieOptions(completionStatusColorList, seriesData);
|
||||
achievePieOption.value = option;
|
||||
const pieOption = getPieOptions(completionStatusColorList, pieSeriesData);
|
||||
achievePieOption.value = pieOption;
|
||||
achievePieChartNodata.value = res.data.allExeStatus.length === 0;
|
||||
}
|
||||
};
|
||||
|
||||
// 进度统计图表状态
|
||||
const progressBarChartNodata = ref(false);
|
||||
const progressBarOption = ref<any>();
|
||||
const progressPieChartNodata = ref(false);
|
||||
const progressPieOption = ref<any>();
|
||||
|
||||
// 完成情况颜色列表:未分析、不合格、合格
|
||||
const completionStatusColorList = [
|
||||
'rgb(200, 201, 204)',
|
||||
getThemeColor('--el-color-danger'),
|
||||
getThemeColor('--el-color-success'),
|
||||
];
|
||||
|
||||
// 达成统计图表状态
|
||||
const achieveBarOption = ref<any>();
|
||||
const taskCalculateStatusLegendData = TASK_CALCULATE_STATUS_OPTIONS.map((item) => ({
|
||||
name: item.label,
|
||||
}));
|
||||
const achievePieChartNodata = ref(false);
|
||||
const achievePieOption = ref<any>();
|
||||
|
||||
// 饼图配置 statusColorList 颜色列表 seriesData 数据 [{ name: '分类1', value: 10 },{ name: '分类2', value: 20 }]
|
||||
const getPieOptions = (statusColorList: any, seriesData: any) => {
|
||||
const option = {
|
||||
|
||||
Reference in New Issue
Block a user