diff --git a/src/api/xm/core/xmQuestion.js b/src/api/xm/core/xmQuestion.js
index fab4752a..47d999f8 100644
--- a/src/api/xm/core/xmQuestion.js
+++ b/src/api/xm/core/xmQuestion.js
@@ -34,3 +34,10 @@ export const editStatus = params => { return axios.post(`${base}/xm/core/xmQuest
export const editXmQuestionSomeFields = params => { return axios.post(`${base}/xm/core/xmQuestion/editSomeFields`, params); };
+export const getXmQuestionAttDist = params => { return axios.get(`${base}/xm/core/xmQuestion/getXmQuestionAttDist`, { params: params }); };
+
+
+
+export const getXmQuestionAgeDist = params => { return axios.get(`${base}/xm/core/xmQuestion/getXmQuestionAgeDist`, { params: params }); };
+
+
diff --git a/src/api/xm/core/xmTask.js b/src/api/xm/core/xmTask.js
index 5ed1ee92..28e53e75 100644
--- a/src/api/xm/core/xmTask.js
+++ b/src/api/xm/core/xmTask.js
@@ -59,6 +59,15 @@ export const editXmTaskSomeFields = params => { return axios.post(`${base}/xm/co
+export const getXmTaskAttDist = params => { return axios.get(`${base}/xm/core/xmTask/getXmTaskAttDist`, { params: params }); };
+
+
+
+export const getXmTaskAgeDist = params => { return axios.get(`${base}/xm/core/xmTask/getXmTaskAgeDist`, { params: params }); };
+
+
+
+
diff --git a/src/views/xm/rpt/product/questionAgeDist.vue b/src/views/xm/rpt/product/questionAgeDist.vue
new file mode 100644
index 00000000..ac6b2c96
--- /dev/null
+++ b/src/views/xm/rpt/product/questionAgeDist.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/xm/rpt/product/questionAttDist.vue b/src/views/xm/rpt/product/questionAttDist.vue
new file mode 100644
index 00000000..af03b98f
--- /dev/null
+++ b/src/views/xm/rpt/product/questionAttDist.vue
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/xm/rpt/reportIndex.vue b/src/views/xm/rpt/reportIndex.vue
index 036aa516..439cfaa9 100644
--- a/src/views/xm/rpt/reportIndex.vue
+++ b/src/views/xm/rpt/reportIndex.vue
@@ -26,6 +26,8 @@
+
+
@@ -41,6 +43,8 @@
import xmMenuAgeDist from './product/menuAgeDist'
import xmProductWorkItemDayList from './product/productWorkItemDayList'
+ import xmQuestionAttDist from './product/questionAttDist'
+ import xmQuestionAgeDist from './product/questionAgeDist'
import pieSimple from './images/pie-simple.png'
import lineStack from './images/line-stack.png'
@@ -51,7 +55,7 @@
export default {
components: {
- xmIterationBurnout,xmMenuDayTrend,xmMenuDayAccumulate,xmMenuAttDist,xmMenuAgeDist,xmProductWorkItemDayList,
+ xmIterationBurnout,xmMenuDayTrend,xmMenuDayAccumulate,xmMenuAttDist,xmMenuAgeDist,xmProductWorkItemDayList,xmQuestionAttDist,xmQuestionAgeDist
},
props:['xmProduct','xmIteration','xmProject'],
computed: {
@@ -99,6 +103,8 @@
{rptName:'需求属性分布',category:'产品级',ref:'xmMenuAttDist',desc:'统计所有需求任意属性数量分布情况(实时数据)',img:pieSimple },
{rptName:'需求年龄分布',category:'产品级',ref:'xmMenuAgeDist',desc:'统计所有需求年龄分布情况(实时数据)',img:pieSimple },
{rptName:'产品工作项每日趋势',category:'产品级',ref:'productWorkItemDayList',desc:'统计产品每日工作项数量分布情况',img:datasetLink },
+ {rptName:'缺陷属性分布',category:'产品级',ref:'xmQuestionAttDist',desc:'统计所有缺陷任意属性数量分布情况(实时数据)',img:pieSimple },
+ {rptName:'缺陷年龄分布',category:'产品级',ref:'xmQuestionAgeDist',desc:'统计所有缺陷年龄分布情况(实时数据)',img:pieSimple },
],
}//end return
},//end data