Browse Source

优化

master
陈裕财 3 years ago
parent
commit
b55c958bbd
  1. 4
      src/views/xm/rpt/CompsSet.vue
  2. 3
      src/views/xm/rpt/branch/branchWorkItemDayList.vue
  3. 4
      src/views/xm/rpt/branch/menuDayAccumulate.vue
  4. 4
      src/views/xm/rpt/branch/menuDayTrend.vue
  5. 4
      src/views/xm/rpt/branch/questionDayAccumulate.vue
  6. 4
      src/views/xm/rpt/branch/questionDayTrend.vue
  7. 4
      src/views/xm/rpt/iteration/IterationWorkItemDayList.vue
  8. 4
      src/views/xm/rpt/iteration/burnout.vue
  9. 4
      src/views/xm/rpt/iteration/menuDayAccumulate.vue
  10. 4
      src/views/xm/rpt/iteration/menuDayTrend.vue
  11. 4
      src/views/xm/rpt/iteration/questionDayAccumulate.vue
  12. 4
      src/views/xm/rpt/iteration/questionDayTrend.vue
  13. 4
      src/views/xm/rpt/product/menuAgeDist.vue
  14. 4
      src/views/xm/rpt/product/menuAttDist.vue
  15. 4
      src/views/xm/rpt/product/menuDayAccumulate.vue
  16. 4
      src/views/xm/rpt/product/menuDayTrend.vue
  17. 4
      src/views/xm/rpt/product/menuSort.vue
  18. 46
      src/views/xm/rpt/product/productWorkItemDayList.vue
  19. 173
      src/views/xm/rpt/product/questionAgeDist.vue
  20. 177
      src/views/xm/rpt/product/questionAttDist.vue
  21. 46
      src/views/xm/rpt/product/questionDayAccumulate.vue
  22. 46
      src/views/xm/rpt/product/questionDayTrend.vue
  23. 172
      src/views/xm/rpt/product/questionRetestDist.vue
  24. 180
      src/views/xm/rpt/product/questionSort.vue
  25. 4
      src/views/xm/rpt/project/projectWorkItemDayList.vue
  26. 4
      src/views/xm/rpt/project/projectWorkloadSetDayList.vue
  27. 4
      src/views/xm/rpt/project/projectWorkloadSetMonthList.vue
  28. 4
      src/views/xm/rpt/project/taskAgeDist.vue
  29. 4
      src/views/xm/rpt/project/taskAttDist.vue
  30. 4
      src/views/xm/rpt/project/taskDayAccumulate.vue
  31. 4
      src/views/xm/rpt/project/taskDayTrend.vue
  32. 4
      src/views/xm/rpt/project/taskSort.vue
  33. 4
      src/views/xm/rpt/reportIndex.vue
  34. 4
      src/views/xm/rpt/testCase/testCaseSort.vue
  35. 4
      src/views/xm/rpt/testPlan/testCaseToPlanCalc.vue
  36. 4
      src/views/xm/rpt/testPlan/testDayTimesCalc.vue
  37. 4
      src/views/xm/rpt/testPlan/testPlanCaseExecStatusDist.vue
  38. 4
      src/views/xm/rpt/testPlan/testPlanCaseUserDist.vue

4
src/views/xm/rpt/CompsSet.vue

@ -94,7 +94,9 @@ export default {
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'企业级' category:'企业级'
}, },
comps: [ comps: [

3
src/views/xm/rpt/branch/branchWorkItemDayList.vue

@ -102,7 +102,8 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/branch/menuDayAccumulate.vue

@ -113,7 +113,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/branch/menuDayTrend.vue

@ -103,7 +103,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/branch/questionDayAccumulate.vue

@ -101,7 +101,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/branch/questionDayTrend.vue

@ -103,7 +103,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/IterationWorkItemDayList.vue

@ -109,7 +109,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/burnout.vue

@ -141,7 +141,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/menuDayAccumulate.vue

@ -136,7 +136,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/menuDayTrend.vue

@ -138,7 +138,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/questionDayAccumulate.vue

@ -133,7 +133,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/iteration/questionDayTrend.vue

@ -137,7 +137,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/product/menuAgeDist.vue

@ -148,7 +148,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/product/menuAttDist.vue

@ -173,7 +173,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/product/menuDayAccumulate.vue

@ -122,7 +122,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/product/menuDayTrend.vue

@ -125,7 +125,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/product/menuSort.vue

@ -138,7 +138,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

46
src/views/xm/rpt/product/productWorkItemDayList.vue

@ -7,21 +7,33 @@
<div class="echart-box" :id="this.id"></div> <div class="echart-box" :id="this.id"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
</section> </section>
@ -98,7 +110,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

173
src/views/xm/rpt/product/questionAgeDist.vue

@ -7,79 +7,102 @@
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestionAgeDist">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-row>
<el-col :span="15">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)">
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="searchXmQuestionAgeDist">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
<xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select > <xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select >
@ -178,7 +201,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

177
src/views/xm/rpt/product/questionAttDist.vue

@ -7,83 +7,102 @@
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)" clearable>
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestionAttDist">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-row>
<el-col :span="15">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)">
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="searchXmQuestionAttDist">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
<xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select > <xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select >
@ -214,7 +233,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

