From b5f76b8674b05abc457f42a14a802472c8ddfea8 Mon Sep 17 00:00:00 2001 From: soga_wyj <1768429639@qq.com> Date: Tue, 16 Dec 2025 20:41:33 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=A1=B5=E9=9D=A21-7=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/data/statistics/index.vue | 51 +++++++++++++++++++++++++---- src/views/system/logs/index.vue | 2 +- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/views/data/statistics/index.vue b/src/views/data/statistics/index.vue index 27e6dd3..be50352 100644 --- a/src/views/data/statistics/index.vue +++ b/src/views/data/statistics/index.vue @@ -314,11 +314,42 @@ import { } from '@/api/project/node'; import ProjectSelect from '@/components/common/projectSelect/index.vue'; import { TASK_CALCULATE_STATUS_OBJ, TASK_PROCESS_STATUS_OBJ } from '@/utils/enum/task'; +import { getThemeColor } from '@/utils/theme'; +import { get } from 'lodash-es'; const userGroupOptions = ref([]); const disciplineOptions = ref([]); +const statusColorList = [ + getThemeColor('--el-color-info-light-5'), + getThemeColor('--el-color-primary'), + getThemeColor('--el-color-danger'), + getThemeColor('--el-color-success'), + getThemeColor('--el-color-warning'), +]; +const performanceColorList = [ + getThemeColor('--el-color-info-light-5'), + getThemeColor('--el-color-success'), +]; +const difficultyCountColorList = [ + getThemeColor('--el-color-success'), + getThemeColor('--el-color-success-light-5'), + getThemeColor('--el-color-warning-light-5'), + getThemeColor('--el-color-warning'), + getThemeColor('--el-color-danger-light-5'), + getThemeColor('--el-color-danger'), + + 'rgba(23, 92, 229, 0.1)', + 'rgba(23, 92, 229, 0.3)', + 'rgba(23, 92, 229, 0.5)', +]; +// 封装方法,根据对象的某个属性对对象数组进行排序 +const sortObjectArray = (arr: any, key: any) => { + return arr.sort((a: any, b: any) => { + return a[key] - b[key]; + }); +}; // const projectStorageSpaceStatisticsFormData = ref({ // userId: '', @@ -400,8 +431,12 @@ const initUserProjectStatistics = async () => { series: [ { type: 'bar', + name: '项目数量', barWidth: '30%', data: yData, + itemStyle: { + color: getThemeColor('--el-color-primary'), + }, }, ], }; @@ -463,10 +498,10 @@ const getUserGroupTaskCompleteStatistics = async () => { }; const initUserTaskComplete = async () => { const { xData, seriesData, legendData } = await getUserGroupTaskCompleteStatistics(); - // 模拟接口延时 userTaskCompleteChartRef.value.commonChartRef.disposeEchartsByKey('chart-2'); userTaskCompleteChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -574,7 +609,9 @@ const initUserDifficultyCoefficientStatistics = async () => { // 模拟接口延时 userDifficultyCoefficientChartRef.value.commonChartRef.disposeEchartsByKey('chart-3'); + console.log(seriesData, 'seriesData'); userDifficultyCoefficientChartRef.value.commonChartRef.option = { + color: difficultyCountColorList, title: { textStyle: { fontSize: 20, @@ -630,7 +667,7 @@ const initUserDifficultyCoefficientStatistics = async () => { }, ] : null, - series: seriesData, + series: sortObjectArray(seriesData, 'name'), }; userDifficultyCoefficientChartRef.value.commonChartRef.initChart(); }; @@ -696,6 +733,7 @@ const initTaskCompletionAtWorkstations = async () => { taskCompletionAtWorkstationsChartRef.value.commonChartRef.disposeEchartsByKey('chart-4'); taskCompletionAtWorkstationsChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -807,6 +845,7 @@ const initTaskCompletionAtDiscipline = async () => { taskCompletionAtDisciplineChartRef.value.commonChartRef.disposeEchartsByKey('chart-5'); taskCompletionAtDisciplineChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -915,7 +954,8 @@ const initPerformanceCompletionAtWorkstations = async () => { } performanceCompletionAtWorkstationsChartRef.value.commonChartRef.disposeEchartsByKey('chart-6'); performanceCompletionAtWorkstationsChartRef.value.commonChartRef.option = { - color: ['#37a93d', '#de4231', '#808080'], + // color: ['#37a93d', '#de4231', '#808080'], + color: performanceColorList, title: { show: false, }, @@ -1029,7 +1069,8 @@ const initPerformanceCompletionAtDiscipline = async () => { performanceCompletionAtDisciplineChartRef.value.commonChartRef.disposeEchartsByKey('chart-7'); performanceCompletionAtDisciplineChartRef.value.commonChartRef.option = { - color: ['#37a93d', '#de4231', '#808080'], + // color: ['#37a93d', '#de4231', '#808080'], + color: performanceColorList, title: { show: false, }, @@ -1135,8 +1176,6 @@ const initReviewPassed = async () => { } } - console.log(seriesData, 'seriesData'); - reviewPassedChartRef.value.commonChartRef.disposeEchartsByKey('chart-8'); reviewPassedChartRef.value.commonChartRef.option = { color: ['#808080', '#b6d634', '#37a93d', '#de4231'], diff --git a/src/views/system/logs/index.vue b/src/views/system/logs/index.vue index ae2bc93..0e52bef 100644 --- a/src/views/system/logs/index.vue +++ b/src/views/system/logs/index.vue @@ -2,7 +2,7 @@
- +
From 080c6214fe20c3f6a92d7bc7fbd46adbce3ee9a4 Mon Sep 17 00:00:00 2001 From: soga_wyj <1768429639@qq.com> Date: Tue, 16 Dec 2025 20:54:13 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81console?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/data/statistics/index.vue | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/views/data/statistics/index.vue b/src/views/data/statistics/index.vue index be50352..fbfc560 100644 --- a/src/views/data/statistics/index.vue +++ b/src/views/data/statistics/index.vue @@ -315,7 +315,6 @@ import { import ProjectSelect from '@/components/common/projectSelect/index.vue'; import { TASK_CALCULATE_STATUS_OBJ, TASK_PROCESS_STATUS_OBJ } from '@/utils/enum/task'; import { getThemeColor } from '@/utils/theme'; -import { get } from 'lodash-es'; const userGroupOptions = ref([]); @@ -339,10 +338,6 @@ const difficultyCountColorList = [ getThemeColor('--el-color-warning'), getThemeColor('--el-color-danger-light-5'), getThemeColor('--el-color-danger'), - - 'rgba(23, 92, 229, 0.1)', - 'rgba(23, 92, 229, 0.3)', - 'rgba(23, 92, 229, 0.5)', ]; // 封装方法,根据对象的某个属性对对象数组进行排序 const sortObjectArray = (arr: any, key: any) => { @@ -609,7 +604,6 @@ const initUserDifficultyCoefficientStatistics = async () => { // 模拟接口延时 userDifficultyCoefficientChartRef.value.commonChartRef.disposeEchartsByKey('chart-3'); - console.log(seriesData, 'seriesData'); userDifficultyCoefficientChartRef.value.commonChartRef.option = { color: difficultyCountColorList, title: { From cc9e060d7104d6598162b8ba7da66bf00b2019e8 Mon Sep 17 00:00:00 2001 From: JiangSheng Date: Wed, 17 Dec 2025 10:29:08 +0800 Subject: [PATCH 3/5] =?UTF-8?q?refactor:=20=E5=B7=A5=E5=86=B5=E5=BA=93?= =?UTF-8?q?=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../condition/components/taskPool.vue | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/views/competenceCenter/condition/components/taskPool.vue b/src/views/competenceCenter/condition/components/taskPool.vue index b3e8da8..47c2073 100644 --- a/src/views/competenceCenter/condition/components/taskPool.vue +++ b/src/views/competenceCenter/condition/components/taskPool.vue @@ -746,26 +746,38 @@ const onVersionChangeFun = () => { }); }; const extractTableData: any = ref([]); -const queryTaskPoolFun = async () => { - if (!currentPoolBriefVersion.value) { +const queryTaskPoolFun = async (poolBriefVersion?: any) => { + const version = poolBriefVersion || currentPoolBriefVersion.value; + if (!version) { return; } const req = { - poolName: currentPoolBriefVersion.value.poolName, - version: currentPoolBriefVersion.value.poolVersion, + poolName: version.poolName, + version: version.poolVersion, }; + console.log('[工况库] 开始加载数据...'); loading.value = true; + const startTime = performance.now(); const res: any = await getTaskPoolApi(req); + const apiTime = performance.now(); + console.log(`[工况库] getTaskPool 请求耗时: ${(apiTime - startTime).toFixed(2)}ms`); loading.value = false; - let tree = []; + let tree: any = []; if (res.code === 200 && res.data.poolBrief && res.data && res.data.nodes) { + const transformStart = performance.now(); tree = transformPoolNodesToTree(res.data.nodes); + console.log(`[工况库] 数据转换耗时: ${(performance.now() - transformStart).toFixed(2)}ms`); tableData.value = tree; - originalSnapshot = cloneDeep(tree); isEmptyPool.value = false; if (currentTableType.value === TableViewType.LIST) { mergeListTableColumnsFun(res.data.nodes); } + nextTick(() => { + console.log(`[工况库] 总渲染耗时: ${(performance.now() - startTime).toFixed(2)}ms`); + setTimeout(() => { + originalSnapshot = cloneDeep(tree); + }, 0); + }); expandAllFun(); } else { tableData.value = []; @@ -858,9 +870,9 @@ const queryTaskPoolPerformanceFun = async () => { performanceData.value = transformPoolNodesToTree(res.data); } }; -const refreshTreeFun = async () => { +const refreshTreeFun = async (poolBriefVersion?: any) => { if (props.pageType === 'loadcase') { - await queryTaskPoolFun(); + await queryTaskPoolFun(poolBriefVersion); } if (props.pageType === 'performance') { await queryTaskPoolPerformanceFun(); @@ -877,17 +889,17 @@ const queryVersionsFun = async () => { poolName: currentPoolBrief.value.poolName, }; const res: any = await getTaskPoolVersionsApi(req); + let targetVersion = null; if (res.code === 200 && res.data && Array.isArray(res.data) && res.data.length > 0) { versionList.value = res.data; - if (versionList.value.length > 0) { - currentPoolBriefVersion.value = versionList.value[0]; - } + targetVersion = res.data[0]; + currentPoolBriefVersion.value = targetVersion; } else { versionList.value = []; currentPoolBriefVersion.value = null; tableData.value = []; } - await refreshTreeFun(); + await refreshTreeFun(targetVersion); }; const addPoolModalVisible = ref(false); const addPoolFun = () => { From fc94122d8b2bb7eda8acf01af22394483977ab97 Mon Sep 17 00:00:00 2001 From: soga_wyj <1768429639@qq.com> Date: Wed, 17 Dec 2025 10:44:38 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=88=86=E6=9E=90=E7=9C=8B=E6=9D=BF=E9=A2=9C=E8=89=B2=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E3=80=81=E5=A2=9E=E5=8A=A0=E4=B8=A4=E4=B8=AA=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=EF=BC=8C=E5=9B=BE=E8=A1=A8=E6=9A=82=E6=97=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/i18n/en.ts | 2 + src/utils/i18n/zh.ts | 2 + .../components/statisticAnalysis.vue | 310 ++++++++++++++++-- 3 files changed, 291 insertions(+), 23 deletions(-) diff --git a/src/utils/i18n/en.ts b/src/utils/i18n/en.ts index 4ecfecd..3f41deb 100644 --- a/src/utils/i18n/en.ts +++ b/src/utils/i18n/en.ts @@ -224,6 +224,8 @@ const lang = { 统计分析: { 任务完成统计工位: 'Task Completion Statistics (Workspace)', 任务完成统计学科: 'Task Completion Statistics (Discipline)', + 任务达成统计工位: 'Task Quality Statistics (Workspace)', + 任务达成统计学科: 'Task Quality Statistics (Discipline)', 指标完成统计工位: 'Performance Completion Statistics (Workspace)', 指标完成统计学科: 'Performance Completion Statistics (Discipline)', 成员任务进度统计: 'Member Task Progress Statistics', diff --git a/src/utils/i18n/zh.ts b/src/utils/i18n/zh.ts index 0844f35..133a693 100644 --- a/src/utils/i18n/zh.ts +++ b/src/utils/i18n/zh.ts @@ -221,6 +221,8 @@ const lang = { 统计分析: { 任务完成统计工位: '任务完成统计(工位)', 任务完成统计学科: '任务完成统计(学科)', + 任务达成统计工位: '任务达成统计(工位)', + 任务达成统计学科: '任务达成统计(学科)', 指标完成统计工位: '指标完成统计(工位)', 指标完成统计学科: '指标完成统计(学科)', 成员任务进度统计: '成员任务进度统计', diff --git a/src/views/task/projectDetail/components/statisticAnalysis.vue b/src/views/task/projectDetail/components/statisticAnalysis.vue index da80f80..cca1764 100644 --- a/src/views/task/projectDetail/components/statisticAnalysis.vue +++ b/src/views/task/projectDetail/components/statisticAnalysis.vue @@ -43,6 +43,27 @@ -->
+ +
+ + +
+
+ + +
import { ref, onMounted, reactive, watchEffect } from 'vue'; import EchartCard from '@/components/common/echartCard/index.vue'; -import UserSelect from '@/components/common/userSelect/index.vue'; +// import UserSelect from '@/components/common/userSelect/index.vue'; import { userQueryGroupApi } from '@/api/system/user'; import { getUserGroupProjectStatisticsApi, - getUserGroupTaskCompleteStatisticsApi, + // getUserGroupTaskCompleteStatisticsApi, queryNodeListApi, - getWorkstationReviewStatisticsApi, - getUserGroupDifficultyStatisticsApi, - getCommonCompleteStatisticsApi, + // getWorkstationReviewStatisticsApi, + // getUserGroupDifficultyStatisticsApi, + // getCommonCompleteStatisticsApi, } from '@/api/project/node'; import { getTaskCompleteStatisticsApi, @@ -226,6 +247,7 @@ import { // import ProjectSelect from '@/components/common/projectSelect/index.vue'; import { useDict } from '@/utils/useDict'; import { TASK_CALCULATE_STATUS_OPTIONS } from '@/utils/enum/task'; +import { getThemeColor } from '@/utils/theme'; const { TASK_EXE_STATUS } = useDict('TASK_EXE_STATUS'); const taskCalculateStatusLegendData = TASK_CALCULATE_STATUS_OPTIONS.map((item) => ({ @@ -262,6 +284,37 @@ const disciplineOptions = ref([]); // }); const userProjectChartRef = ref(); +// 进度状态颜色列表:已驳回、未开始、进行中、已完成、已暂停、已关闭、已延期 +const statusColorList = [ + getThemeColor('--el-color-danger'), + getThemeColor('--el-color-info-light-5'), + getThemeColor('--el-color-primary'), + getThemeColor('--el-color-success'), + getThemeColor('--el-color-warning'), + getThemeColor('--el-color-info-light-7'), + getThemeColor('--el-color-danger-light-5'), +]; +// 完成情况颜色列表:未分析、不合格、合格 +const completionStatusColorList = [ + getThemeColor('--el-color-info'), + getThemeColor('--el-color-danger'), + getThemeColor('--el-color-success'), +]; +const difficultyCountColorList = [ + getThemeColor('--el-color-success'), + getThemeColor('--el-color-success-light-5'), + getThemeColor('--el-color-warning-light-5'), + getThemeColor('--el-color-warning'), + getThemeColor('--el-color-danger-light-5'), + getThemeColor('--el-color-danger'), +]; +// 封装方法,根据对象的某个属性对对象数组进行排序 +const sortObjectArray = (arr: any, key: any) => { + return arr.sort((a: any, b: any) => { + return a[key] - b[key]; + }); +}; + const getUserGroupProjectStatistics = async () => { const xData: any = []; const yData: any = []; @@ -349,9 +402,9 @@ const userTaskCompleteFormData = ref({ tag1: '', tag2: '', }); -const userTaskCompleteProjectChangeFun = async () => { - await queryUserTaskCompletion(); -}; +// const userTaskCompleteProjectChangeFun = async () => { +// await queryUserTaskCompletion(); +// }; const getUserTaskCompleteStatistics = async () => { const xData: any = []; const seriesData: any = []; @@ -395,6 +448,7 @@ const queryUserTaskCompletion = async () => { const { xData, seriesData } = await getUserTaskCompleteStatistics(); userTaskCompleteChartRef.value.commonChartRef.disposeEchartsByKey('chart-2'); userTaskCompleteChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -499,6 +553,7 @@ const queryUserDifficultStatistics = async () => { userDifficultyCoefficientChartRef.value.commonChartRef.disposeEchartsByKey('chart-3'); userDifficultyCoefficientChartRef.value.commonChartRef.option = { + color: difficultyCountColorList, title: { textStyle: { fontSize: 20, @@ -554,15 +609,16 @@ const queryUserDifficultStatistics = async () => { }, ] : null, - series: seriesData, + // series: seriesData, + series: sortObjectArray(seriesData, 'name'), }; userDifficultyCoefficientChartRef.value.commonChartRef.initChart(); }; const taskCompletionAtWorkstationsChartRef = ref(); -const taskCompletionAtWorkstationsFormData = reactive({ - tag1: '', -}); +// const taskCompletionAtWorkstationsFormData = reactive({ +// tag1: '', +// }); const queryTaskCompletionByWorkspace = async () => { let xData: any = []; const seriesData: any = []; @@ -604,6 +660,7 @@ const queryTaskCompletionByWorkspace = async () => { } taskCompletionAtWorkstationsChartRef.value.commonChartRef.disposeEchartsByKey('chart-4'); taskCompletionAtWorkstationsChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -654,9 +711,9 @@ const queryTaskCompletionByWorkspace = async () => { taskCompletionAtWorkstationsChartRef.value.commonChartRef.initChart(); }; -const initTaskCompletionAtDisciplineFormData = reactive({ - tag1: '', -}); +// const initTaskCompletionAtDisciplineFormData = reactive({ +// tag1: '', +// }); const taskCompletionAtDisciplineChartRef = ref(); const queryTaskCompletionByDiscipline = async () => { @@ -702,6 +759,7 @@ const queryTaskCompletionByDiscipline = async () => { taskCompletionAtDisciplineChartRef.value.commonChartRef.disposeEchartsByKey('chart-5'); taskCompletionAtDisciplineChartRef.value.commonChartRef.option = { + color: statusColorList, title: { show: false, }, @@ -752,11 +810,109 @@ const queryTaskCompletionByDiscipline = async () => { taskCompletionAtDisciplineChartRef.value.commonChartRef.initChart(); }; +// 新增 任务达成统计 —— 工位 +const taskQualityAtWorkstationsChartRef = ref(); +const queryTaskQualityByWorkspace = async () => { + let xData: any = []; + const seriesData: any = []; + // todo 接口待确认 + const res: any = await getPerformanceCompleteStatisticsApi({ + resultTagType: 'tag5', + tag1: currentProjectUuid.value, + tag2: '', + tag3: '', + tag4: '', + tag5: '', + tag6: '', + tag7: '', + tag8: '', + tag9: '', + tag10: '', + }); + + if (res && res.code === 200) { + xData = res.data.result.map((item: any) => { + return item.name; + }); + + for (let i = 0; i < TASK_CALCULATE_STATUS_OPTIONS.length; i++) { + const item = TASK_CALCULATE_STATUS_OPTIONS[i]; + const obj: any = { + name: item.label, + type: 'bar', + emphasis: { + focus: 'series', + }, + data: [], + }; + + for (let j = 0; j < res.data.result.length; j++) { + obj.data.push(res.data.result[j]?.statusCount[item.value] || 0); + } + + seriesData.push(obj); + } + } + taskQualityAtWorkstationsChartRef.value.commonChartRef.disposeEchartsByKey('chart-Quality-1'); + taskQualityAtWorkstationsChartRef.value.commonChartRef.option = { + // color: ['#808080', '#de4231', '#37a93d'], + color: completionStatusColorList, + title: { + show: false, + }, + tooltip: { + trigger: 'axis', + }, + legend: { + show: true, + top: '0%', + left: 'center', + data: taskCalculateStatusLegendData, + }, + grid: { + top: '10%', + bottom: '10%', + left: '5%', + right: '5%', + }, + xAxis: { + type: 'category', + data: xData, + }, + yAxis: { + type: 'value', + }, + dataZoom: + xData.length > 4 + ? [ + { + type: 'slider', + show: true, + xAxisIndex: [0], + start: 0, + end: 100, + textStyle: { + color: 'transparent', + }, + maxValueSpan: 4, + minValueSpan: 4, + moveHandleSize: 10, + height: 0, + filterMode: 'empty', + bottom: 15, + }, + ] + : null, + series: seriesData, + }; + taskQualityAtWorkstationsChartRef.value.commonChartRef.initChart(); +}; + const performanceCompletionAtWorkstationsChartRef = ref(); -const queryPerfCompletionByWorkspaceFormData = reactive({ - tag1: '', -}); +// const queryPerfCompletionByWorkspaceFormData = reactive({ +// tag1: '', +// }); const queryPerfCompletionByWorkspace = async () => { let xData: any = []; @@ -800,7 +956,8 @@ const queryPerfCompletionByWorkspace = async () => { } performanceCompletionAtWorkstationsChartRef.value.commonChartRef.disposeEchartsByKey('chart-6'); performanceCompletionAtWorkstationsChartRef.value.commonChartRef.option = { - color: ['#808080', '#de4231', '#37a93d'], + // color: ['#808080', '#de4231', '#37a93d'], + color: completionStatusColorList, title: { show: false, }, @@ -852,10 +1009,110 @@ const queryPerfCompletionByWorkspace = async () => { performanceCompletionAtWorkstationsChartRef.value.commonChartRef.initChart(); }; +// 新增 任务达成统计 —— 学科 +const taskQualityAtDisciplineChartRef = ref(); +const queryTaskQualityByDiscipline = async () => { + let xData: any = []; + const seriesData: any = []; + // todo 接口待确认 + const res: any = await getPerformanceCompleteStatisticsApi({ + resultTagType: 'tag6', + tag1: currentProjectUuid.value, + tag2: '', + tag3: '', + tag4: '', + tag5: '', + tag6: '', + tag7: '', + tag8: '', + tag9: '', + tag10: '', + }); + + if (res && res.code === 200) { + xData = res.data.result.map((item: any) => { + return item.name; + }); + + for (let i = 0; i < TASK_CALCULATE_STATUS_OPTIONS.length; i++) { + const item = TASK_CALCULATE_STATUS_OPTIONS[i]; + const obj: any = { + name: item.label, + type: 'bar', + emphasis: { + focus: 'series', + }, + data: [], + }; + + for (let j = 0; j < res.data.result.length; j++) { + obj.data.push(res.data.result[j]?.statusCount[item.value] || 0); + } + + seriesData.push(obj); + } + } + + taskQualityAtDisciplineChartRef.value.commonChartRef.disposeEchartsByKey('chart-Quality-2'); + taskQualityAtDisciplineChartRef.value.commonChartRef.option = { + // color: ['#808080', '#de4231', '#37a93d'], + color: completionStatusColorList, + title: { + show: false, + }, + tooltip: { + trigger: 'axis', + }, + legend: { + show: true, + top: '0%', + left: 'center', + data: taskCalculateStatusLegendData, + }, + grid: { + top: '10%', + bottom: '10%', + left: '5%', + right: '5%', + }, + xAxis: { + type: 'category', + data: xData, + }, + yAxis: { + type: 'value', + }, + dataZoom: + xData.length > 4 + ? [ + { + type: 'slider', + show: true, + xAxisIndex: [0], + start: 0, + end: 100, + textStyle: { + color: 'transparent', + }, + maxValueSpan: 4, + minValueSpan: 4, + moveHandleSize: 10, + height: 0, + filterMode: 'empty', + bottom: 15, + }, + ] + : null, + series: seriesData, + }; + taskQualityAtDisciplineChartRef.value.commonChartRef.initChart(); +}; + const performanceCompletionAtDisciplineChartRef = ref(); -const queryPerfCompletionByDisciplineFormData = reactive({ - tag1: '', -}); + +// const queryPerfCompletionByDisciplineFormData = reactive({ +// tag1: '', +// }); const queryPerfCompletionByDiscipline = async () => { let xData: any = []; @@ -900,7 +1157,8 @@ const queryPerfCompletionByDiscipline = async () => { performanceCompletionAtDisciplineChartRef.value.commonChartRef.disposeEchartsByKey('chart-7'); performanceCompletionAtDisciplineChartRef.value.commonChartRef.option = { - color: ['#808080', '#de4231', '#37a93d'], + // color: ['#808080', '#de4231', '#37a93d'], + color: completionStatusColorList, title: { show: false, }, @@ -1007,6 +1265,12 @@ const initData = async () => { await queryUserTaskCompletion(); // 难度系数统计:难度系数有1、2、3、4、5,统计1有几个,2有几个。。。 await queryUserDifficultStatistics(); + + // 新增 + // 按照工位统计任务质量达成情况 + await queryTaskQualityByWorkspace(); + // 按照学科统计任务质量达成情况 + await queryTaskQualityByDiscipline(); }; watchEffect(() => { if (props.projectUuid) { From fea810ac9e2013d68102327b56e6a4e9c55be0d8 Mon Sep 17 00:00:00 2001 From: soga_wyj <1768429639@qq.com> Date: Wed, 17 Dec 2025 10:54:43 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E5=81=87?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/projectDetail/components/statisticAnalysis.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/task/projectDetail/components/statisticAnalysis.vue b/src/views/task/projectDetail/components/statisticAnalysis.vue index cca1764..5865fff 100644 --- a/src/views/task/projectDetail/components/statisticAnalysis.vue +++ b/src/views/task/projectDetail/components/statisticAnalysis.vue @@ -1266,11 +1266,11 @@ const initData = async () => { // 难度系数统计:难度系数有1、2、3、4、5,统计1有几个,2有几个。。。 await queryUserDifficultStatistics(); - // 新增 + // 新增 todo 暂时没接口 // 按照工位统计任务质量达成情况 - await queryTaskQualityByWorkspace(); - // 按照学科统计任务质量达成情况 - await queryTaskQualityByDiscipline(); + // await queryTaskQualityByWorkspace(); + // // 按照学科统计任务质量达成情况 + // await queryTaskQualityByDiscipline(); }; watchEffect(() => { if (props.projectUuid) {