Browse Source

优化

master
陈裕财 3 years ago
parent
commit
3f8c5202f1
  1. 5
      src/router/routes_xm.js
  2. 125
      src/views/xm/rpt/CompsCard.vue
  3. 188
      src/views/xm/rpt/CompsCardHisDetail.vue
  4. 66
      src/views/xm/rpt/comps.js
  5. 0
      src/views/xm/rpt/his/rptDataSelect.vue
  6. 51
      src/views/xm/rpt/indexForHis.vue
  7. 51
      src/views/xm/rpt/indexForHisDetail.vue
  8. 1
      src/views/xm/rpt/project/taskAgeDist.vue

5
src/router/routes_xm.js

@ -642,7 +642,10 @@ export default {
icon: 'chart' icon: 'chart'
}, },
children: [
children: [
{ path: 'his', component: _import('xm/rpt/indexForHis'), name: 'rptIndex', meta: { title: '历史报告',roles:["user"] }},
{ path: 'his/detail', component: _import('xm/rpt/indexForHisDetail'), name: 'rptHisDetail', meta: { title: '报告明细',roles:["user"] },hidden:true},
{ path: 'index', component: _import('xm/rpt/index'), name: 'rptIndex', meta: { title: '指标分析',roles:["user"] }}, { path: 'index', component: _import('xm/rpt/index'), name: 'rptIndex', meta: { title: '指标分析',roles:["user"] }},
{ path: 'branch/branchDatavFullScreen', name: 'branchDatavFullScreen', meta: { title: '机构效能',openTab:true,outUrl:"${curlDomain}/"+process.env.CONTEXT+"/"+process.env.VERSION+"/#/datav/xm/branch/branchDatavFullScreen" }}, { path: 'branch/branchDatavFullScreen', name: 'branchDatavFullScreen', meta: { title: '机构效能',openTab:true,outUrl:"${curlDomain}/"+process.env.CONTEXT+"/"+process.env.VERSION+"/#/datav/xm/branch/branchDatavFullScreen" }},
] ]

125
src/views/xm/rpt/CompsCard.vue