46
src/views/xm/rpt/product/questionDayAccumulate.vue

@ -6,21 +6,33 @@
<div class="echart-box" :id="this.id"></div> <div class="echart-box" :id="this.id"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
</section> </section>
@ -124,7 +136,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

46
src/views/xm/rpt/product/questionDayTrend.vue

@ -8,21 +8,33 @@
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="日期区间">
<br>
<mdp-date-range v-model="filters" value-format="yyyy-MM-dd" start-key="startBizDate" end-key="endBizDate"></mdp-date-range>
</el-form-item>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="listXmProductStateHis">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
</section> </section>
@ -126,7 +138,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

172
src/views/xm/rpt/product/questionRetestDist.vue

@ -7,78 +7,102 @@
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestionRetestDist">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-row>
<el-col :span="15">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)">
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="searchXmQuestionRetestDist">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
<xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select > <xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select >
@ -196,7 +220,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

180
src/views/xm/rpt/product/questionSort.vue

@ -7,84 +7,102 @@
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</el-col> </el-col>
<el-col :span="6" class="border" v-show="isRptCfg">
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)">
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestionSort">查询</el-button>
</el-form-item>
</el-form>
<el-col :span="6" v-if="showParams">
<el-popover trigger="manual" v-model="filterVisible" style="float:right;" width="500">
<el-button slot="reference" style="margin-top:10px;" icon="el-icon-more" @click="filterVisible=!filterVisible"></el-button>
<el-row>
<el-button type="danger" icon="el-icon-delete" @click="doDelete">从报告移出该报表</el-button>
<el-button icon="el-icon-close" style="float:right;" @click="filterVisible=false">关闭</el-button>
</el-row>
<el-row>
<el-form :model="params" class="padding" :style="{width:'100%',overflow: 'auto'}" ref="filtersRef">
<el-row>
<el-col :span="15">
<el-form-item label="分组属性">
<el-select style="width:100px;" size="small" v-model="params.groupBy" @change="onXmQuestionSomeFieldsChange('groupBy',$event)">
<el-option v-for="i in this.groupBys" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="测试库" v-if="xmTestCasedb && xmTestCasedb.id" >
<span >{{xmTestCasedb.id}} <span v-if="xmTestCasedb.name"><br/>{{ xmTestCasedb.name }} </span> </span>
</el-form-item>
<el-form-item label="归属项目">
<xm-project-select v-if="!xmProject" ref="xmProjectSelect" style="display:inline;" :auto-select="false" :link-product-id="xmProductCpd?xmProductCpd.id:null" @row-click="onProjectSelected" @clear="onProjectClear"></xm-project-select>
<span v-else>{{xmProject.id}} <span v-if="xmProject.name"><br/>{{ xmProject.name }} </span> </span>
</el-form-item>
<el-form-item label="归属产品" >
<xm-product-select v-if="!xmProductCpd || !xmProductCpd.id" ref="xmProductSelect" style="display:inline;" :auto-select="false" :link-project-id="xmProject?xmProject.id:null" @row-click="onProductSelected" :iterationId="xmIteration?xmIteration.id:null" @clear="onProductClear"></xm-product-select>
<span v-else>{{xmProductCpd.id}} <span v-if="xmProductCpd.productName"><br/>{{ xmProductCpd.productName }} </span> </span>
</el-form-item>
<el-form-item label="归属迭代" v-if="xmIteration && xmIteration.id">
<span> {{xmIteration.id}}
<span v-if="xmIteration.iterationName"><br/>{{ xmIteration.iterationName }} </span>
</span>
</el-form-item>
<el-form-item label="归属迭代" v-else-if="filters.product && filters.product.id">
<xm-iteration-select ref="xmIterationSelect" :auto-select="false" :product-id="filters.product?filters.product.id:null" :link-project-id="xmProject?xmProject.id:null" placeholder="迭代" @row-click="onIterationSelected" @clear="onIterationClear"></xm-iteration-select>
</el-form-item>
<el-form-item label="测试计划" v-if="xmTestPlan && xmTestPlan.id">
<span> {{xmTestPlan.id}}
<span v-if="xmTestPlan.name"><br/>{{ xmTestPlan.name }} </span>
</span>
</el-form-item>
<el-form-item label="测试计划" v-else-if="filters.product && filters.product.id">
<span v-if="filters.testPlan">{{ filters.testPlan.name }}</span>
<el-button v-if="filters.testPlan" type="text" @click="filters.testPlan=null" plain icon="el-icon-circle-close">清除</el-button>
<el-button v-if="!filters.testPlan" type="text" @click="$refs['xmTestPlanSelectRef'].open()" plain>选择计划</el-button>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="缺陷状态" prop="bugStatus">
<el-select style="width:100px;" size="small" v-model="params.bugStatus" @change="onXmQuestionSomeFieldsChange('bugStatus',$event)" clearable>
<el-option v-for="i in this.dicts.bugStatus" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷类型" prop="bugType" >
<el-select style="width:100px;" size="small" v-model="params.bugType" @change="onXmQuestionSomeFieldsChange('bugType',$event)" clearable>
<el-option v-for="i in this.dicts.bugType" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="缺陷原因" prop="bugReason">
<el-select style="width:100px;" size="small" v-model="params.bugReason" @change="onXmQuestionSomeFieldsChange('bugReason',$event)" clearable>
<el-option v-for="i in this.dicts.bugReason" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="严重程度" prop="bugSeverity" >
<el-select style="width:100px;" size="small" v-model="params.bugSeverity" @change="onXmQuestionSomeFieldsChange('bugSeverity',$event)" clearable>
<el-option v-for="i in this.dicts.bugSeverity" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级别" prop="priority" >
<el-select style="width:100px;" size="small" v-model="params.priority" @change="onXmQuestionSomeFieldsChange('priority',$event)" clearable>
<el-option v-for="i in dicts.priority" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="解决方案" prop="solution" >
<el-select style="width:100px;" size="small" v-model="params.solution" @change="onXmQuestionSomeFieldsChange('solution',$event)" clearable>
<el-option v-for="i in dicts.bugSolution" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="重现频率" prop="repRate" >
<el-select style="width:100px;" size="small" v-model="params.repRate" @change="onXmQuestionSomeFieldsChange('repRate',$event)" clearable>
<el-option v-for="i in dicts.bugRepRate" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button type="primary" style="float:right;" icon="el-icon-search" @click="searchXmQuestionSort">查询</el-button>
</el-form-item>
</el-form>
</el-row>
</el-popover>
</el-col> </el-col>
</el-row> </el-row>
<xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select > <xm-test-plan-select ref="xmTestPlanSelectRef" :casedb-id="xmTestCasedb?xmTestCasedb.id:null" :product-id="xmProduct?xmProduct.id:null" :project-id="xmProject?xmProject.id:null" placeholder="迭代" @select="onXmTestPlanSelected" @clear="onXmTestPlanClear"></xm-test-plan-select >
@ -178,7 +196,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,
@ -213,6 +233,7 @@
orderFields: ["value"], // ['sex','student_id'] orderFields: ["value"], // ['sex','student_id']
orderDirs: ["desc"], // asc,desc ['asc','desc'] orderDirs: ["desc"], // asc,desc ['asc','desc']
}, },
filterVisible:false,
}//end return }//end return
},//end data },//end data
@ -274,7 +295,6 @@
toolbox: { toolbox: {
show: true, show: true,
top:"5%", top:"5%",
top:"5%",
right:"10px", right:"10px",
feature: { feature: {
dataView: { show: true, readOnly: false }, dataView: { show: true, readOnly: false },

4
src/views/xm/rpt/project/projectWorkItemDayList.vue

@ -92,7 +92,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/project/projectWorkloadSetDayList.vue

@ -103,7 +103,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/project/projectWorkloadSetMonthList.vue

@ -103,7 +103,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/project/taskAgeDist.vue

@ -126,7 +126,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/project/taskAttDist.vue

@ -156,7 +156,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/project/taskDayAccumulate.vue

@ -131,7 +131,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/project/taskDayTrend.vue

@ -125,7 +125,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/project/taskSort.vue

@ -121,7 +121,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/reportIndex.vue

@ -215,7 +215,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'项目级', category:'项目级',
}, },
showRptRef:'', showRptRef:'',

4
src/views/xm/rpt/testCase/testCaseSort.vue

@ -144,7 +144,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
iteration:null, iteration:null,

4
src/views/xm/rpt/testPlan/testCaseToPlanCalc.vue

@ -154,7 +154,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/testPlan/testDayTimesCalc.vue

@ -135,7 +135,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
category:'', category:'',
product:null, product:null,
project:null, project:null,

4
src/views/xm/rpt/testPlan/testPlanCaseExecStatusDist.vue

@ -146,7 +146,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

4
src/views/xm/rpt/testPlan/testPlanCaseUserDist.vue

@ -155,7 +155,9 @@
}, },
data() { data() {
return { return {
filters:{
filterVisible:false,
filters:{
product:null, product:null,
project:null, project:null,
testPlan:null, testPlan:null,

Loading…
Cancel
Save