From ba69fd139edbfb76688a667b3ca5dd619ea37b48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Thu, 2 Feb 2023 00:50:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/xm/core/xmTestCase.js | 2 + src/api/xm/rpt.js | 25 ++ src/views/xm/rpt/product/menuSort.vue | 2 +- src/views/xm/rpt/product/questionSort.vue | 22 +- src/views/xm/rpt/reportIndex.vue | 17 +- src/views/xm/rpt/testCase/testCaseSort.vue | 342 +++++++++++++++++++++ 6 files changed, 402 insertions(+), 8 deletions(-) create mode 100644 src/api/xm/rpt.js create mode 100644 src/views/xm/rpt/testCase/testCaseSort.vue diff --git a/src/api/xm/core/xmTestCase.js b/src/api/xm/core/xmTestCase.js index 8784aa75..300c6611 100644 --- a/src/api/xm/core/xmTestCase.js +++ b/src/api/xm/core/xmTestCase.js @@ -30,6 +30,8 @@ export const addXmTestCase = params => { return axios.post(`${base}/xm/core/xmTe //批量修改某些字段 export const editSomeFieldsXmTestCase = params => { return axios.post(`${base}/xm/core/xmTestCase/editSomeFields`, params); }; +//测试用例排行榜 +export const getXmTestCaseSort = params => { return axios.get(`${base}/xm/core/xmTestCase/getXmTestCaseSort`, { params: params }); }; /**-------------------------前端mng|add|edit界面公共函数---------------请写在下面----------------------------------------------- */ diff --git a/src/api/xm/rpt.js b/src/api/xm/rpt.js new file mode 100644 index 00000000..f1c1f111 --- /dev/null +++ b/src/api/xm/rpt.js @@ -0,0 +1,25 @@ + +//格式化柱状图底部名称太长换行 +export const formatterLabel = (params) => { + var newParamsName = '' + const paramsNameNumber = params.length + const provideNumber = 4 // 单行显示文字个数 + const rowNumber = Math.ceil(paramsNameNumber / provideNumber) + if (paramsNameNumber > provideNumber) { + for (let p = 0; p < rowNumber; p++) { + var tempStr = '' + var start = p * provideNumber + var end = start + provideNumber + if (p === rowNumber - 1) { + tempStr = params.substring(start, paramsNameNumber) + } else { + tempStr = params.substring(start, end) + '\n' + } + newParamsName += tempStr + } + } else { + newParamsName = params + } + return newParamsName +}; + \ No newline at end of file diff --git a/src/views/xm/rpt/product/menuSort.vue b/src/views/xm/rpt/product/menuSort.vue index e127deb7..b6b5ab00 100644 --- a/src/views/xm/rpt/product/menuSort.vue +++ b/src/views/xm/rpt/product/menuSort.vue @@ -10,7 +10,7 @@ - + diff --git a/src/views/xm/rpt/product/questionSort.vue b/src/views/xm/rpt/product/questionSort.vue index 7c7dc961..35421bfc 100644 --- a/src/views/xm/rpt/product/questionSort.vue +++ b/src/views/xm/rpt/product/questionSort.vue @@ -10,7 +10,7 @@ - + @@ -97,6 +97,7 @@ import { initSimpleDicts } from '@/api/mdp/meta/item';//下拉框数据查询 import { mapGetters } from 'vuex' + import {formatterLabel} from '@/api/xm/rpt.js';//全局公共库 import { getXmQuestionSort } from '@/api/xm/core/xmQuestion'; import XmProjectSelect from '@/views/xm/core/components/XmProjectSelect';//项目选择 @@ -255,7 +256,10 @@ calculable: true, xAxis: { type: 'category', - data: this.legendCpd + data: this.legendCpd, + axisLabel: { + formatter: formatterLabel + } }, yAxis: { type: 'value' @@ -340,7 +344,19 @@ params.orderBy = orderBys.join(","); } getXmQuestionSort(params).then(res=>{ - this.xmQuestionSorts=res.data.data + var data=res.data.data + if(data){ + data.sort((a,b)=>{ + if(a.valueb.value){ + return -1 + }else{ + return 0 + } + }) + } + this.xmQuestionSorts=data }) }, diff --git a/src/views/xm/rpt/reportIndex.vue b/src/views/xm/rpt/reportIndex.vue index ec06cc2c..cc59242d 100644 --- a/src/views/xm/rpt/reportIndex.vue +++ b/src/views/xm/rpt/reportIndex.vue @@ -82,7 +82,11 @@ - + + + + + @@ -135,6 +139,7 @@ import xmTestPlanCaseUserDist from './testPlan/testPlanCaseUserDist' import xmTestDayTimesCalc from './testPlan/testDayTimesCalc' import xmTestCaseToPlanCalc from './testPlan/testCaseToPlanCalc' + import xmTestCaseSort from './testCase/testCaseSort' import xmIterationMenuDayTrend from './iteration/menuDayTrend' @@ -168,7 +173,8 @@ xmTestPlanCaseExecStatusDist,xmTestPlanCaseUserDist,xmQuestionRetestDist,xmQuestionStateDist, xmQuestionAskUserSort,xmQuestionHandlerUserSort,xmQuestionFuncSort,xmQuestionMenuSort,xmTestDayTimesCalc,xmTestCaseToPlanCalc, - xmBranchWorkItemDayList,xmBranchQuestionDayTrend,xmBranchQuestionDayAccumulate,xmBranchMenuDayTrend,xmBranchMenuDayAccumulate + xmBranchWorkItemDayList,xmBranchQuestionDayTrend,xmBranchQuestionDayAccumulate,xmBranchMenuDayTrend,xmBranchMenuDayAccumulate, + xmTestCaseSort, }, props:['xmProduct','xmIteration','xmProject','xmTestCasedb','xmTestPlan','category'], @@ -251,9 +257,12 @@ {isChecked:false,rptName:'项目结算工时每月趋势',category:'项目级',ref:'xmProjectWorkloadSetMonthList',desc:'统计项目每月登记工时、结算工时数量分布情况',img:datasetLink }, - //测试级报表 + //测试级报表 {isChecked:false,rptName:'测试用例规划分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseToPlanCalc',desc:'显示用例被规划到测试计划中的次数统计',img:pieSimple }, - + {isChecked:false,rptName:'测试用例需求覆盖分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseMenuSort',desc:'统计测试用例需求覆盖情况',img:bar }, + {isChecked:false,rptName:'测试用例模块覆盖分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseFuncSort',desc:'统计测试用例覆盖各个模块的情况',img:bar }, + {isChecked:false,rptName:'测试用例负责人排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseCuserSort',desc:'统计测试团队每个人负责的测试用例数并进行排序',img:bar }, + {isChecked:false,rptName:'测试用例执行状态分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestPlanCaseExecStatusDist',desc:'按测试用例执行结果统计,通过、失败、忽略、阻塞',img:pieSimple }, {isChecked:false,rptName:'测试用例执行用户分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestPlanCaseUserDist',desc:'统计测试用例负责人用例执行情况',img:bar }, {isChecked:false,rptName:'缺陷回归分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionRetestDist',desc:'统计项目中缺陷在回归测试中分布情况,跟踪缺陷的重新打开率;',img:pieSimple }, diff --git a/src/views/xm/rpt/testCase/testCaseSort.vue b/src/views/xm/rpt/testCase/testCaseSort.vue new file mode 100644 index 00000000..ffea72f5 --- /dev/null +++ b/src/views/xm/rpt/testCase/testCaseSort.vue @@ -0,0 +1,342 @@ + + + + + \ No newline at end of file