@ -2,11 +2,13 @@
<section> <section>
<el-row class="padding-left padding-right"> <el-row class="padding-left padding-right">
<el-col :span="6"> <el-col :span="6">
<comps-set :comp-ids="compIds" :category="category" @row-click="onCompSelect" ref="compsSet" :show-checked-only="isRptShow"></comps-set>
<comps-set :comp-ids="compIds" :category="category" @row-click="onCompSelect" ref="compsSet" :show-checked-only="isRptShow||showCheckedOnly"></comps-set>
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<el-row class="padding"> <el-row class="padding">
<span class="rpt-name">{{ xmRptData && xmRptData.id?xmRptData.rptName:(xmRptConfig&&xmRptConfig.id?xmRptConfig.name: rptConfigParamsCpd.name+'-报告')}}</span>
<span class="rpt-name" v-if="xmRptData && xmRptData.id">{{ xmRptData.rptName}}</span>
<span class="rpt-name" v-else-if="xmRptConfig && xmRptConfig.id">{{ xmRptConfig.name}}</span>
<span class="rpt-name" v-else>{{ rptConfigParamsCpd.name+'-报告'}}</span>
<span style="float:right;"> <span style="float:right;">
<el-button type="text" v-if="isRptShow==true && isRptCfg==false" @click="toQueryRptData" icon="el-icon-time">查看历史报告</el-button> <el-button type="text" v-if="isRptShow==true && isRptCfg==false" @click="toQueryRptData" icon="el-icon-time">查看历史报告</el-button>
<el-button type="primary" v-if="isRptShow==true && isRptCfg==false && (!xmRptData||!xmRptData.id)" @click="showCreateRptData()" icon="el-icon-time">保存报告(可供历史查询)</el-button> <el-button type="primary" v-if="isRptShow==true && isRptCfg==false && (!xmRptData||!xmRptData.id)" @click="showCreateRptData()" icon="el-icon-time">保存报告(可供历史查询)</el-button>
@ -33,8 +35,8 @@
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<el-dialog append-to-body modal-append-to-body :visible.sync="rptDataListVisible" top="20px" width="60%">
<rpt-data-list :xm-rpt-config="xmRptConfig" v-if="rptDataListVisible" @select="onRptDataSelect"/>
<el-dialog append-to-body modal-append-to-body :visible.sync="rptDataSelectVisible" top="20px" width="60%">
<rpt-data-select :xm-rpt-config="xmRptConfig" v-if="rptDataSelectVisible" @select="onRptDataSelect"/>
</el-dialog> </el-dialog>
<el-dialog title="请确认" append-to-body modal-append-to-body :visible.sync="createRptConfigVisible"> <el-dialog title="请确认" append-to-body modal-append-to-body :visible.sync="createRptConfigVisible">
@ -65,85 +67,27 @@
<script> <script>
import util from '@/common/js/util';//
import util from '@/common/js/util';//
import seq from '@/common/js/sequence';// import seq from '@/common/js/sequence';//
import VueGridLayout from 'vue-grid-layout'; import VueGridLayout from 'vue-grid-layout';
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import CompsSet from '@/views/xm/rpt/CompsSet' import CompsSet from '@/views/xm/rpt/CompsSet'
import rptDataList from '@/views/xm/rpt/his/rptDataList'
import { addXmRptData } from '@/api/xm/core/xmRptData';
import rptDataSelect from '@/views/xm/rpt/his/rptDataSelect'
import { addXmRptData } from '@/api/xm/core/xmRptData';
import { listXmRptConfig,editXmRptConfig,addXmRptConfig } from '@/api/xm/core/xmRptConfig'; import { listXmRptConfig,editXmRptConfig,addXmRptConfig } from '@/api/xm/core/xmRptConfig';
import rptComps from './comps.js';//
export default { export default {
components: { components: {
GridLayout: VueGridLayout.GridLayout, GridLayout: VueGridLayout.GridLayout,
GridItem: VueGridLayout.GridItem, GridItem: VueGridLayout.GridItem,
CompsSet, rptDataList,
xmTestRptOverview:()=>import("../core/xmTestPlan/xmTestRptOverview.vue"),
xmMenuDayTrend:()=>import("./product/menuDayTrend.vue"),
xmMenuDayAccumulate:()=>import("./product/menuDayTrend.vue"),
xmMenuAttDist:()=>import('./product/menuAttDist'),
xmMenuAgeDist:()=>import('./product/menuAgeDist.vue'),
xmMenuSort:()=>import('./product/menuSort.vue'),
xmMenuFuncSort:()=>import('./product/menuSort.vue'),
xmMenuProductSort:()=>import('./product/menuSort.vue'),
xmMenuIterationSort:()=>import('./product/menuSort.vue'),
xmProductWorkItemDayList:()=>import('./product/productWorkItemDayList.vue'),
xmTaskDayTrend:()=>import('./project/taskDayTrend.vue'),
xmTaskDayAccumulate:()=>import('./project/taskDayAccumulate.vue'),
xmTaskAttDist:()=>import('./project/taskAttDist.vue'),
xmTaskAgeDist:()=>import('./project/taskAgeDist.vue'),
xmTaskSort:()=>import('./project/taskSort.vue'),
xmProjectWorkItemDayList:()=>import('./project/projectWorkItemDayList.vue'),
xmProjectWorkloadSetDayList:()=>import('./project/projectWorkloadSetDayList.vue'),
xmProjectWorkloadSetMonthList:()=>import('./project/projectWorkloadSetMonthList.vue'),
xmQuestionDayTrend:()=>import('./product/questionDayTrend.vue'),
xmQuestionDayAccumulate:()=>import('./product/questionDayAccumulate.vue'),
xmQuestionAttDist:()=>import('./product/questionAttDist.vue'),
xmQuestionStateDist:()=>import('./product/questionAttDist.vue'),
xmQuestionAgeDist:()=>import('./product/questionAgeDist.vue'),
xmQuestionBugReasonDist:()=>import('./product/questionAttDist.vue'),
xmQuestionBugTypeDist:()=>import('./product/questionAttDist.vue'),
xmQuestionPriorityDist:()=>import('./product/questionAttDist.vue'),
xmQuestionSort:()=>import('./product/questionSort.vue'),
xmQuestionAskUserSort:()=>import('./product/questionSort.vue'),
xmQuestionHandlerUserSort:()=>import('./product/questionSort.vue'),
xmQuestionFuncSort:()=>import('./product/questionSort.vue'),
xmQuestionMenuSort:()=>import('./product/questionSort.vue'),
xmQuestionRetestDist:()=>import('./product/questionRetestDist.vue'),
xmTestPlanCaseExecStatusDist:()=>import('./testPlan/testPlanCaseExecStatusDist.vue'),
xmTestPlanCaseUserDist:()=>import('./testPlan/testPlanCaseUserDist.vue'),
xmTestDayTimesCalc:()=>import('./testPlan/testDayTimesCalc.vue'),
xmTestCaseToPlanCalc:()=>import('./testPlan/testCaseToPlanCalc.vue'),
xmTestCaseSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseCuserSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseFuncSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseMenuSort:()=>import('./testCase/testCaseSort.vue'),
xmIterationMenuDayTrend:()=>import('./iteration/menuDayTrend.vue'),
xmIterationMenuDayAccumulate:()=>import('./iteration/menuDayAccumulate.vue'),
xmIterationBurnout:()=>import('./iteration/burnout.vue'),
xmIterationWorkItemDayList:()=>import('./iteration/iterationWorkItemDayList.vue'),
xmIterationQuestionDayTrend:()=>import('./iteration/questionDayTrend.vue'),
xmIterationQuestionDayAccumulate:()=>import('./iteration/questionDayAccumulate.vue'),
xmBranchWorkItemDayList:()=>import('./branch/branchWorkItemDayList.vue'),
xmBranchQuestionDayTrend:()=>import('./branch/questionDayTrend.vue'),
xmBranchQuestionDayAccumulate:()=>import('./branch/questionDayAccumulate.vue'),
xmBranchMenuDayTrend:()=>import('./branch/menuDayTrend.vue'),
xmBranchMenuDayAccumulate:()=>import('./branch/menuDayAccumulate.vue'),
CompsSet, rptDataSelect,
...rptComps
}, },
props:['xmTestCasedb','xmTestPlan','xmProduct','xmProject','xmIteration','category','showParams'],
props:['xmTestCasedb','xmTestPlan','xmProduct','xmProject','xmIteration','category','showParams','showCheckedOnly'],
computed: { computed: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
compIds(){ compIds(){
@ -178,10 +122,6 @@ export default {
params.bizId=this.xmTestCasedb.id params.bizId=this.xmTestCasedb.id
params.name=this.xmTestCasedb.name params.name=this.xmTestCasedb.name
} }
}else {
return params;
} }
return params; return params;
}, },
@ -217,15 +157,15 @@ export default {
return { return {
isRptCfg:false, isRptCfg:false,
isRptShow:false, isRptShow:false,
xmRptConfig:{},
xmRptData:{id:'',rptName:'',bizId:'',bizType:'',bizDate:''},
xmRptDataInit:{id:'',rptName:'',bizId:'',bizType:'',bizDate:''},
xmRptConfig:{id:'',name:'',bizType:'',bizId:'',cfg:[]},
xmRptData:{id:'',rptName:'',bizId:'',bizType:'',bizDate:'',rptData:[]},
xmRptDataInit:{id:'',rptName:'',bizId:'',bizType:'',bizDate:'',rptData:[]},
compCfgList:[], compCfgList:[],
maxTableHeight:300, maxTableHeight:300,
// //
layoutColNum: 12, layoutColNum: 12,
paramsVisible:true, paramsVisible:true,
rptDataListVisible:false,
rptDataSelectVisible:false,
createRptDataVisible:false, createRptDataVisible:false,
createRptConfigVisible:false, createRptConfigVisible:false,
} }
@ -250,13 +190,13 @@ export default {
} }
var curlDomain=window.location.protocol+"//"+window.location.host; // https://mp.csdn.net var curlDomain=window.location.protocol+"//"+window.location.host; // https://mp.csdn.net
var link=curlDomain+"/"+process.env.CONTEXT+"/"+process.env.VERSION+"/#/xm/rpt/hisRpt?id="+this.xmRptData.id
var link=curlDomain+"/"+process.env.CONTEXT+"/"+process.env.VERSION+"/#/xm/rpt/his/detail?id="+this.xmRptData.id
this.$copyText(link).then(e => { this.$copyText(link).then(e => {
this.$notify({position:'bottom-left',showClose:true,message:"拷贝链接成功,您可以黏贴到任何地方",type:'success'}) this.$notify({position:'bottom-left',showClose:true,message:"拷贝链接成功,您可以黏贴到任何地方",type:'success'})
}); });
}, },
showCreateRptData(){ showCreateRptData(){
if(this.xmRptConfig==null){
if(!this.xmRptConfig|| !this.xmRptConfig.id){
this.$message.error("还没制作报告,请先制作报告") this.$message.error("还没制作报告,请先制作报告")
return; return;
} }
@ -272,10 +212,10 @@ export default {
}, },
toQueryRptData(){ toQueryRptData(){
this.rptDataListVisible=true;
this.rptDataSelectVisible=true;
}, },
createRptData(){ createRptData(){
if(this.xmRptConfig==null){
if(!this.xmRptConfig|| !this.xmRptConfig.id){
this.$message.error("还没制作报告,请先制作报告") this.$message.error("还没制作报告,请先制作报告")
return; return;
} }
@ -283,15 +223,15 @@ export default {
this.$message.error("请输入报告名称") this.$message.error("请输入报告名称")
return; return;
} }
var xmRptData={...this.xmRptData,cfgId:this.xmRptConfig.id,rptData:[]}
var xmRptData={rptName:this.xmRptData.rptName,bizType:this.xmRptConfig.bizType,bizId:this.xmRptConfig.bizId,cfgId:this.xmRptConfig.id,rptData:[]}
this.compCfgList.forEach(k=>{ this.compCfgList.forEach(k=>{
if(this.$refs[k.id] && this.$refs[k.id][0].$refs && this.$refs[k.id][0].$refs[k.id]){ if(this.$refs[k.id] && this.$refs[k.id][0].$refs && this.$refs[k.id][0].$refs[k.id]){
var com=this.$refs[k.id][0].$refs[k.id] var com=this.$refs[k.id][0].$refs[k.id]
var comData={compId:k.compId,params:com.params,title:com.title,remark:com.remark}
var comData={compId:k.compId,params:com.params,title:com.title,remark:com.remark,rawDatas:com.rawDatas}
xmRptData.rptData.push(comData) xmRptData.rptData.push(comData)
}else{ }else{
var com=this.$refs[k.id][0] var com=this.$refs[k.id][0]
var comData={compId:k.compId,params:com.params,title:com.title,remark:com.remark}
var comData={compId:k.compId,params:com.params,title:com.title,remark:com.remark,rawDatas:com.rawDatas}
xmRptData.rptData.push(comData) xmRptData.rptData.push(comData)
} }
}) })
@ -345,11 +285,20 @@ export default {
var params={bizType:this.rptConfigParamsCpd.bizType,bizId:this.rptConfigParamsCpd.bizId} var params={bizType:this.rptConfigParamsCpd.bizType,bizId:this.rptConfigParamsCpd.bizId}
listXmRptConfig(params).then(res=>{ listXmRptConfig(params).then(res=>{
this.xmRptConfig=res.data.data[0]
if(!res.data.tips.isOk){
this.$message.error(res.data.tips.msg)
return ;
}
if(!res.data.data || res.data.data.length==0 ){
this.xmRptConfig={}
}else{
this.xmRptConfig=res.data.data[0]
}
}) })
}, },
initCompCfgList(){ initCompCfgList(){
if(this.xmRptConfig && this.xmRptConfig.cfg){
if(this.xmRptConfig && this.xmRptConfig.id && this.xmRptConfig.cfg){
var cfgJson=JSON.parse(this.xmRptConfig.cfg) var cfgJson=JSON.parse(this.xmRptConfig.cfg)
cfgJson.forEach(k=>k.id=k.compId+seq.sn()) cfgJson.forEach(k=>k.id=k.compId+seq.sn())
this.compCfgList=cfgJson; this.compCfgList=cfgJson;
@ -451,7 +400,7 @@ export default {
}, },
onRptDataSelect(rptData){ onRptDataSelect(rptData){
this.xmRptData=rptData this.xmRptData=rptData
this.rptDataListVisible=false;
this.rptDataSelectVisible=false;
if(this.xmRptData && this.xmRptData.id ){ if(this.xmRptData && this.xmRptData.id ){
if( this.xmRptData.cfgId==this.xmRptConfig.id){ if( this.xmRptData.cfgId==this.xmRptConfig.id){
this.xmRptConfig.name=this.xmRptData.rptName this.xmRptConfig.name=this.xmRptData.rptName

188
src/views/xm/rpt/CompsCardHisDetail.vue

@ -0,0 +1,188 @@
<template>
<section>
<el-row class="padding-left padding-right">
<el-col :span="6">
<comps-set v-if="compIds && compIds.length>0" :comp-ids="compIds" :category="category" @row-click="onCompSelect" ref="compsSet" :show-checked-only="true"></comps-set>
</el-col>
<el-col :span="18">
<el-row class="padding">
<span class="rpt-name">{{ xmRptData && xmRptData.id?xmRptData.rptName: '未知报告'}}</span>
<span style="float:right;" v-if=" xmRptData && xmRptData.id">
<el-button type="text" v-if="paramsVisible==true" @click="paramsVisible=false">隐藏过滤条件</el-button>
<el-button type="text" v-if="paramsVisible==false" @click="paramsVisible=true">显示过滤条件</el-button>
<el-button type="text" @click="toShareRpt" icon="el-icon-share">分享</el-button>
<el-button type="text" v-print="{id:'printBody',popTitle: xmRptData.rptName }" icon="el-icon-printer"></el-button>
<el-button type="text" @click="exportToPdf">pdf</el-button>
</span>
</el-row>
<el-row :style="{height:maxTableHeight+'px',overflowY:'auto',overflowX:'hidden',}" ref="table">
<div class="empty" v-if="compCfgList.length == 0" >
<el-empty description="暂未选择报表,请至少选择一个报表"></el-empty>
</div>
<div v-else id="printBody" ref="rptBox">
<component style="margin-bottom:80px;" v-for="(item,index) in compCfgList" :key="index" :is="item.compId" :cfg="item" :init-group-by="item.initGroupBy" :show-tool-bar="false" :id="item.id" :rpt-datas="item.rawDatas" :show-params="paramsVisible"></component>
</div>
</el-row>
</el-col>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import seq from '@/common/js/sequence';//
import { mapGetters } from 'vuex'
import CompsSet from '@/views/xm/rpt/CompsSet'
import rptComps from './comps.js';//
export default {
components: {
CompsSet,
...rptComps
},
props:['showParams','xmRptData'],
computed: {
...mapGetters(['userInfo']),
compIds(){
return this.compCfgList.map(k=>k.compId)
},
//1-2-3-4-5-6-
category(){
if( !this.xmRptData || !this.xmRptData.id){
return ''
}
if(this.xmRptData.bizType=='1'){
return "产品级"
}
if(this.xmRptData.bizType=='2'){
return "迭代级"
}
if(this.xmRptData.bizType=='3'){
return "测试级"
}
if(this.xmRptData.bizType=='4'){
return "项目级"
}
if(this.xmRptData.bizType=='5'){
return "企业级"
}
if(this.xmRptData.bizType=='6'){
return "测试级"
}
}
},
watch: {
},
data() {
return {
compCfgList:[],
maxTableHeight:300,
paramsVisible:true,
rptDataListVisible:false,
}
},
methods: {
initData(){
if(this.showParams!=undefined){
this.paramsVisible=this.showParams
}
this.initCompCfgList();
},
toShareRpt(){
if(!this.xmRptData||!this.xmRptData.id){
this.$message.error("只能分享历史报告")
return;
}
var curlDomain=window.location.protocol+"//"+window.location.host; // https://mp.csdn.net
var link=curlDomain+"/"+process.env.CONTEXT+"/"+process.env.VERSION+"/#/xm/rpt/his/detail?id="+this.xmRptData.id
this.$copyText(link).then(e => {
this.$notify({position:'bottom-left',showClose:true,message:"拷贝链接成功,您可以黏贴到任何地方",type:'success'})
});
},
toQueryRptData(){
this.rptDataListVisible=true;
},
initCompCfgList(){
if(this.xmRptData && this.xmRptData.rptData){
var cfgJson=JSON.parse(this.xmRptData.rptData)
cfgJson.forEach(k=>k.id=k.compId+seq.sn())
this.compCfgList=cfgJson;
}else{
this.compCfgList=[]
}
},
onCompSelect(comp){
if(this.compCfgList.some(k=>k.compId==comp.compId)){
var compCfg=this.compCfgList.find(k=>k.compId==comp.compId)
this.$nextTick(()=>{
this.scrollToComp(compCfg)
})
return;
}
var compCfg={...comp,id:comp.compId+seq.sn()}
this.compCfgList.push(compCfg)
this.$nextTick(()=>{
setTimeout(()=>{
this.scrollToComp(compCfg)
},200)
})
},
scrollToComp(compCfg){
var doc=document.getElementById(compCfg.id)
if(doc){
doc.scrollIntoView(true)
}
},
doDelete(compCfg){
},
sizeAutoChange(k){
},
exportToPdf(){
this.paramsVisible=false
this.$nextTick(()=>{
this.$PDFSave(this.$refs.rptBox, this.rptConfigParamsCpd.name+"-报告");
})
},
},
mounted() {
this.$nextTick(() => {
this.initData();
this.maxTableHeight = util.calcTableMaxHeight(this.$refs.table.$el)
})
},
}
</script>
<style lang="less" scoped>
.toolbar{
z-index: 999;
position:absolute;
top:0px;
right:20px;
}
.rpt-name{
text-align: center;
font-size: 18px;
font-weight: 600;
}
</style>

66
src/views/xm/rpt/comps.js

@ -0,0 +1,66 @@
export default {
xmTestRptOverview:()=>import("../core/xmTestPlan/xmTestRptOverview.vue"),
xmMenuDayTrend:()=>import("./product/menuDayTrend.vue"),
xmMenuDayAccumulate:()=>import("./product/menuDayTrend.vue"),
xmMenuAttDist:()=>import('./product/menuAttDist'),
xmMenuAgeDist:()=>import('./product/menuAgeDist.vue'),
xmMenuSort:()=>import('./product/menuSort.vue'),
xmMenuFuncSort:()=>import('./product/menuSort.vue'),
xmMenuProductSort:()=>import('./product/menuSort.vue'),
xmMenuIterationSort:()=>import('./product/menuSort.vue'),
xmProductWorkItemDayList:()=>import('./product/productWorkItemDayList.vue'),
xmTaskDayTrend:()=>import('./project/taskDayTrend.vue'),
xmTaskDayAccumulate:()=>import('./project/taskDayAccumulate.vue'),
xmTaskAttDist:()=>import('./project/taskAttDist.vue'),
xmTaskAgeDist:()=>import('./project/taskAgeDist.vue'),
xmTaskSort:()=>import('./project/taskSort.vue'),
xmProjectWorkItemDayList:()=>import('./project/projectWorkItemDayList.vue'),
xmProjectWorkloadSetDayList:()=>import('./project/projectWorkloadSetDayList.vue'),
xmProjectWorkloadSetMonthList:()=>import('./project/projectWorkloadSetMonthList.vue'),
xmQuestionDayTrend:()=>import('./product/questionDayTrend.vue'),
xmQuestionDayAccumulate:()=>import('./product/questionDayAccumulate.vue'),
xmQuestionAttDist:()=>import('./product/questionAttDist.vue'),
xmQuestionStateDist:()=>import('./product/questionAttDist.vue'),
xmQuestionAgeDist:()=>import('./product/questionAgeDist.vue'),
xmQuestionBugReasonDist:()=>import('./product/questionAttDist.vue'),
xmQuestionBugTypeDist:()=>import('./product/questionAttDist.vue'),
xmQuestionPriorityDist:()=>import('./product/questionAttDist.vue'),
xmQuestionSort:()=>import('./product/questionSort.vue'),
xmQuestionAskUserSort:()=>import('./product/questionSort.vue'),
xmQuestionHandlerUserSort:()=>import('./product/questionSort.vue'),
xmQuestionFuncSort:()=>import('./product/questionSort.vue'),
xmQuestionMenuSort:()=>import('./product/questionSort.vue'),
xmQuestionRetestDist:()=>import('./product/questionRetestDist.vue'),
xmTestPlanCaseExecStatusDist:()=>import('./testPlan/testPlanCaseExecStatusDist.vue'),
xmTestPlanCaseUserDist:()=>import('./testPlan/testPlanCaseUserDist.vue'),
xmTestDayTimesCalc:()=>import('./testPlan/testDayTimesCalc.vue'),
xmTestCaseToPlanCalc:()=>import('./testPlan/testCaseToPlanCalc.vue'),
xmTestCaseSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseCuserSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseFuncSort:()=>import('./testCase/testCaseSort.vue'),
xmTestCaseMenuSort:()=>import('./testCase/testCaseSort.vue'),
xmIterationMenuDayTrend:()=>import('./iteration/menuDayTrend.vue'),
xmIterationMenuDayAccumulate:()=>import('./iteration/menuDayAccumulate.vue'),
xmIterationBurnout:()=>import('./iteration/burnout.vue'),
xmIterationWorkItemDayList:()=>import('./iteration/iterationWorkItemDayList.vue'),
xmIterationQuestionDayTrend:()=>import('./iteration/questionDayTrend.vue'),
xmIterationQuestionDayAccumulate:()=>import('./iteration/questionDayAccumulate.vue'),
xmBranchWorkItemDayList:()=>import('./branch/branchWorkItemDayList.vue'),
xmBranchQuestionDayTrend:()=>import('./branch/questionDayTrend.vue'),
xmBranchQuestionDayAccumulate:()=>import('./branch/questionDayAccumulate.vue'),
xmBranchMenuDayTrend:()=>import('./branch/menuDayTrend.vue'),
xmBranchMenuDayAccumulate:()=>import('./branch/menuDayAccumulate.vue'),
};

src/views/xm/rpt/his/rptDataList.vue → src/views/xm/rpt/his/rptDataSelect.vue

51
src/views/xm/rpt/indexForHis.vue

@ -0,0 +1,51 @@
<template>
<section>
<el-row>
<comps-card v-if="xmRptData && xmRptData.id" ref="compsCard" :xm-rpt-data="xmRptData" :show-params="false"/>
</el-row>
</section>
</template>
<script>
import compsCard from './CompsCardHisDetail'
import compsSet from './CompsSet'
import { listXmRptData } from '@/api/xm/core/xmRptData';
import { mapGetters } from 'vuex'
export default {
components: {compsSet, compsCard},
computed: {
...mapGetters([
'userInfo'
]),
},
watch: {
},
data() {
return {
xmRptData:null,
}
},
methods: {
getXmRptData(){
var params={id:this.$router.query.id}
listXmRptData(params).then(res=>{
this.xmRptData=res.data.data[0]
})
}
},
mounted() {
this.getXmRptData();
}
}
</script>
<style lang="scss" scoped>
</style>

51
src/views/xm/rpt/indexForHisDetail.vue

@ -0,0 +1,51 @@
<template>
<section>
<el-row>
<comps-card v-if="xmRptData && xmRptData.id" ref="compsCard" :xm-rpt-data="xmRptData" :show-params="false"/>
</el-row>
</section>
</template>
<script>
import compsCard from './CompsCardHisDetail'
import compsSet from './CompsSet'
import { listXmRptData } from '@/api/xm/core/xmRptData';
import { mapGetters } from 'vuex'
export default {
components: {compsSet, compsCard},
computed: {
...mapGetters([
'userInfo'
]),
},
watch: {
},
data() {
return {
xmRptData:null,
}
},
methods: {
getXmRptData(){
var params={id:this.$route.query.id}
listXmRptData(params).then(res=>{
this.xmRptData=res.data.data[0]
})
}
},
mounted() {
this.getXmRptData();
}
}
</script>
<style lang="scss" scoped>
</style>

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

@ -277,6 +277,7 @@
}, },
searchXmTaskAgeDist(){ searchXmTaskAgeDist(){
debugger;
if(this.rptDatas){ if(this.rptDatas){
this.rawDatas=this.rptDatas this.rawDatas=this.rptDatas
return; return;

Loading…
Cancel
Save