diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index 568b3be5..34e4d7e4 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -221,7 +221,7 @@ export default { }, { path: 'rpt', - component: _import('xm/rpt/indexForProject'), + component: _import('xm/rpt/index/indexForProject'), name: 'projectRpt', iconCls: 'fa el-icon-menu', meta: { @@ -423,7 +423,7 @@ export default { }, { path: 'rpt', - component: _import('xm/rpt/indexForProduct'), + component: _import('xm/rpt/index/indexForProduct'), name: 'productRpt', iconCls: 'fa el-icon-menu', meta: { @@ -562,7 +562,7 @@ export default { }, { path: 'rpt', - component: _import('xm/rpt/indexForIteration'), + component: _import('xm/rpt/index/indexForIteration'), name: 'iterationRpt', iconCls: 'fa el-icon-menu', meta: { @@ -610,7 +610,7 @@ export default { { path: 'flow', component: _import('xm/core/xmTestCase/XmTestCaseFlow'), name: 'testFlow', meta: { title: '用例评审',roles:["user"] },hidden:true}, { path: 'plan', component: _import('xm/core/xmTestPlan/Overview'), name: 'testPlan', meta: { title: '测试计划',roles:["user"] },hidden:true}, { path: 'group', component: _import('xm/core/xmGroup/XmGroupForTest'), name: 'testGroup', meta: { title: '团队',roles:["user"] },hidden:true}, - { path: 'rpt', component: _import('xm/rpt/indexForTest'), name: 'testRpt', meta: { title: '统计分析',roles:["user"] },hidden:true}, + { path: 'rpt', component: _import('xm/rpt/index/indexForTest'), name: 'testRpt', meta: { title: '统计分析',roles:["user"] },hidden:true}, ] }, @@ -644,9 +644,9 @@ export default { children: [ - { path: 'his', component: _import('xm/rpt/indexForHis'), name: 'rptHis', 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: 'his', component: _import('xm/rpt/index/indexForHis'), name: 'rptHis', meta: { title: '历史报告',roles:["user"] }}, + { path: 'his/detail', component: _import('xm/rpt/index/indexForHisDetail'), name: 'rptHisDetail', meta: { title: '报告明细',roles:["user"] },hidden:true}, + { path: 'index', component: _import('xm/rpt/index/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" }}, ] }, diff --git a/src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue b/src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue index 070d020d..a134f74e 100644 --- a/src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue +++ b/src/views/xm/core/xmTestPlan/XmTestPlanInfo.vue @@ -40,11 +40,11 @@ - + - + @@ -66,7 +66,7 @@ export default { name:'xmTestCasedbMng', components: { XmProductSelect,XmQuestionMng, - "xm-test-plan-rpt":()=>import("../../rpt/index.vue"), + "xm-test-plan-rpt":()=>import("../../rpt/index/index.vue"), "xm-rpt":()=>import("../../rpt/index"), "xm-test-plan-mng":()=>import("../xmTestPlan/XmTestPlanMng.vue"), "xm-test-case-mng":()=>import("../xmTestCase/XmTestCaseMng.vue"), diff --git a/src/views/xm/core/xmTestPlan/xmTestRptOverview.vue b/src/views/xm/rpt/branch/branchRptOverview.vue similarity index 54% rename from src/views/xm/core/xmTestPlan/xmTestRptOverview.vue rename to src/views/xm/rpt/branch/branchRptOverview.vue index e3ea34ef..1ec090f8 100644 --- a/src/views/xm/core/xmTestPlan/xmTestRptOverview.vue +++ b/src/views/xm/rpt/branch/branchRptOverview.vue @@ -1,13 +1,18 @@ - - 报告概览 + + {{ rawDatas.name }} + + + {{ title?title:'报告概览' }} + + - {{xmTestPlan.totalCases?xmTestPlan.totalCases:'0'}}个 + {{rawDatas.totalCases?rawDatas.totalCases:'0'}}个 用例数 @@ -25,32 +30,27 @@ - {{xmTestPlan.bugCnt?xmTestPlan.bugCnt:0}}个 + {{rawDatas.bugCnt?rawDatas.bugCnt:0}}个 缺陷数 - - - - - - + - + - + - + - {{editForm.casedbName}} + {{rawDatas.casedbName}} @@ -58,16 +58,16 @@ 选择项目 - {{editForm.projectName}} + {{rawDatas.projectName}} - {{editForm.projectName}} + {{rawDatas.projectName}} - {{editForm.productName}} + {{rawDatas.productName}} - + @@ -75,11 +75,11 @@ 报告总结 - + - + - 提交 + 提交 @@ -101,37 +101,37 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 computed: { ...mapGetters([ 'userInfo' ]), caseFuGaiLv(){ - if(!this.xmTestPlan.totalCases){ + if(!this.rawDatas.totalCases){ return 0 } - var okCases=parseInt(this.xmTestPlan.okCases>0?this.xmTestPlan.okCases:0) - var errCases=parseInt(this.xmTestPlan.errCases>0?this.xmTestPlan.errCases:0) - var igCases=parseInt(this.xmTestPlan.igCases>0?this.xmTestPlan.igCases:0) - var blCases=parseInt(this.xmTestPlan.blCases>0?this.xmTestPlan.blCases:0) + var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0) + var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0) + var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0) + var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0) var totalExecs=okCases+errCases+igCases+blCases - var rate=parseInt(totalExecs/this.xmTestPlan.totalCases*100) + var rate=parseInt(totalExecs/this.rawDatas.totalCases*100) return rate; }, caseTongGuoLv(){ - if(!this.xmTestPlan.totalCases){ + if(!this.rawDatas.totalCases){ return 0 } - var okCases=parseInt(this.xmTestPlan.okCases>0?this.xmTestPlan.okCases:0) - var errCases=parseInt(this.xmTestPlan.errCases>0?this.xmTestPlan.errCases:0) - var igCases=parseInt(this.xmTestPlan.igCases>0?this.xmTestPlan.igCases:0) - var blCases=parseInt(this.xmTestPlan.blCases>0?this.xmTestPlan.blCases:0) + var okCases=parseInt(this.rawDatas.okCases>0?this.rawDatas.okCases:0) + var errCases=parseInt(this.rawDatas.errCases>0?this.rawDatas.errCases:0) + var igCases=parseInt(this.rawDatas.igCases>0?this.rawDatas.igCases:0) + var blCases=parseInt(this.rawDatas.blCases>0?this.rawDatas.blCases:0) var totalExecs=okCases+igCases - var rate=parseInt(totalExecs/this.xmTestPlan.totalCases*100) + var rate=parseInt(totalExecs/this.rawDatas.totalCases*100) return rate; } }, - props:['xmTestPlan','visible','opType','selProject','xmTestCasedb'], + props:['xmTestPlan','visible','opType','selProject','xmTestCasedb','rptDatas','isRptCfg'], watch: { 'xmTestPlan':function( xmTestPlan ) { if(xmTestPlan){ - this.editForm = {...xmTestPlan}; + this.rawDatas = {...xmTestPlan}; } }, @@ -143,6 +143,8 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 }, data() { return { + title:'', + remark:'', currOpType:'add',//add/edit load:{ list: false, edit: false, del: false, add: false },//查询中... dicts:{ @@ -150,14 +152,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 testPlanTcode:[], },//下拉选择框的所有静态数据 params={categoryId:'all',itemCodes:['sex']} 返回结果 {sex: [{id:'1',name:'男'},{id:'2',name:'女'}]} - editFormRules: { + rawDatasRules: { }, - editForm: { + rawDatas: { id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:'' }, - editFormBak: { + rawDatasBak: { id:'',name:'',casedbId:'',casedbName:'',projectId:'',projectName:'',cuserid:'',cusername:'',ctime:'',stime:'',etime:'',status:'',tcode:'',totalCases:'',okCases:'',errCases:'',igCases:'',blCases:'',productId:'',productName:'',flowState:'',summaryRemark:'' }, maxTableHeight:300, @@ -168,18 +170,18 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 ...util, - // 取消按钮点击 父组件监听@cancel="editFormVisible=false" 监听 + // 取消按钮点击 父组件监听@cancel="rawDatasVisible=false" 监听 handleCancel:function(){ - this.$refs['editFormRef'].resetFields(); + this.$refs['rawDatasRef'].resetFields(); this.$emit('cancel'); }, //新增、编辑提交XmTestPlan 测试计划父组件监听@submit="afterEditSubmit" saveSubmit: function () { - this.$refs.editFormRef.validate((valid) => { + this.$refs.rawDatasRef.validate((valid) => { if (valid) { this.$confirm('确认提交吗?', '提示', {}).then(() => { this.load.edit=true - let params = Object.assign({}, this.editForm); + let params = Object.assign({}, this.rawDatas); var func=addXmTestPlan if(this.currOpType=='edit'){ func=editXmTestPlan @@ -188,7 +190,7 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 this.load.edit=false var tips=res.data.tips; if(tips.isOk){ - this.editForm=res.data.data + this.rawDatas=res.data.data this.initData() this.currOpType="edit"; this.$emit('submit');// @submit="afterAddSubmit" @@ -201,18 +203,14 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 } }); }, - initData: function(){ - this.currOpType=this.opType + initData: function(){ if(this.xmTestPlan){ - this.editForm = Object.assign({},this.xmTestPlan); - } - - if(this.opType=='edit'){ - - }else{ - - } - this.editFormBak={...this.editForm} + this.rawDatas = Object.assign({},this.xmTestPlan); + } + if(this.rptDatas){ + this.rawDatas=Object.assign({},this.rptDatas) + } + this.rawDatasBak={...this.rawDatas} }, editSomeFields(row,fieldName,$event){ @@ -235,18 +233,18 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 func(params).then(res=>{ let tips = res.data.tips; if(tips.isOk){ - this.editFormBak=[...this.editForm] + this.rawDatasBak=[...this.rawDatas] this.$emit('edit-fields',params) }else{ - Object.assign(this.editForm,this.editFormBak) + Object.assign(this.rawDatas,this.rawDatasBak) this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'}) } - }).catch((e)=>Object.assign(this.editForm,this.editFormBak)) + }).catch((e)=>Object.assign(this.rawDatas,this.rawDatasBak)) }, onPorjectConfirm(row){ - this.editForm.projectId=row.id - this.editForm.projectName=row.name - this.editForm.name=this.editForm.projectName+'-测试计划-V1.0' + this.rawDatas.projectId=row.id + this.rawDatas.projectName=row.name + this.rawDatas.name=this.rawDatas.projectName+'-测试计划-V1.0' }, sizeAutoChange(){ @@ -263,149 +261,6 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 - \ No newline at end of file diff --git a/src/views/xm/rpt/comps.js b/src/views/xm/rpt/comps.js deleted file mode 100644 index 337426b5..00000000 --- a/src/views/xm/rpt/comps.js +++ /dev/null @@ -1,67 +0,0 @@ - -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'), - - - xmTestPlanRptOverview:()=>import('./testPlan/testPlanRptOverview.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'), -}; - - - diff --git a/src/views/xm/rpt/CompsCard.vue b/src/views/xm/rpt/index/CompsCard.vue similarity index 99% rename from src/views/xm/rpt/CompsCard.vue rename to src/views/xm/rpt/index/CompsCard.vue index 54e89691..a35d1420 100644 --- a/src/views/xm/rpt/CompsCard.vue +++ b/src/views/xm/rpt/index/CompsCard.vue @@ -71,7 +71,7 @@ import util from '@/common/js/util';//全局公共库 import seq from '@/common/js/sequence';//全局公共库 import VueGridLayout from 'vue-grid-layout'; import { mapGetters } from 'vuex' -import CompsSet from '@/views/xm/rpt/CompsSet' +import CompsSet from '@/views/xm/rpt/index/CompsSet' import rptDataSelect from '@/views/xm/rpt/his/rptDataSelect' import { addXmRptData } from '@/api/xm/core/xmRptData'; diff --git a/src/views/xm/rpt/CompsCardHisDetail.vue b/src/views/xm/rpt/index/CompsCardHisDetail.vue similarity index 98% rename from src/views/xm/rpt/CompsCardHisDetail.vue rename to src/views/xm/rpt/index/CompsCardHisDetail.vue index 9588a518..c21f2168 100644 --- a/src/views/xm/rpt/CompsCardHisDetail.vue +++ b/src/views/xm/rpt/index/CompsCardHisDetail.vue @@ -33,7 +33,7 @@ import util from '@/common/js/util';//全局公共库 import seq from '@/common/js/sequence';//全局公共库 import { mapGetters } from 'vuex' -import CompsSet from '@/views/xm/rpt/CompsSet' +import CompsSet from '@/views/xm/rpt/index/CompsSet' import rptComps from './comps.js';//组件库 @@ -71,7 +71,7 @@ export default { return "企业级" } if(this.xmRptData.bizType=='6'){ - return "测试级" + return "测试计划级" } } diff --git a/src/views/xm/rpt/CompsSet.vue b/src/views/xm/rpt/index/CompsSet.vue similarity index 77% rename from src/views/xm/rpt/CompsSet.vue rename to src/views/xm/rpt/index/CompsSet.vue index 886de9bd..2833b3af 100644 --- a/src/views/xm/rpt/CompsSet.vue +++ b/src/views/xm/rpt/index/CompsSet.vue @@ -41,12 +41,12 @@ + + \ No newline at end of file diff --git a/src/views/xm/rpt/product/productRptOverview.vue b/src/views/xm/rpt/product/productRptOverview.vue new file mode 100644 index 00000000..1ec090f8 --- /dev/null +++ b/src/views/xm/rpt/product/productRptOverview.vue @@ -0,0 +1,266 @@ + + + + {{ rawDatas.name }} + + + + {{ title?title:'报告概览' }} + + + + + + + {{rawDatas.totalCases?rawDatas.totalCases:'0'}}个 + 用例数 + + + + + {{caseFuGaiLv}}% + 用例覆盖率 + + + + + {{caseTongGuoLv}}% + 用例通过率 + + + + + {{rawDatas.bugCnt?rawDatas.bugCnt:0}}个 + 缺陷数 + + + + + + + + + + + + + + + + + + + {{rawDatas.casedbName}} + + + + + + 选择项目 + + {{rawDatas.projectName}} + + {{rawDatas.projectName}} + + + {{rawDatas.productName}} + + + + + + + + + 报告总结 + + + + + + + 提交 + + + + + + + + \ No newline at end of file diff --git a/src/views/xm/rpt/project/projectRptOverview.vue b/src/views/xm/rpt/project/projectRptOverview.vue new file mode 100644 index 00000000..1ec090f8 --- /dev/null +++ b/src/views/xm/rpt/project/projectRptOverview.vue @@ -0,0 +1,266 @@ + + + + {{ rawDatas.name }} + + + + {{ title?title:'报告概览' }} + + + + + + + {{rawDatas.totalCases?rawDatas.totalCases:'0'}}个 + 用例数 + + + + + {{caseFuGaiLv}}% + 用例覆盖率 + + + + + {{caseTongGuoLv}}% + 用例通过率 + + + + + {{rawDatas.bugCnt?rawDatas.bugCnt:0}}个 + 缺陷数 + + + + + + + + + + + + + + + + + + + {{rawDatas.casedbName}} + + + + + + 选择项目 + + {{rawDatas.projectName}} + + {{rawDatas.projectName}} + + + {{rawDatas.productName}} + + + + + + + + + 报告总结 + + + + + + + 提交 + + + + + + + + \ No newline at end of file diff --git a/src/views/xm/rpt/testCase/testCasedbRptOverview.vue b/src/views/xm/rpt/testCase/testCasedbRptOverview.vue new file mode 100644 index 00000000..1ec090f8 --- /dev/null +++ b/src/views/xm/rpt/testCase/testCasedbRptOverview.vue @@ -0,0 +1,266 @@ + + + + {{ rawDatas.name }} + + + + {{ title?title:'报告概览' }} + + + + + + + {{rawDatas.totalCases?rawDatas.totalCases:'0'}}个 + 用例数 + + + + + {{caseFuGaiLv}}% + 用例覆盖率 + + + + + {{caseTongGuoLv}}% + 用例通过率 + + + + + {{rawDatas.bugCnt?rawDatas.bugCnt:0}}个 + 缺陷数 + + + + + + + + + + + + + + + + + + + {{rawDatas.casedbName}} + + + + + + 选择项目 + + {{rawDatas.projectName}} + + {{rawDatas.projectName}} + + + {{rawDatas.productName}} + + + + + + + + + 报告总结 + + + + + + + 提交 + + + + + + + + \ No newline at end of file diff --git a/src/views/xm/rpt/testPlan/testPlanRptOverview.vue b/src/views/xm/rpt/testPlan/testPlanRptOverview.vue index f47da10f..1ec090f8 100644 --- a/src/views/xm/rpt/testPlan/testPlanRptOverview.vue +++ b/src/views/xm/rpt/testPlan/testPlanRptOverview.vue @@ -261,149 +261,6 @@ import MdpSelectUserXm from '@/views/xm/core/components/MdpSelectUserXm';//修 - \ No newline at end of file