You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

458 lines
37 KiB

4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
  1. <template>
  2. <section class="padding">
  3. <el-row :gutter="5">
  4. <el-col :span="6">
  5. <el-row>
  6. <el-select v-model="params.category" clearable @change="onCategroySelect" style="width:100%;" :disabled="!!category">
  7. <el-option v-for="(item,index) in categorys" :label="item" :value="item" :key="index"></el-option>
  8. </el-select>
  9. </el-row>
  10. <el-row :style="{overflowX:'hidden',height:maxTableHeight+'px'}" ref="table">
  11. <div class="moduleset-lg hidden-md-and-down">
  12. <div class="nav">
  13. <div class="nav_item" :class="{itemActive: item.isChecked}" v-for="(item, index) in rptListCpd" :key="index" @click="intoInfo(item, index)">
  14. <img :src="item.img" alt="">
  15. <div class="desc">
  16. <p>{{index+1}} {{item.rptName}}</p>
  17. <span>
  18. {{item.desc}}
  19. </span>
  20. </div>
  21. <i v-if="item.isChecked" class="el-icon-success"></i>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="moduleset-sm hidden-lg-and-up">
  26. <div class="nav">
  27. <div class="nav_item" :class="{itemActive: item.isChecked}" v-for="(item, index) in rptListCpd" :key="index" @click="intoInfo(item, index)">
  28. <div class="title"><p>{{index+1}} {{item.rptName}}</p></div>
  29. <div class="context">
  30. <img :src="item.img" alt=""></img>
  31. <div class="desc">
  32. <span>{{item.desc}}</span>
  33. </div>
  34. </div>
  35. <i v-if="item.isChecked" class="el-icon-success"></i>
  36. </div>
  37. </div>
  38. </div>
  39. </el-row>
  40. </el-col>
  41. <el-col :span="18">
  42. <xm-iteration-burnout v-if="showRptRef=='xmIterationBurnout'" :category="filters.category" ref="xmIterationBurnout" :xm-iteration="xmIteration" :xm-product="xmProduct" :xm-project="xmProject"></xm-iteration-burnout>
  43. <xm-menu-day-trend v-if="showRptRef=='xmMenuDayTrend'" :category="filters.category" ref="xmMenuDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-day-trend>
  44. <xm-menu-day-accumulate v-if="showRptRef=='xmMenuDayAccumulate'" :category="filters.category" ref="xmMenuDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-day-accumulate>
  45. <xm-iteration-menu-day-trend v-if="showRptRef=='xmIterationMenuDayTrend'" :category="filters.category" ref="xmIterationMenuDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-iteration-menu-day-trend>
  46. <xm-iteration-menu-day-accumulate v-if="showRptRef=='xmIterationMenuDayAccumulate'" :category="filters.category" ref="xmIterationMenuDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-iteration-menu-day-accumulate>
  47. <xm-menu-att-dist v-if="showRptRef=='xmMenuAttDist'" :category="filters.category" ref="xmMenuAttDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-att-dist>
  48. <xm-menu-age-dist v-if="showRptRef=='xmMenuAgeDist'" :category="filters.category" ref="xmMenuAgeDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-age-dist>
  49. <xm-menu-sort key="xmMenuSort" v-if="showRptRef=='xmMenuSort'" :category="filters.category" ref="xmMenuSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-sort>
  50. <xm-menu-sort key="xmMenuFuncSort" init-group-by="func_id" v-if="showRptRef=='xmMenuFuncSort'" :category="filters.category" ref="xmMenuFuncSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-sort>
  51. <xm-menu-sort key="xmMenuProductSort" init-group-by="product_id" v-if="showRptRef=='xmMenuProductSort'" :category="filters.category" ref="xmMenuProductSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-sort>
  52. <xm-menu-sort key="xmMenuIterationSort" init-group-by="iteration_id" v-if="showRptRef=='xmMenuIterationSort'" :category="filters.category" ref="xmMenuIterationSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-menu-sort>
  53. <xm-task-day-trend v-if="showRptRef=='xmTaskDayTrend'" :category="filters.category" ref="xmTaskDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-task-day-trend>
  54. <xm-task-day-accumulate v-if="showRptRef=='xmTaskDayAccumulate'" :category="filters.category" ref="xmTaskDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-task-day-accumulate>
  55. <xm-task-att-dist v-if="showRptRef=='xmTaskAttDist'" :category="filters.category" ref="xmTaskAttDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-task-att-dist>
  56. <xm-task-age-dist v-if="showRptRef=='xmTaskAgeDist'" :category="filters.category" ref="xmTaskAgeDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-task-age-dist>
  57. <xm-task-sort v-if="showRptRef=='xmTaskSort'" :category="filters.category" ref="xmTaskSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-task-sort>
  58. <xm-project-work-item-day-list v-if="showRptRef=='xmProjectWorkItemDayList'" :category="filters.category" ref="xmProjectWorkItemDayList" :xm-product="xmProduct" :xm-project="xmProject" ></xm-project-work-item-day-list>
  59. <xm-project-workload-set-day-list v-if="showRptRef=='xmProjectWorkloadSetDayList'" :category="filters.category" ref="xmProjectWorkloadSetDayList" :xm-product="xmProduct" :xm-project="xmProject"></xm-project-workload-set-day-list>
  60. <xm-project-workload-set-month-list v-if="showRptRef=='xmProjectWorkloadSetMonthList'" :category="filters.category" ref="xmProjectWorkloadSetMonthList" :xm-product="xmProduct" :xm-project="xmProject"></xm-project-workload-set-month-list>
  61. <xm-iteration-question-day-trend v-if="showRptRef=='xmIterationQuestionDayTrend'" :category="filters.category" ref="xmIterationQuestionDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-iteration-question-day-trend>
  62. <xm-iteration-question-day-accumulate v-if="showRptRef=='xmIterationQuestionDayAccumulate'" :category="filters.category" ref="xmIterationQuestionDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-iteration-question-day-accumulate>
  63. <xm-question-day-trend v-if="showRptRef=='xmQuestionDayTrend'" :category="filters.category" ref="xmQuestionDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-question-day-trend>
  64. <xm-question-day-accumulate v-if="showRptRef=='xmQuestionDayAccumulate'" :category="filters.category" ref="xmQuestionDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-question-day-accumulate>
  65. <xm-question-att-dist v-if="showRptRef=='xmQuestionAttDist'" :category="filters.category" ref="xmQuestionAttDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-att-dist>
  66. <xm-question-state-dist v-if="showRptRef=='xmQuestionStateDist'" :category="filters.category" ref="xmQuestionStateDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-state-dist>
  67. <xm-question-age-dist v-if="showRptRef=='xmQuestionAgeDist'" :category="filters.category" ref="xmQuestionAgeDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-age-dist>
  68. <xm-question-sort v-if="showRptRef=='xmQuestionSort'" :category="filters.category" ref="xmQuestionSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-sort>
  69. <xm-question-ask-user-sort v-if="showRptRef=='xmQuestionAskUserSort'" :category="filters.category" ref="xmQuestionAskUserSort" init-group-by="ask_userid" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-ask-user-sort>
  70. <xm-question-handler-user-sort v-if="showRptRef=='xmQuestionHandlerUserSort'" :category="filters.category" ref="xmQuestionHandlerUserSort" init-group-by="handler_userid" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-handler-user-sort>
  71. <xm-question-func-sort v-if="showRptRef=='xmQuestionFuncSort'" :category="filters.category" ref="xmQuestionFuncSort" init-group-by="func_id" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-func-sort>
  72. <xm-question-menu-sort v-if="showRptRef=='xmQuestionMenuSort'" :category="filters.category" ref="xmQuestionMenuSort" init-group-by="menu_id" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-menu-sort>
  73. <xm-question-retest-dist v-if="showRptRef=='xmQuestionRetestDist'" :category="filters.category" ref="xmQuestionRetestDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan"></xm-question-retest-dist>
  74. <xm-product-work-item-day-list v-if="showRptRef=='xmProductWorkItemDayList'" :category="filters.category" ref="xmProductWorkItemDayList" :xm-product="xmProduct" :xm-project="xmProject"></xm-product-work-item-day-list>
  75. <xm-iteration-work-item-day-list v-if="showRptRef=='xmIterationWorkItemDayList'" :category="filters.category" ref="xmIterationWorkItemDayList" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-iteration-work-item-day-list>
  76. <!--测试计划-->
  77. <xm-test-plan-case-exec-status-dist v-if="showRptRef=='xmTestPlanCaseExecStatusDist'" :category="filters.category" ref="xmTestPlanCaseExecStatusDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan" :xm-iteration="xmIteration"></xm-test-plan-case-exec-status-dist>
  78. <xm-test-plan-case-user-dist v-if="showRptRef=='xmTestPlanCaseUserDist'" :category="filters.category" ref="xmTestPlanCaseUserDist" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan" :xm-iteration="xmIteration"></xm-test-plan-case-user-dist>
  79. <xm-test-day-times-calc v-if="showRptRef=='xmTestDayTimesCalc'" :category="filters.category" ref="xmTestDayTimesCalc" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan" :xm-iteration="xmIteration"></xm-test-day-times-calc>
  80. <xm-test-case-to-plan-calc v-if="showRptRef=='xmTestCaseToPlanCalc'" :category="filters.category" ref="xmTestCaseToPlanCalc" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-test-plan="xmTestPlan" :xm-iteration="xmIteration"></xm-test-case-to-plan-calc>
  81. <xm-test-case-sort key="xmTestCaseSort" v-if="showRptRef=='xmTestCaseSort'" :category="filters.category" ref="xmTestCaseSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-iteration="xmIteration"/>
  82. <xm-test-case-sort key="xmTestCaseCuserSort" v-if="showRptRef=='xmTestCaseCuserSort'" init-group-by="cuserid" :category="filters.category" ref="xmTestCaseSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-iteration="xmIteration"/>
  83. <xm-test-case-sort key="xmTestCaseFuncSort" v-if="showRptRef=='xmTestCaseFuncSort'" init-group-by="func_id" :category="filters.category" ref="xmTestCaseSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-iteration="xmIteration"/>
  84. <xm-test-case-sort key="xmTestCaseMenuSort" v-if="showRptRef=='xmTestCaseMenuSort'" init-group-by="menu_id" :category="filters.category" ref="xmTestCaseSort" :xm-product="xmProduct" :xm-project="xmProject" :xm-test-casedb="xmTestCasedb" :xm-iteration="xmIteration"/>
  85. <!--企业级报表-->
  86. <xm-branch-question-day-trend v-if="showRptRef=='xmBranchQuestionDayTrend'" :category="filters.category" ref="xmBranchQuestionDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-branch-question-day-trend>
  87. <xm-branch-question-day-accumulate v-if="showRptRef=='xmBranchQuestionDayAccumulate'" :category="filters.category" ref="xmBranchQuestionDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-branch-question-day-accumulate>
  88. <xm-branch-work-item-day-list v-if="showRptRef=='xmBranchWorkItemDayList'" :category="filters.category" ref="xmBranchWorkItemDayList" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-branch-work-item-day-list>
  89. <xm-branch-menu-day-trend v-if="showRptRef=='xmBranchMenuDayTrend'" :category="filters.category" ref="xmBranchMenuDayTrend" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-branch-menu-day-trend>
  90. <xm-branch-menu-day-accumulate v-if="showRptRef=='xmBranchMenuDayAccumulate'" :category="filters.category" ref="xmBranchMenuDayAccumulate" :xm-product="xmProduct" :xm-project="xmProject" :xm-iteration="xmIteration"></xm-branch-menu-day-accumulate>
  91. </el-col>
  92. </el-row>
  93. </section>
  94. </template>
  95. <script>
  96. import util from '@/common/js/util';//全局公共库
  97. import { initSimpleDicts } from '@/api/mdp/meta/item';//下拉框数据查询
  98. import { mapGetters } from 'vuex'
  99. import xmMenuDayTrend from './product/menuDayTrend'
  100. import xmMenuDayAccumulate from './product/menuDayAccumulate'
  101. import xmMenuAttDist from './product/menuAttDist'
  102. import xmMenuAgeDist from './product/menuAgeDist'
  103. import xmMenuSort from './product/menuSort'
  104. import xmProductWorkItemDayList from './product/productWorkItemDayList'
  105. import xmTaskDayTrend from './project/taskDayTrend'
  106. import xmTaskDayAccumulate from './project/taskDayAccumulate'
  107. import xmTaskAttDist from './project/taskAttDist'
  108. import xmTaskAgeDist from './project/taskAgeDist'
  109. import xmTaskSort from './project/taskSort'
  110. import xmProjectWorkItemDayList from './project/projectWorkItemDayList'
  111. import xmProjectWorkloadSetDayList from './project/projectWorkloadSetDayList'
  112. import xmProjectWorkloadSetMonthList from './project/projectWorkloadSetMonthList'
  113. import xmQuestionDayTrend from './product/questionDayTrend'
  114. import xmQuestionDayAccumulate from './product/questionDayAccumulate'
  115. import xmQuestionAttDist from './product/questionAttDist'
  116. import xmQuestionStateDist from './product/questionAttDist'
  117. import xmQuestionAgeDist from './product/questionAgeDist'
  118. import xmQuestionSort from './product/questionSort'
  119. import xmQuestionAskUserSort from './product/questionSort'
  120. import xmQuestionHandlerUserSort from './product/questionSort'
  121. import xmQuestionFuncSort from './product/questionSort'
  122. import xmQuestionMenuSort from './product/questionSort'
  123. import xmQuestionRetestDist from './product/questionRetestDist'
  124. import xmTestPlanCaseExecStatusDist from './testPlan/testPlanCaseExecStatusDist'
  125. import xmTestPlanCaseUserDist from './testPlan/testPlanCaseUserDist'
  126. import xmTestDayTimesCalc from './testPlan/testDayTimesCalc'
  127. import xmTestCaseToPlanCalc from './testPlan/testCaseToPlanCalc'
  128. import xmTestCaseSort from './testCase/testCaseSort'
  129. import xmIterationMenuDayTrend from './iteration/menuDayTrend'
  130. import xmIterationMenuDayAccumulate from './iteration/menuDayAccumulate'
  131. import xmIterationBurnout from './iteration/burnout'
  132. import xmIterationWorkItemDayList from './iteration/iterationWorkItemDayList'
  133. import xmIterationQuestionDayTrend from './iteration/questionDayTrend'
  134. import xmIterationQuestionDayAccumulate from './iteration/questionDayAccumulate'
  135. import xmBranchWorkItemDayList from './branch/branchWorkItemDayList'
  136. import xmBranchQuestionDayTrend from './branch/questionDayTrend'
  137. import xmBranchQuestionDayAccumulate from './branch/questionDayAccumulate'
  138. import xmBranchMenuDayTrend from './branch/menuDayTrend'
  139. import xmBranchMenuDayAccumulate from './branch/menuDayAccumulate'
  140. import pieSimple from './images/pie-simple.png'
  141. import lineStack from './images/line-stack.png'
  142. import areaStack from './images/area-stack.png'
  143. import ranjintu from './images/ranjintu.png'
  144. import datasetLink from './images/dataset-link.png'
  145. import bar from './images/bar.png'
  146. import store from '@/store'
  147. export default {
  148. components: {
  149. xmIterationBurnout,xmMenuDayTrend,xmMenuDayAccumulate,xmMenuAttDist,xmMenuAgeDist,xmMenuSort,xmProductWorkItemDayList,xmTaskDayTrend,xmTaskDayAccumulate,xmTaskAttDist,xmTaskAgeDist,xmTaskSort,xmProjectWorkItemDayList,xmProjectWorkloadSetDayList,xmProjectWorkloadSetMonthList,xmQuestionDayTrend,xmQuestionDayAccumulate,xmQuestionAttDist,xmQuestionAgeDist,xmQuestionSort,
  150. xmIterationMenuDayTrend,xmIterationMenuDayAccumulate,xmIterationWorkItemDayList,xmIterationQuestionDayTrend,xmIterationQuestionDayAccumulate,
  151. xmTestPlanCaseExecStatusDist,xmTestPlanCaseUserDist,xmQuestionRetestDist,xmQuestionStateDist,
  152. xmQuestionAskUserSort,xmQuestionHandlerUserSort,xmQuestionFuncSort,xmQuestionMenuSort,xmTestDayTimesCalc,xmTestCaseToPlanCalc,
  153. xmBranchWorkItemDayList,xmBranchQuestionDayTrend,xmBranchQuestionDayAccumulate,xmBranchMenuDayTrend,xmBranchMenuDayAccumulate,
  154. xmTestCaseSort,
  155. },
  156. props:['xmProduct','xmIteration','xmProject','xmTestCasedb','xmTestPlan','category'],
  157. computed: {
  158. ...mapGetters([
  159. 'userInfo','roles'
  160. ]),
  161. rptListCpd(){
  162. if(!this.filters.category){
  163. return this.rptList;
  164. }else{
  165. return this.rptList.filter(i=>i.category.indexOf(this.filters.category)>=0)
  166. }
  167. },
  168. categorys:function(){
  169. var map={};
  170. var list=[];
  171. this.rptList.forEach(e => {
  172. var cateList=e.category.split(",")
  173. cateList.forEach(cate=>{
  174. if(!map[cate]){
  175. list.push(cate);
  176. map[cate]=cate
  177. }
  178. })
  179. });
  180. return list;
  181. },
  182. },
  183. watch: {
  184. },
  185. data() {
  186. return {
  187. filters:{
  188. category:'项目级',
  189. },
  190. showRptRef:'',
  191. dicts:{},//下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]}
  192. load:{ list: false, edit: false, del: false, add: false },//查询中...
  193. dateRanger:[],
  194. maxTableHeight:300,
  195. rptList:[/**{name:'报表名称',category:'报表分类,组织级、产品级、项目级、迭代级、需求、测试、任务',path:'路由路径',imgUrl:'图片路径',query:{参数}} */
  196. //迭代报表
  197. {isChecked:false,rptName:'迭代燃尽图',category:'迭代级',ref:'xmIterationBurnout',desc:'跟踪迭代的剩余工作量按日期变化趋势,识别迭代当前进度情况',img:ranjintu },
  198. {isChecked:false,rptName:'需求每日趋势',category:'迭代级',ref:'xmIterationMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  199. {isChecked:false,rptName:'需求每日累积',category:'迭代级',ref:'xmIterationMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  200. {isChecked:false,rptName:'迭代工作项每日趋势',category:'迭代级',ref:'xmIterationWorkItemDayList',desc:'统计迭代每日工作项数量分布情况',img:datasetLink },
  201. {isChecked:false,rptName:'迭代缺陷每日趋势',category:'迭代级',ref:'xmIterationQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  202. {isChecked:false,rptName:'迭代缺陷每日累积',category:'迭代级',ref:'xmIterationQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  203. //企业级报表
  204. {isChecked:false,rptName:'企业工作项每日趋势',category:'企业级',ref:'xmBranchWorkItemDayList',desc:'统计迭代每日工作项数量分布情况',img:datasetLink },
  205. {isChecked:false,rptName:'企业缺陷每日趋势',category:'企业级',ref:'xmBranchQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  206. {isChecked:false,rptName:'企业缺陷每日累积',category:'企业级',ref:'xmBranchQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  207. {isChecked:false,rptName:'需求每日趋势',category:'企业级',ref:'xmBranchMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  208. {isChecked:false,rptName:'需求每日累积',category:'企业级',ref:'xmBranchMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  209. //产品报表
  210. {isChecked:false,rptName:'产品工作项每日趋势',category:'产品级',ref:'xmProductWorkItemDayList',desc:'统计产品每日工作项数量分布情况',img:datasetLink },
  211. {isChecked:false,rptName:'需求每日趋势',category:'产品级',ref:'xmMenuDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期变化趋势,识别需求工作情况',img:lineStack },
  212. {isChecked:false,rptName:'需求每日累积',category:'产品级',ref:'xmMenuDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的需求数量按日期累积情况,识别需求工作的瓶颈',img:areaStack },
  213. {isChecked:false,rptName:'需求属性分布',category:'产品级,迭代级,企业级',ref:'xmMenuAttDist',desc:'统计所有需求任意属性数量分布情况(实时数据)',img:pieSimple },
  214. {isChecked:false,rptName:'需求年龄分布',category:'产品级,迭代级,企业级',ref:'xmMenuAgeDist',desc:'统计所有需求年龄分布情况(实时数据)',img:pieSimple },
  215. {isChecked:false,rptName:'需求排行榜',category:'产品级,迭代级,企业级',ref:'xmMenuSort',desc:'按提出人、负责人、迭代、产品等维度统计用户故事数量按高到低进行排行(实时数据)',img:bar },
  216. {isChecked:false,rptName:'模块需求数量统计',category:'产品级,迭代级,企业级',ref:'xmMenuFuncSort',desc:'统计每个模块当前的需求数量(实时数据)',img:bar },
  217. {isChecked:false,rptName:'迭代需求数量统计',category:'产品级,迭代级,企业级',ref:'xmMenuIterationSort',desc:'统计每个迭代当前的需求数量(实时数据)',img:bar },
  218. {isChecked:false,rptName:'产品需求数量统计',category:'产品级,企业级',ref:'xmMenuProductSort',desc:'统计每个产品当前的需求数量(实时数据)',img:bar },
  219. {isChecked:false,rptName:'产品缺陷每日趋势',category:'产品级',ref:'xmQuestionDayTrend',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:lineStack },
  220. {isChecked:false,rptName:'产品缺陷每日累积',category:'产品级',ref:'xmQuestionDayAccumulate',desc:'跟踪一段时间内,各种程度和类别的缺陷累积情况,监控缺陷的变化趋势',img:areaStack },
  221. //项目报表
  222. {isChecked:false,rptName:'项目工作项每日趋势',category:'项目级',ref:'xmProjectWorkItemDayList',desc:'统计项目每日工作项数量分布情况',img:datasetLink },
  223. {isChecked:false,rptName:'任务每日趋势',category:'项目级',ref:'xmTaskDayTrend',desc:'跟踪未开始、执行中、已完成、已关闭状态的任务数量按日期变化趋势,识别任务工作情况',img:lineStack },
  224. {isChecked:false,rptName:'任务每日累积',category:'项目级',ref:'xmTaskDayAccumulate',desc:'跟踪未开始、执行中、已完成、已关闭状态的任务数量按日期累积情况,识别任务工作的瓶颈',img:areaStack },
  225. {isChecked:false,rptName:'任务属性分布',category:'项目级,企业级',ref:'xmTaskAttDist',desc:'统计所有任务任意属性数量分布情况(实时数据)',img:pieSimple },
  226. {isChecked:false,rptName:'任务年龄分布',category:'项目级,企业级',ref:'xmTaskAgeDist',desc:'统计所有任务年龄分布情况(实时数据)',img:pieSimple },
  227. {isChecked:false,rptName:'任务排行榜',category:'项目级,企业级',ref:'xmTaskSort',desc:'任务提出人、负责人的用户故事数量排行(实时数据)',img:bar },
  228. {isChecked:false,rptName:'项目结算工时每日趋势',category:'项目级',ref:'xmProjectWorkloadSetDayList',desc:'统计项目每日登记工时、结算工时数量分布情况',img:datasetLink },
  229. {isChecked:false,rptName:'项目结算工时每月趋势',category:'项目级',ref:'xmProjectWorkloadSetMonthList',desc:'统计项目每月登记工时、结算工时数量分布情况',img:datasetLink },
  230. //测试级报表
  231. {isChecked:false,rptName:'测试用例规划分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseToPlanCalc',desc:'显示用例被规划到测试计划中的次数统计',img:pieSimple },
  232. {isChecked:false,rptName:'测试用例需求覆盖分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseMenuSort',desc:'统计测试用例需求覆盖情况',img:bar },
  233. {isChecked:false,rptName:'测试用例模块覆盖分析',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseFuncSort',desc:'统计测试用例覆盖各个模块的情况',img:bar },
  234. {isChecked:false,rptName:'测试用例负责人排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestCaseCuserSort',desc:'统计测试团队每个人负责的测试用例数并进行排序',img:bar },
  235. {isChecked:false,rptName:'测试用例执行状态分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestPlanCaseExecStatusDist',desc:'按测试用例执行结果统计,通过、失败、忽略、阻塞',img:pieSimple },
  236. {isChecked:false,rptName:'测试用例执行用户分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestPlanCaseUserDist',desc:'统计测试用例负责人用例执行情况',img:bar },
  237. {isChecked:false,rptName:'缺陷回归分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionRetestDist',desc:'统计项目中缺陷在回归测试中分布情况,跟踪缺陷的重新打开率;',img:pieSimple },
  238. {isChecked:false,rptName:'测试次数每日统计',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmTestDayTimesCalc',desc:'统计每日测试用例执行数量',img:bar },
  239. {isChecked:false,rptName:'缺陷状态分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionStateDist',desc:'跟踪新提出、执行中、已解决、已关闭状态的缺陷数量按日期变化趋势,识别缺陷处理工作情况',img:pieSimple },
  240. {isChecked:false,rptName:'缺陷排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  241. {isChecked:false,rptName:'缺陷提出人排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionAskUserSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  242. {isChecked:false,rptName:'缺陷负责人排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionHandlerUserSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  243. {isChecked:false,rptName:'缺陷模块排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionFuncSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  244. {isChecked:false,rptName:'缺陷需求排行榜',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionMenuSort',desc:'从缺陷提出人、创建人、负责人、故事等维度统计缺陷数量排行榜(实时数据)',img:bar },
  245. {isChecked:false,rptName:'缺陷属性分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionAttDist',desc:'统计所有缺陷任意属性数量分布情况(实时数据)',img:pieSimple },
  246. {isChecked:false,rptName:'缺陷年龄分布',category:'测试级,项目级,产品级,迭代级,企业级',ref:'xmQuestionAgeDist',desc:'统计所有缺陷按照年龄的分布情况,跟踪缺陷的生命周期和响应情况',img:pieSimple },
  247. ],
  248. }//end return
  249. },//end data
  250. methods: {
  251. intoInfo(row) {
  252. var params={...row}
  253. params.xmProduct=this.xmProduct
  254. params.xmProject=this.xmProject
  255. params.xmIteration=this.xmIteration
  256. params.xmTestCasedb=this.xmTestCasedb
  257. params.category=this.filters.category
  258. this.rptList.forEach(k=>k.isChecked=false)
  259. row.isChecked=true
  260. this.showRptRef=row.ref
  261. },
  262. onCategroySelect(){
  263. this.intoInfo(this.rptListCpd[0])
  264. }
  265. },//end method
  266. mounted() {
  267. /**
  268. initSimpleDicts('all',['demandSource','demandLvl','demandType','priority','menuStatus'] ).then(res=>{
  269. this.dicts=res.data.data;
  270. })
  271. */
  272. if(this.category){
  273. this.filters.category=this.category
  274. }else{
  275. if(this.xmIteration && this.xmIteration.id){
  276. this.filters.category="迭代级"
  277. }else if(this.xmTestCasedb && this.xmTestCasedb.id){
  278. this.filters.category="测试级"
  279. }else if(this.xmProject && this.xmProject.id){
  280. this.filters.category="项目级"
  281. }else if(this.xmProduct && this.xmProduct.id){
  282. this.filters.category="产品级"
  283. }else{
  284. this.filters.category="企业级"
  285. store.dispatch("toggleSideBar",false)
  286. }
  287. }
  288. this.maxTableHeight = this.source == 'GZT' ? this.maxTableHeight : util.calcTableMaxHeight(this.$refs.table.$el);
  289. this.intoInfo(this.rptListCpd[0])
  290. }//end mounted
  291. }
  292. </script>
  293. <style lang="scss" scoped>
  294. .moduleset-lg {
  295. .nav {
  296. overflow: hidden;
  297. display:flex;
  298. align-items:center;
  299. justify-content: space-between;
  300. flex-wrap:wrap;
  301. padding-right: 5px;
  302. .nav_item {
  303. padding:5px;
  304. display: flex;
  305. flex-direction: row;
  306. border: 2px solid #EDF0F9;
  307. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  308. border-radius: 8px;
  309. align-items: center;
  310. position: relative;
  311. cursor: pointer;
  312. margin-top: 10px;
  313. width:100%;
  314. img {
  315. object-fit:cover;
  316. max-width: 25%;
  317. max-height: 100%;
  318. margin-right: 5px;
  319. }
  320. p {
  321. font-size: 16px;
  322. font-weight: bold;
  323. color: #7D7D7D;
  324. margin-bottom: 10px;
  325. }
  326. span {
  327. font-size: 14px;
  328. color: #7D7D7D;
  329. line-height: 16px;
  330. }
  331. i {
  332. position: absolute;
  333. top: 5px;
  334. right: 5px;
  335. font-size: 30px;
  336. color: #90B1F4;
  337. }
  338. }
  339. .itemActive {
  340. border: 2px solid #90B1F4;
  341. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  342. }
  343. }
  344. }
  345. .moduleset-sm {
  346. .nav {
  347. overflow: hidden;
  348. display:flex;
  349. align-items:center;
  350. justify-content: space-between;
  351. flex-wrap:wrap;
  352. padding-right: 5px;
  353. .nav_item {
  354. padding:2px;
  355. flex-direction: row;
  356. border: 2px solid #EDF0F9;
  357. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  358. border-radius: 8px;
  359. align-items: center;
  360. position: relative;
  361. cursor: pointer;
  362. margin-top: 5px;
  363. width:100%;
  364. .title{
  365. width:100%;
  366. p {
  367. font-size: 14px;
  368. font-weight: bold;
  369. color: #7D7D7D;
  370. margin-bottom: 5px;
  371. margin-top: 5px;
  372. }
  373. }
  374. .context{
  375. display: flex;
  376. width: 100%;
  377. padding: 2px;
  378. img {
  379. object-fit:cover;
  380. max-width: 25%;
  381. max-height: 100%;
  382. padding: 2px;
  383. }
  384. .desc{
  385. width:75%;
  386. span {
  387. font-size: 10px;
  388. color: #7D7D7D;
  389. line-height: 12px;
  390. }
  391. }
  392. }
  393. i {
  394. position: absolute;
  395. top: 5px;
  396. right: 5px;
  397. font-size: 20px;
  398. color: #90B1F4;
  399. }
  400. }
  401. .itemActive {
  402. border: 2px solid #90B1F4;
  403. box-shadow: 0px 3px 4px 0px rgba(186, 184, 184, 0.1);
  404. }
  405. }
  406. }
  407. </style>