From b5a0e3babb0bec5853110664fe56dd5bead507d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 16 Jul 2021 21:26:57 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/routes_xm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index 79c2f9b6..1c1105e2 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -16,7 +16,7 @@ export default { // leaf: true,//只有一个节点 children: [ - { path: 'xmProject/XmProjectAdd', component: _import('xm/core/xmProject/XmProjectAdd'), name: 'xmProjectAdd', meta: { title: '项目立项' }}, + { path: 'xmProject/XmProjectAdd', component: _import('xm/core/xmProject/XmProjectAdd'), name: 'xmProjectAdd',hidden:true, meta: { title: '项目立项' }}, { path: 'xmProject/XmProjectAllMng', component: _import('xm/core/xmProject/XmProjectAllMng'), name: 'xmProjectAllMng', meta: { title: '项目总览' }}, { path: 'xmProject/XmProjectMng', component: _import('xm/core/xmProject/XmProjectMng'), name: 'xmProjectMng', meta: { title: '项目(我的)' }}, { path: 'xmProjectState/XmCockpit', name: 'XmCockpit', meta: { title: '领导驾驶舱' ,openTab:true,outUrl:'${curlDomain}/xm/'+process.env.VERSION+'/#/datav/xm/branch/branchDatavFullScreen'}}, From 9fc80cb5b9d4a352276e894fbba3ba23c59faa2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 17 Jul 2021 15:28:44 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/index.js | 4 +-- src/styles/mdp.scss | 6 ++-- .../core/xmIteration/XmIterationComplex.vue | 6 ++-- src/views/xm/core/xmMenu/XmMenuMng.vue | 13 +++----- src/views/xm/core/xmProduct/XmProductMng.vue | 33 ++++++++++++------- 5 files changed, 34 insertions(+), 28 deletions(-) diff --git a/config/index.js b/config/index.js index 54b75a90..f3965d23 100644 --- a/config/index.js +++ b/config/index.js @@ -11,7 +11,7 @@ module.exports = { assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { - /** + '/api/m1/xm': { target: 'http://localhost:7067', changeOrigin: true, @@ -19,7 +19,7 @@ module.exports = { '^/api/m1/xm': '/xm' } }, - + /** '/api/m1/workflow': { target: 'http://localhost:7080', changeOrigin: true, diff --git a/src/styles/mdp.scss b/src/styles/mdp.scss index c6ae1bb1..00f73bb8 100644 --- a/src/styles/mdp.scss +++ b/src/styles/mdp.scss @@ -165,14 +165,14 @@ .tips{ position:absolute; - font-size: 10px; - bottom: 0px; + font-size: 14px; + bottom: -10px; color: red; padding-left: 10px; flex: 0 0 auto; display: flex; flex-direction: row; justify-content: flex-start; - align-items: center; + align-items: bottom; overflow-x: hidden; } \ No newline at end of file diff --git a/src/views/xm/core/xmIteration/XmIterationComplex.vue b/src/views/xm/core/xmIteration/XmIterationComplex.vue index 248eecd7..e381173c 100644 --- a/src/views/xm/core/xmIteration/XmIterationComplex.vue +++ b/src/views/xm/core/xmIteration/XmIterationComplex.vue @@ -15,13 +15,13 @@ - + - + - + diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index b1aa57ba..5e6c938c 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -5,7 +5,7 @@ - + @@ -23,12 +23,9 @@ :default-time="['00:00:00','23:59:59']" :picker-options="pickerOptions" > - - + - + 故事 修改 @@ -89,9 +86,9 @@ - + + - diff --git a/src/views/xm/core/xmProduct/XmProductMng.vue b/src/views/xm/core/xmProduct/XmProductMng.vue index 08b17ff8..cf29c56b 100644 --- a/src/views/xm/core/xmProduct/XmProductMng.vue +++ b/src/views/xm/core/xmProduct/XmProductMng.vue @@ -5,7 +5,6 @@ - @@ -38,21 +37,20 @@ trigger="click" > + 查询条件 产品查询范围: - + - - + - 创建时间: - 产品名称: @@ -84,7 +81,18 @@ 选责任人 我的 - + + + + 项目 {{selProject?selProject.name:''}} + + + + + 迭代 {{xmIteration.iterationName}} + + + 查询 @@ -182,7 +190,7 @@ import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; export default { - props:['selProject'], + props:['selProject','xmIteration'], computed: { ...mapGetters([ 'userInfo','roles' @@ -307,18 +315,19 @@ } if(this.filters.queryScope=="branchId"){ - params.branchId=this.userInfo.branchId - params.projectId=null; + params.branchId=this.userInfo.branchId } - if(!this.selProject && this.filters.queryScope!='productId'){ + if(!this.selProject && !this.xmIteration && this.filters.queryScope!='productId' && this.filters.queryScope!='compete'){ if(!this.dateRanger || this.dateRanger.length==0){ this.$message({showClose: true, message: "创建日期范围不能为空", type: 'error' }); return; } params.ctimeStart=this.dateRanger[0]+" 00:00:00" params.ctimeEnd=this.dateRanger[1]+" 23:59:59" + } + if(this.xmIteration){ + params.iterationId=this.xmIteration.id } - if(this.filters.key!==""){ params.key="%"+this.filters.key+"%" } From 7e585594c16d3122a65066cb3c5e86fdbcd5c861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 18 Jul 2021 00:21:12 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E8=AF=95=E5=9B=BE=E3=80=81=E8=BF=AD=E4=BB=A3=E8=AF=95=E5=9B=BE?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE=E8=AF=95=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/routes_xm.js | 7 +- .../core/xmIteration/XmIterationComplex.vue | 32 ++-- src/views/xm/core/xmMenu/XmMenuMng.vue | 25 ++- .../xm/core/xmProduct/XmProductComplex.vue | 173 ++++++++++++++++++ src/views/xm/core/xmProduct/XmProductMng.vue | 29 ++- .../xm/core/xmProduct/XmProductSelect.vue | 13 +- src/views/xm/core/xmProject/XmProjectInfo.vue | 10 +- .../core/xmProjectPhase/XmProjectPhaseMng.vue | 11 +- .../xmProjectPhase/XmProjectPhaseSelect.vue | 12 +- .../xm/core/xmQuestion/XmQuestionMng.vue | 40 +++- src/views/xm/core/xmTask/XmTaskMng.vue | 11 +- 11 files changed, 312 insertions(+), 51 deletions(-) create mode 100644 src/views/xm/core/xmProduct/XmProductComplex.vue diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index 1c1105e2..bd1037ec 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -80,16 +80,18 @@ export default { { path: '/xm/core', component: Layout, - name: '用户故事', + name: '产品管理', iconCls: 'fa el-icon-menu', meta: { - title: '用户故事', + title: '产品管理', icon: 'project' }, // leaf: true,//只有一个节点 children: [ + { path: 'xmProduct/XmProductComplex', component: _import('xm/core/xmProduct/XmProductComplex'), name: 'XmProductComplex', meta: { title: '产品总览' }}, { path: 'xmProduct/XmProductMng', component: _import('xm/core/xmProduct/XmProductMng'), name: 'XmProductMng', meta: { title: '产品管理' }}, + { path: 'xmMenu/XmMenuMng', component: _import('xm/core/xmMenu/XmMenuMng'), name: 'XmMenuMng', meta: { title: '故事管理' }}, { path: 'xmMenuExchange/XmMenuExchangeMng', component: _import('xm/core/xmMenuExchange/XmMenuExchangeMng'), name: 'XmMenuExchangeMng', meta: { title: '互动评论' }}, { path: 'xmMenuTemplate/XmMenuTemplateMng', component: _import('xm/core/xmMenuTemplate/XmMenuTemplateMng'), name: 'XmMenuTemplateMng', meta: { title: '故事模板' }}, @@ -106,6 +108,7 @@ export default { }, // leaf: true,//只有一个节点 children: [ + { path: 'xmIteration/XmIterationComplex', component: _import('xm/core/xmIteration/XmIterationComplex'), name: 'XmIterationComplex', meta: { title: '迭代总览' }}, { path: 'xmIteration/XmIterationMng', component: _import('xm/core/xmIteration/XmIterationMng'), name: 'XmIterationMng', meta: { title: '迭代管理' }}, { path: 'xmIterationMenu/XmIterationMenuMng', component: _import('xm/core/xmIterationMenu/XmIterationMenuMng'), name: 'XmIterationMenuMng', meta: { title: '故事迭代' }}, ] diff --git a/src/views/xm/core/xmIteration/XmIterationComplex.vue b/src/views/xm/core/xmIteration/XmIterationComplex.vue index e381173c..1702bb63 100644 --- a/src/views/xm/core/xmIteration/XmIterationComplex.vue +++ b/src/views/xm/core/xmIteration/XmIterationComplex.vue @@ -1,27 +1,27 @@ @@ -188,6 +203,7 @@ import XmProductStateMng from '../xmProductState/XmProductStateMng';//修改界面 import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; +import XmProjectList from '../xmProject/XmProjectList.vue'; export default { props:['selProject','xmIteration'], @@ -196,6 +212,12 @@ 'userInfo','roles' ]) }, + watch:{ + + xmIteration:function(){ + this.getXmProducts(); + } + }, data() { const beginDate = new Date(); const endDate = new Date(); @@ -240,6 +262,7 @@ util.formatDate.format(endDate, "yyyy-MM-dd") ], pickerOptions: util.pickerOptions('datarange'), + projectVisible:false, /**begin 自定义属性请在下面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/ @@ -465,6 +488,9 @@ this.filters.pmUser=this.userInfo; this.searchXmProducts(); }, + onProjectSelected(projects){ + + } /**end 自定义函数请在上面加**/ },//end methods @@ -474,6 +500,7 @@ XmIterationMng, XmProductStateMng, UsersSelect, + XmProjectList, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmProduct/XmProductSelect.vue b/src/views/xm/core/xmProduct/XmProductSelect.vue index 7a780233..e369c2f5 100644 --- a/src/views/xm/core/xmProduct/XmProductSelect.vue +++ b/src/views/xm/core/xmProduct/XmProductSelect.vue @@ -102,12 +102,17 @@ export default { - props:['isSelectProduct','selProject'], + props:['isSelectProduct','selProject','xmIteration'], computed: { ...mapGetters([ 'userInfo','roles' ]) }, + watch:{ + xmIteration(){ + this.getXmProducts(); + } + }, data() { const beginDate = new Date(); const endDate = new Date(); @@ -208,6 +213,10 @@ if(this.selProject){ params.projectId=this.selProject.id } + + if(this.xmIteration){ + params.iterationId=this.xmIteration.id + } params.queryScope=this.filters.queryScope if(this.filters.queryScope=='productId'){ if(!this.filters.id){ @@ -221,7 +230,7 @@ params.branchId=this.userInfo.branchId params.projectId=null; } - if(!this.selProject && this.filters.queryScope!='productId'){ + if(!this.selProject && !this.xmIteration && this.filters.queryScope!='productId'){ if(!this.dateRanger || this.dateRanger.length==0){ this.$message({showClose: true, message: "创建日期范围不能为空", type: 'error' }); return; diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index 5abc4bf1..fb6f63ce 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -143,7 +143,7 @@ - + @@ -193,10 +193,10 @@ import xmMenuMng from '../xmMenu/XmMenuMng'; import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan'; import xmProjectStateMng from '../xmProjectState/XmProjectStateMng'; - import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng'; - import xmProductMng from '../xmProduct/XmProductMng'; + import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng'; import XmIterationComplex from '../xmIteration/XmIterationComplex.vue'; import XmProjectOveriewComplex from './XmProjectOveriewComplex.vue'; +import XmProductComplex from '../xmProduct/XmProductComplex.vue'; export default { @@ -416,9 +416,9 @@ xmProjectStateMng, xmTestCaseExecMng, xmProjectGroupSelect, - XmIterationComplex, - xmProductMng, + XmIterationComplex, XmProjectOveriewComplex, + XmProductComplex, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue b/src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue index 5c2eeade..f4013df0 100644 --- a/src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue +++ b/src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue @@ -294,10 +294,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; } }, - props:['selProject'], + props:['selProject','xmIteration'], watch:{ - selProject:function(selProject,old){ - console.log('this.selProject==', selProject); + selProject:function(selProject,old){ if(!selProject){ this.xmProjectPhases=[] @@ -307,6 +306,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; this.searchXmProjectPhases(); } } + }, + xmIteration(){ + this.searchXmProjectPhases() } }, data() { @@ -419,6 +421,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; params.projectId=this.selProject.id } + if(this.xmIteration){ + params.iterationId=this.xmIteration.id + } this.load.list = true; listXmProjectPhase(params).then((res) => { var tips=res.data.tips; diff --git a/src/views/xm/core/xmProjectPhase/XmProjectPhaseSelect.vue b/src/views/xm/core/xmProjectPhase/XmProjectPhaseSelect.vue index a305a106..ccdc3ef6 100644 --- a/src/views/xm/core/xmProjectPhase/XmProjectPhaseSelect.vue +++ b/src/views/xm/core/xmProjectPhase/XmProjectPhaseSelect.vue @@ -49,10 +49,9 @@ }, }, - props:['selProject'], + props:['selProject','xmIteration'], watch:{ - selProject:function(selProject,old){ - console.log('this.selProject==', selProject); + selProject:function(selProject,old){ if(!selProject){ this.xmProjectPhases=[] @@ -62,6 +61,9 @@ this.searchXmProjectPhases(); } } + }, + xmIteration(){ + this.searchXmProjectPhases(); } }, data() { @@ -172,6 +174,10 @@ if(this.selProject!=null && this.selProject!=undefined){ params.projectId=this.selProject.id + } + if(this.xmIteration!=null && this.xmIteration!=undefined){ + params.iterationId=this.xmIteration.id + } this.load.list = true; listXmProjectPhase(params).then((res) => { diff --git a/src/views/xm/core/xmQuestion/XmQuestionMng.vue b/src/views/xm/core/xmQuestion/XmQuestionMng.vue index 531bc631..d9355283 100644 --- a/src/views/xm/core/xmQuestion/XmQuestionMng.vue +++ b/src/views/xm/core/xmQuestion/XmQuestionMng.vue @@ -153,8 +153,8 @@ {{qtype=='risk'?'升级':'升级'}} - - {{scope.row.name}} + + {{scope.row.name}} @@ -213,18 +213,20 @@ 'userInfo','roles' ]), }, - props: ["selProject",'qtype','xmTestCaseExec','xmTestCase','visible'], + props: ["selProject",'qtype','xmTestCaseExec','xmTestCase','xmIteration','xmProduct'], watch:{ selProject:function(selProject){ this.filters.selProject=this.selProject //this.getXmQuestions(); + }, + qtype:function(){ + this.getXmQuestions() }, - visible(visible){ - if(visible==true){ - this.getXmQuestions(); - } - }, - qtype(){ + xmIteration:function(){ + this.getXmQuestions() + }, + xmProduct:function(){ + this.filters.product=this.xmProduct this.getXmQuestions() } }, @@ -449,6 +451,9 @@ if(this.xmTestCase){ params.caseId=this.xmTestCase.id } + if(this.xmIteration){ + params.iterationId=this.xmIteration.id + } if(this.filters.key){ params.key='%'+this.filters.key+'%' @@ -874,7 +879,15 @@ } if(row.handlerUsername){ if(row.lremark){ - msg='已指派给'+row.handlerUsername+','+row.lremark + var lremark=row.lremark; + lremark=lremark.replace(/<\w?>/g,""); + lremark=lremark.replace(/<\/\w?>/g,""); + if(lremark.length<=10){ + msg='已指派给'+row.handlerUsername+','+lremark + }else{ + msg='已指派给'+row.handlerUsername+','+lremark.substr(0,10)+"..." + } + }else{ msg='已指派给'+row.handlerUsername; } @@ -895,6 +908,9 @@ if(this.selProject){ this.filters.selProject=this.selProject } + if(this.xmProduct){ + this.filters.product=this.xmProduct + } this.filters.handlerUserid=this.userInfo.userid; this.filters.handlerUsername=this.userInfo.username; this.$nextTick(() => { @@ -932,4 +948,8 @@ margin-top: 7px; padding-bottom: 10px; } +.badge-item { + margin-top: 10px; + margin-right: 40px; +} diff --git a/src/views/xm/core/xmTask/XmTaskMng.vue b/src/views/xm/core/xmTask/XmTaskMng.vue index 7b6c3b51..c1e9fc06 100644 --- a/src/views/xm/core/xmTask/XmTaskMng.vue +++ b/src/views/xm/core/xmTask/XmTaskMng.vue @@ -2,7 +2,7 @@
- + @@ -518,7 +518,7 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; } }, - props: ["selProject","isTaskCenter","isMy",'menuId','menuName','xmProduct'], + props: ["selProject","isTaskCenter","isMy",'menuId','menuName','xmProduct',"xmIteration"], watch: { "selProject": function(oval,val) { this.filters.selProject=this.selProject; @@ -534,6 +534,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; }, 'xmProduct':function(){ this.filters.product=this.xmProduct; + }, + xmIteration(){ + this.getXmTasks(); } }, data() { @@ -765,7 +768,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; if(this.filters.product){ params.productId=this.filters.product.id } - + if(this.xmIteration){ + params.iterationId=this.xmIteration.id + } params.createTimeStart=this.dateRanger[0]+" 00:00:00" params.createTimeEnd=this.dateRanger[1]+" 23:59:59" getTask(params).then((res) => { From 6cbef2eb1253b62e856b2025071fd2a0c873a9bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 18 Jul 2021 00:48:06 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/xm/core/xmMenu/XmMenuMng.vue | 6 +++--- src/views/xm/core/xmProduct/XmProductComplex.vue | 5 +---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index 32524bc0..03d40451 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -356,7 +356,7 @@ this.getXmMenus(); }, //获取列表 XmMenu xm_project_menu - getXmMenus() { + getXmMenus() { let params = { pageSize: this.pageInfo.pageSize, pageNum: this.pageInfo.pageNum, @@ -370,7 +370,7 @@ } params.orderBy= orderBys.join(",") } - if( this.filters.product!==null && this.filters.product.id!=''){ + if( this.filters.product && this.filters.product.id){ params.productId=this.filters.product.id }else { this.$message({showClose: true, message: "请先选择产品", type: 'success' }); @@ -422,7 +422,7 @@ if(!this.selProject){ listXmMenuWithState(params).then( callback ).catch( err => this.load.list = false ); }else{ - listXmMenuWithPlan + listXmMenuWithPlan(params).then( callback ).catch( err => this.load.list = false ); } }, diff --git a/src/views/xm/core/xmProduct/XmProductComplex.vue b/src/views/xm/core/xmProduct/XmProductComplex.vue index 55d82068..e10121af 100644 --- a/src/views/xm/core/xmProduct/XmProductComplex.vue +++ b/src/views/xm/core/xmProduct/XmProductComplex.vue @@ -25,10 +25,7 @@ - - - - + From d3f926b7fce18a6193644100d0406fff203400a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 18 Jul 2021 01:05:00 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/xmIteration/XmIterationComplex.vue | 13 +- .../xm/core/xmProduct/XmProductOverview.vue | 331 ++++++++++++++++++ src/views/xm/core/xmProject/XmProjectInfo.vue | 6 +- ...mplex.vue => XmProjectOverviewComplex.vue} | 0 src/views/xm/core/xmTask/XmTaskMng.vue | 3 +- 5 files changed, 343 insertions(+), 10 deletions(-) create mode 100644 src/views/xm/core/xmProduct/XmProductOverview.vue rename src/views/xm/core/xmProject/{XmProjectOveriewComplex.vue => XmProjectOverviewComplex.vue} (100%) diff --git a/src/views/xm/core/xmIteration/XmIterationComplex.vue b/src/views/xm/core/xmIteration/XmIterationComplex.vue index 1702bb63..7db348bf 100644 --- a/src/views/xm/core/xmIteration/XmIterationComplex.vue +++ b/src/views/xm/core/xmIteration/XmIterationComplex.vue @@ -6,9 +6,13 @@ - - 产品、战略 - 产品、战略 + + + 迭代概览 + 迭代概览 + + + @@ -20,9 +24,6 @@ - - - diff --git a/src/views/xm/core/xmProduct/XmProductOverview.vue b/src/views/xm/core/xmProduct/XmProductOverview.vue new file mode 100644 index 00000000..e369c2f5 --- /dev/null +++ b/src/views/xm/core/xmProduct/XmProductOverview.vue @@ -0,0 +1,331 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index fb6f63ce..e89c43e7 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -141,7 +141,7 @@ - + @@ -195,7 +195,7 @@ import xmProjectStateMng from '../xmProjectState/XmProjectStateMng'; import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng'; import XmIterationComplex from '../xmIteration/XmIterationComplex.vue'; - import XmProjectOveriewComplex from './XmProjectOveriewComplex.vue'; + import XmProjectOverviewComplex from './XmProjectOverviewComplex.vue'; import XmProductComplex from '../xmProduct/XmProductComplex.vue'; @@ -417,7 +417,7 @@ import XmProductComplex from '../xmProduct/XmProductComplex.vue'; xmTestCaseExecMng, xmProjectGroupSelect, XmIterationComplex, - XmProjectOveriewComplex, + XmProjectOverviewComplex, XmProductComplex, //在下面添加其它组件 }, diff --git a/src/views/xm/core/xmProject/XmProjectOveriewComplex.vue b/src/views/xm/core/xmProject/XmProjectOverviewComplex.vue similarity index 100% rename from src/views/xm/core/xmProject/XmProjectOveriewComplex.vue rename to src/views/xm/core/xmProject/XmProjectOverviewComplex.vue diff --git a/src/views/xm/core/xmTask/XmTaskMng.vue b/src/views/xm/core/xmTask/XmTaskMng.vue index c1e9fc06..67199e95 100644 --- a/src/views/xm/core/xmTask/XmTaskMng.vue +++ b/src/views/xm/core/xmTask/XmTaskMng.vue @@ -534,8 +534,9 @@ import XmProjectGroupSelect from '../xmProjectGroup/XmProjectGroupSelect.vue'; }, 'xmProduct':function(){ this.filters.product=this.xmProduct; + this.getXmTasks(); }, - xmIteration(){ + xmIteration:function(){ this.getXmTasks(); } }, From 531eda898dc5cf69a4048069b3045dcbf3362987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 18 Jul 2021 18:36:29 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E8=AF=95=E5=9B=BE=E3=80=81=E8=BF=AD=E4=BB=A3=E8=AF=95=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/xm/core/xmIterationProductLink.js | 30 +++ src/api/xm/core/xmProductProjectLink.js | 30 +++ .../xm/core/xmIteration/XmIterationAdd.vue | 2 +- .../xm/core/xmIteration/XmIterationMng.vue | 105 ++++++-- .../xm/core/xmIteration/XmIterationSelect.vue | 3 + .../XmIterationProductLinkAdd.vue | 123 +++++++++ .../XmIterationProductLinkEdit.vue | 118 ++++++++ .../XmIterationProductLinkMng.vue | 252 ++++++++++++++++++ src/views/xm/core/xmProduct/XmProductAdd.vue | 2 +- .../xm/core/xmProduct/XmProductComplex.vue | 6 +- src/views/xm/core/xmProduct/XmProductMng.vue | 103 +++++-- .../xm/core/xmProduct/XmProductSelect.vue | 5 + .../XmProductProjectLinkAdd.vue | 123 +++++++++ .../XmProductProjectLinkEdit.vue | 118 ++++++++ .../XmProductProjectLinkMng.vue | 252 ++++++++++++++++++ 15 files changed, 1213 insertions(+), 59 deletions(-) create mode 100644 src/api/xm/core/xmIterationProductLink.js create mode 100644 src/api/xm/core/xmProductProjectLink.js create mode 100644 src/views/xm/core/xmIterationProductLink/XmIterationProductLinkAdd.vue create mode 100644 src/views/xm/core/xmIterationProductLink/XmIterationProductLinkEdit.vue create mode 100644 src/views/xm/core/xmIterationProductLink/XmIterationProductLinkMng.vue create mode 100644 src/views/xm/core/xmProductProjectLink/XmProductProjectLinkAdd.vue create mode 100644 src/views/xm/core/xmProductProjectLink/XmProductProjectLinkEdit.vue create mode 100644 src/views/xm/core/xmProductProjectLink/XmProductProjectLinkMng.vue diff --git a/src/api/xm/core/xmIterationProductLink.js b/src/api/xm/core/xmIterationProductLink.js new file mode 100644 index 00000000..bfbd5166 --- /dev/null +++ b/src/api/xm/core/xmIterationProductLink.js @@ -0,0 +1,30 @@ +import axios from '@/utils/request' + +import config from '@/common/config' + +let base = config.getCoreBasePath(); + + +/** + * 迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表 + *1 默认只开放普通查询,所有查询,只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录【数如果是0后台会自动计算总记录数非0不会自动计算】},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉, + *2 查询、新增、修改的参数格式 params={iterationId:'迭代表主键 主键',productId:'产品表主键 主键',ctime:'创建时间',cuserid:'创建人编号',cusername:'创建人姓名',linkStatus:'关联状态1关联0取消关联'} + **/ + +//普通查询 条件之间and关系 +export const listXmIterationProductLink = params => { return axios.get(`${base}/xm/core/xmIterationProductLink/list`, { params: params }); }; + +//模糊查询迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表 条件之间or关系 +//export const listXmIterationProductLinkKey = params => { return axios.get(`${base}/xm/core/xmIterationProductLink/listKey`, { params: params }); }; + +//删除一条迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表 params={iterationId:'迭代表主键 主键',productId:'产品表主键 主键'} +export const delXmIterationProductLink = params => { return axios.post(`${base}/xm/core/xmIterationProductLink/del`,params); }; + +//批量删除迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表 params=[{iterationId:'迭代表主键 主键',productId:'产品表主键 主键'}] +export const batchDelXmIterationProductLink = params => { return axios.post(`${base}/xm/core/xmIterationProductLink/batchDel`, params); }; + +//修改一条迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表记录 +export const editXmIterationProductLink = params => { return axios.post(`${base}/xm/core/xmIterationProductLink/edit`, params); }; + +//新增一条迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表 +export const addXmIterationProductLink = params => { return axios.post(`${base}/xm/core/xmIterationProductLink/add`, params); }; \ No newline at end of file diff --git a/src/api/xm/core/xmProductProjectLink.js b/src/api/xm/core/xmProductProjectLink.js new file mode 100644 index 00000000..8528b1c2 --- /dev/null +++ b/src/api/xm/core/xmProductProjectLink.js @@ -0,0 +1,30 @@ +import axios from '@/utils/request' + +import config from '@/common/config' + +let base = config.getCoreBasePath(); + + +/** + * 产品与项目的关联关系表,一般由产品经理挂接项目到产品上 + *1 默认只开放普通查询,所有查询,只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录【数如果是0后台会自动计算总记录数非0不会自动计算】},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉, + *2 查询、新增、修改的参数格式 params={projectId:'项目表中的主键 主键',productId:'产品表中的主键 主键',ctime:'创建时间',cuserid:'创建人编号',cusername:'创建人姓名',linkStatus:'关联状态1关联0取消关联'} + **/ + +//普通查询 条件之间and关系 +export const listXmProductProjectLink = params => { return axios.get(`${base}/xm/core/xmProductProjectLink/list`, { params: params }); }; + +//模糊查询产品与项目的关联关系表,一般由产品经理挂接项目到产品上 条件之间or关系 +//export const listXmProductProjectLinkKey = params => { return axios.get(`${base}/xm/core/xmProductProjectLink/listKey`, { params: params }); }; + +//删除一条产品与项目的关联关系表,一般由产品经理挂接项目到产品上 params={projectId:'项目表中的主键 主键',productId:'产品表中的主键 主键'} +export const delXmProductProjectLink = params => { return axios.post(`${base}/xm/core/xmProductProjectLink/del`,params); }; + +//批量删除产品与项目的关联关系表,一般由产品经理挂接项目到产品上 params=[{projectId:'项目表中的主键 主键',productId:'产品表中的主键 主键'}] +export const batchDelXmProductProjectLink = params => { return axios.post(`${base}/xm/core/xmProductProjectLink/batchDel`, params); }; + +//修改一条产品与项目的关联关系表,一般由产品经理挂接项目到产品上记录 +export const editXmProductProjectLink = params => { return axios.post(`${base}/xm/core/xmProductProjectLink/edit`, params); }; + +//新增一条产品与项目的关联关系表,一般由产品经理挂接项目到产品上 +export const addXmProductProjectLink = params => { return axios.post(`${base}/xm/core/xmProductProjectLink/add`, params); }; \ No newline at end of file diff --git a/src/views/xm/core/xmIteration/XmIterationAdd.vue b/src/views/xm/core/xmIteration/XmIterationAdd.vue index e3c81d30..a8db034e 100644 --- a/src/views/xm/core/xmIteration/XmIterationAdd.vue +++ b/src/views/xm/core/xmIteration/XmIterationAdd.vue @@ -128,7 +128,7 @@ var tips=res.data.tips; if(tips.isOk){ this.$refs['addForm'].resetFields(); - this.$emit('submit');// @submit="afterAddSubmit" + this.$emit('submit',res.data.data);// @submit="afterAddSubmit" } this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' }); }).catch( err => this.load.add=false); diff --git a/src/views/xm/core/xmIteration/XmIterationMng.vue b/src/views/xm/core/xmIteration/XmIterationMng.vue index c1114d8e..2342fdb1 100644 --- a/src/views/xm/core/xmIteration/XmIterationMng.vue +++ b/src/views/xm/core/xmIteration/XmIterationMng.vue @@ -26,7 +26,9 @@ title="" width="400" trigger="click" > + 查询条件 + 迭代查询范围: @@ -68,6 +70,12 @@ 甘特图 + 更多操作 + + + 将更多迭代加入产品{{xmProduct.productName}} + + @@ -93,13 +101,8 @@ @@ -120,6 +123,10 @@ + + + +
@@ -129,12 +136,15 @@ import config from '@/common/config';//全局公共库 import { listOption } from '@/api/mdp/meta/itemOption';//下拉框数据查询 import { listXmIteration,listXmIterationWithState, delXmIteration, batchDelXmIteration,loadTasksToXmIterationState } from '@/api/xm/core/xmIteration'; + import { addXmIterationProductLink,delXmIterationProductLink } from '@/api/xm/core/xmIterationProductLink'; + import XmIterationAdd from './XmIterationAdd';//新增界面 import XmIterationEdit from './XmIterationEdit';//修改界面 import XmIterationStateMng from '../xmIterationState/XmIterationStateMng';//修改界面 import XmGantt from '../components/xm-gantt'; import { mapGetters } from 'vuex' +import XmIterationSelect from './XmIterationSelect.vue'; export default { computed: { @@ -146,12 +156,18 @@ return this.translateDataToTree(this.xmIterations); }, }, - props:['productId','menuId','visible'], + props:['xmProduct','selProject','menuId','visible'], watch:{ visible:function(visible){ if(visible==true){ this.getXmIterations(); } + }, + xmProduct:function(){ + this.getXmIterations(); + }, + selProject:function(){ + this.getXmIterations(); } }, data() { @@ -207,17 +223,18 @@ /**begin 自定义属性请在下面加 请加备注**/ valueChangeRows:[], parentIteration:null, - iterationStateVisible:false, - gstcVisible:false, - tableHeight:300, - ganrrColumns: { - children: 'children', - name: 'iterationName', - id: 'id', - pid: 'pid', - startDate: 'startTime', - endDate: 'endTime', - } + iterationStateVisible:false, + iterationSelectVisible:false, + gstcVisible:false, + tableHeight:300, + ganrrColumns: { + children: 'children', + name: 'iterationName', + id: 'id', + pid: 'pid', + startDate: 'startTime', + endDate: 'endTime', + } /**end 自定义属性请在上面加 请加备注**/ } },//end data @@ -270,13 +287,16 @@ if(this.filters.key){ params.key= "%"+this.filters.key+"%" } - if(this.productId){ - params.productId=this.productId + if(this.xmProduct){ + params.productId=this.xmProduct.id + } + if(this.selProject){ + params.projectId=this.selProject.id } if(this.menuId){ params.menuId=this.menuId } - if( !this.menuId && !this.productId ){ + if( !this.menuId && !this.xmProduct && !this.selProject){ params.queryScope=this.filters.queryScope if(this.filters.queryScope=='iterationId'){ if(!this.filters.id){ @@ -329,10 +349,14 @@ this.addFormVisible = true; //this.addForm=Object.assign({}, this.editForm); }, - afterAddSubmit(){ + afterAddSubmit(xmIteration){ this.addFormVisible=false; this.pageInfo.count=true; - this.getXmIterations(); + if(this.xmProduct){//如果是产品试图界面添加的迭代,直接添加产品与迭代的关联关系 + this.onXmIterationSelect(xmIteration); + }else{ + this.getXmIterations(); + } }, afterEditSubmit(){ this.editFormVisible=false; @@ -467,13 +491,42 @@ return cellValue; } }, - /**end 自定义函数请在上面加**/ - + onXmIterationSelect:function(row){ + var xmIteration=row; + var xmProduct=this.xmProduct; + this.$confirm('确认将产品【'+xmProduct.productName+'】加入迭代计划【'+xmIteration.iterationName+'】吗?', '提示', { + type: 'warning' + }).then(()=>{ + addXmIterationProductLink({iterationId:xmIteration.id,productId:xmProduct.id}).then(res=>{ + var tips =res.data.tips; + if(tips.isOk){ + this.getXmIterations(); + } + this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }) + }) + }, + doDelXmIterationProductLink(row){ + var xmIteration=row; + var xmProduct=this.xmProduct; + this.$confirm('确认将产品【'+xmProduct.productName+'】与迭代【'+xmIteration.iterationName+'】进行脱钩吗?脱钩后,产品与迭代互相查看不到对方信息。', '提示', { + type: 'warning' + }).then(()=>{ + delXmIterationProductLink({iterationId:xmIteration.id,productId:xmProduct.id}).then(res=>{ + var tips =res.data.tips; + if(tips.isOk){ + this.getXmIterations(); + } + this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }) + }) + } },//end methods components: { 'xm-iteration-add':XmIterationAdd, 'xm-iteration-edit':XmIterationEdit, XmIterationStateMng,XmGantt, + XmIterationSelect, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmIteration/XmIterationSelect.vue b/src/views/xm/core/xmIteration/XmIterationSelect.vue index d3f98edb..aa8c2ab1 100644 --- a/src/views/xm/core/xmIteration/XmIterationSelect.vue +++ b/src/views/xm/core/xmIteration/XmIterationSelect.vue @@ -98,6 +98,9 @@ this.clearSelectIteration(); this.getXmIterations(); } + }, + productId:function(){ + this.getXmIterations(); } }, data() { diff --git a/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkAdd.vue b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkAdd.vue new file mode 100644 index 00000000..083de18a --- /dev/null +++ b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkAdd.vue @@ -0,0 +1,123 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkEdit.vue b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkEdit.vue new file mode 100644 index 00000000..a9d9bb73 --- /dev/null +++ b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkEdit.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkMng.vue b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkMng.vue new file mode 100644 index 00000000..7ae1116e --- /dev/null +++ b/src/views/xm/core/xmIterationProductLink/XmIterationProductLinkMng.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProduct/XmProductAdd.vue b/src/views/xm/core/xmProduct/XmProductAdd.vue index d054210d..acc48624 100644 --- a/src/views/xm/core/xmProduct/XmProductAdd.vue +++ b/src/views/xm/core/xmProduct/XmProductAdd.vue @@ -108,7 +108,7 @@ var tips=res.data.tips; if(tips.isOk){ //this.$refs['addForm'].resetFields(); - this.$emit('submit');// @submit="afterAddSubmit" + this.$emit('submit',res.data.data);// @submit="afterAddSubmit" } this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' }); }).catch( err => this.load.add=false); diff --git a/src/views/xm/core/xmProduct/XmProductComplex.vue b/src/views/xm/core/xmProduct/XmProductComplex.vue index e10121af..20035878 100644 --- a/src/views/xm/core/xmProduct/XmProductComplex.vue +++ b/src/views/xm/core/xmProduct/XmProductComplex.vue @@ -12,7 +12,7 @@ - + @@ -41,7 +41,7 @@ import util from '@/common/js/util';//全局公共库 import config from '@/common/config';//全局公共库 import { listOption } from '@/api/mdp/meta/itemOption';//下拉框数据查询 - import XmIterationSelect from '../xmIteration/XmIterationSelect.vue' + import XmIterationMng from '../xmIteration/XmIterationMng.vue' import XmMenuMng from '../xmMenu/XmMenuMng.vue' import XmIterationStateShow from '../xmIterationState/XmIterationStateShow.vue' import { mapGetters } from 'vuex' @@ -142,7 +142,7 @@ import XmProductSelect from './XmProductSelect.vue'; },//end methods components: { //在下面添加其它组件 - XmIterationSelect, + XmIterationMng, XmMenuMng, XmIterationStateShow, XmProductMng, diff --git a/src/views/xm/core/xmProduct/XmProductMng.vue b/src/views/xm/core/xmProduct/XmProductMng.vue index 495ee313..8653e1f6 100644 --- a/src/views/xm/core/xmProduct/XmProductMng.vue +++ b/src/views/xm/core/xmProduct/XmProductMng.vue @@ -27,28 +27,16 @@ - - - - - 产品 - 将项目与产品关联 - 将迭代与产品关联 - - - + 产品 + 查询条件 - 查询条件 + 产品查询范围: @@ -107,6 +95,12 @@ 查询 + 更多操作 + + + 将更多产品加入迭代{{xmIteration.iterationName}} + +
@@ -129,7 +123,7 @@ @@ -195,6 +198,7 @@ //import Sticky from '@/components/Sticky' // 粘性header组件 //import { listOption } from '@/api/mdp/meta/itemOption';//下拉框数据查询 import { listXmProduct,listXmProductWithState, delXmProduct, batchDelXmProduct } from '@/api/xm/core/xmProduct'; + import { addXmIterationProductLink,delXmIterationProductLink } from '@/api/xm/core/xmIterationProductLink'; import { loadTasksToXmProductState } from '@/api/xm/core/xmProductState'; import XmProductAdd from './XmProductAdd';//新增界面 import XmProductEdit from './XmProductEdit';//修改界面 @@ -203,8 +207,10 @@ import XmProductStateMng from '../xmProductState/XmProductStateMng';//修改界面 import UsersSelect from "@/views/mdp/sys/user/UsersSelect"; -import XmProjectList from '../xmProject/XmProjectList.vue'; - + import XmProjectList from '../xmProject/XmProjectList.vue'; + import XmIterationSelect from '../xmIteration/XmIterationSelect.vue'; +import XmProductSelect from './XmProductSelect.vue'; + export default { props:['selProject','xmIteration'], computed: { @@ -213,7 +219,9 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; ]) }, watch:{ - + selProject:function(){ + this.getXmProducts(); + }, xmIteration:function(){ this.getXmProducts(); } @@ -254,6 +262,7 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; id:'',productName:'',branchId:'',remark:'' }, iterationVisible:false, + iterationSelectVisible:false, productStateVisible:false, selectFiltersPmUserVisible:false, tableHeight:300, @@ -263,6 +272,7 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; ], pickerOptions: util.pickerOptions('datarange'), projectVisible:false, + productSelectVisible:false, /**begin 自定义属性请在下面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/ @@ -388,10 +398,14 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; this.addFormVisible = true; //this.addForm=Object.assign({}, this.editForm); }, - afterAddSubmit(){ + afterAddSubmit(xmProduct){ this.addFormVisible=false; this.pageInfo.count=true; - this.getXmProducts(); + if(this.xmIteration){//如果是迭代试图进入的迭代界面,创建了产品直接添加产品与迭代的关系 + this.onXmProductSelect(xmProduct); + }else{ + this.getXmProducts(); + } }, afterEditSubmit(){ this.editFormVisible=false; @@ -490,6 +504,37 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; }, onProjectSelected(projects){ + }, + /**end 自定义函数请在上面加**/ + onXmProductSelect:function(row){ + var xmIteration=this.xmIteration; + var xmProduct=row; + this.$confirm('确认将产品【'+xmProduct.productName+'】加入迭代计划【'+xmIteration.iterationName+'】吗?', '提示', { + type: 'warning' + }).then(()=>{ + addXmIterationProductLink({iterationId:xmIteration.id,productId:xmProduct.id}).then(res=>{ + var tips =res.data.tips; + if(tips.isOk){ + this.getXmProducts(); + } + this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }) + }) + }, + doDelXmIterationProductLink(row){ + var xmIteration=this.xmIteration; + var xmProduct=row; + this.$confirm('确认将产品【'+xmProduct.productName+'】与迭代【'+xmIteration.iterationName+'】进行脱钩吗?脱钩后,产品下的所有故事将从本迭代计划一并移出。', '提示', { + type: 'warning' + }).then(()=>{ + delXmIterationProductLink({iterationId:xmIteration.id,productId:xmProduct.id}).then(res=>{ + var tips =res.data.tips; + if(tips.isOk){ + this.getXmProducts(); + } + this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }) + }) } /**end 自定义函数请在上面加**/ @@ -501,6 +546,8 @@ import XmProjectList from '../xmProject/XmProjectList.vue'; XmProductStateMng, UsersSelect, XmProjectList, + XmIterationSelect, +XmProductSelect, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmProduct/XmProductSelect.vue b/src/views/xm/core/xmProduct/XmProductSelect.vue index e369c2f5..d8e195f4 100644 --- a/src/views/xm/core/xmProduct/XmProductSelect.vue +++ b/src/views/xm/core/xmProduct/XmProductSelect.vue @@ -111,6 +111,10 @@ watch:{ xmIteration(){ this.getXmProducts(); + }, + + selProject(){ + this.getXmProducts(); } }, data() { @@ -217,6 +221,7 @@ if(this.xmIteration){ params.iterationId=this.xmIteration.id } + params.queryScope=this.filters.queryScope if(this.filters.queryScope=='productId'){ if(!this.filters.id){ diff --git a/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkAdd.vue b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkAdd.vue new file mode 100644 index 00000000..caeb1003 --- /dev/null +++ b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkAdd.vue @@ -0,0 +1,123 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkEdit.vue b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkEdit.vue new file mode 100644 index 00000000..d0951ebf --- /dev/null +++ b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkEdit.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkMng.vue b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkMng.vue new file mode 100644 index 00000000..da8b07a5 --- /dev/null +++ b/src/views/xm/core/xmProductProjectLink/XmProductProjectLinkMng.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file From 2387e0bf7e871f047b8dd0e7ae08dce260dfc09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 18 Jul 2021 20:52:09 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/xmProduct/XmProductComplex.vue | 8 +- .../xmProduct/XmProductProjectForLink.vue | 73 +++++ .../xm/core/xmProject/XmProjectForLink.vue | 305 ++++++++++++++++++ 3 files changed, 384 insertions(+), 2 deletions(-) create mode 100644 src/views/xm/core/xmProduct/XmProductProjectForLink.vue create mode 100644 src/views/xm/core/xmProject/XmProjectForLink.vue diff --git a/src/views/xm/core/xmProduct/XmProductComplex.vue b/src/views/xm/core/xmProduct/XmProductComplex.vue index 20035878..d7245241 100644 --- a/src/views/xm/core/xmProduct/XmProductComplex.vue +++ b/src/views/xm/core/xmProduct/XmProductComplex.vue @@ -14,8 +14,8 @@ - - + + @@ -49,8 +49,10 @@ import XmProductMng from './XmProductMng.vue'; import XmTaskMng from '../xmTask/XmTaskMng.vue'; import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue'; import XmProjectList from '../xmProject/XmProjectList.vue'; +import XmProjectForLink from '../xmProject/XmProjectForLink.vue'; import XmProductSelect from './XmProductSelect.vue'; +import XmProductProjectForLink from './XmProductProjectForLink.vue'; export default { @@ -150,6 +152,8 @@ import XmProductSelect from './XmProductSelect.vue'; XmQuestionMng, XmProductSelect, XmProjectList, + XmProjectForLink, +XmProductProjectForLink, }, mounted() { this.$nextTick(() => { diff --git a/src/views/xm/core/xmProduct/XmProductProjectForLink.vue b/src/views/xm/core/xmProduct/XmProductProjectForLink.vue new file mode 100644 index 00000000..28a45a7d --- /dev/null +++ b/src/views/xm/core/xmProduct/XmProductProjectForLink.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProject/XmProjectForLink.vue b/src/views/xm/core/xmProject/XmProjectForLink.vue new file mode 100644 index 00000000..f6627291 --- /dev/null +++ b/src/views/xm/core/xmProject/XmProjectForLink.vue @@ -0,0 +1,305 @@ + + + + + \ No newline at end of file From cd20c597a1c734a906d10886645488b73cc5000d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 19 Jul 2021 02:23:59 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AF=95=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/routes_xm.js | 28 +- ...x.vue => XmIterationForProjectComplex.vue} | 19 +- .../xm/core/xmIteration/XmIterationInfo.vue | 444 ++++++++ .../core/xmIteration/XmIterationInfoRoute.vue | 61 + src/views/xm/core/xmMenu/XmMenuMng.vue | 6 +- ...lex.vue => XmProductForProjectComplex.vue} | 0 src/views/xm/core/xmProduct/XmProductInfo.vue | 445 ++++++++ .../xm/core/xmProduct/XmProductInfoRoute.vue | 61 + src/views/xm/core/xmProduct/XmProductMng.vue | 158 ++- .../xm/core/xmProduct/XmProductOverview.vue | 1010 +++++++++++------ .../xmProduct/XmProductOverviewComplex.vue | 130 +++ .../xm/core/xmProject/XmProjectForLink.vue | 65 +- src/views/xm/core/xmProject/XmProjectInfo.vue | 14 +- src/views/xm/core/xmTask/XmTaskMng.vue | 2 +- 14 files changed, 2090 insertions(+), 353 deletions(-) rename src/views/xm/core/xmIteration/{XmIterationComplex.vue => XmIterationForProjectComplex.vue} (83%) create mode 100644 src/views/xm/core/xmIteration/XmIterationInfo.vue create mode 100644 src/views/xm/core/xmIteration/XmIterationInfoRoute.vue rename src/views/xm/core/xmProduct/{XmProductComplex.vue => XmProductForProjectComplex.vue} (100%) create mode 100644 src/views/xm/core/xmProduct/XmProductInfo.vue create mode 100644 src/views/xm/core/xmProduct/XmProductInfoRoute.vue create mode 100644 src/views/xm/core/xmProduct/XmProductOverviewComplex.vue diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index bd1037ec..0babb3fa 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -77,6 +77,17 @@ export default { ] }, + { + path: '/xm/core/xmProduct/XmProductInfoRoute', + component: _import('xm/core/xmProduct/XmProductInfoRoute'), + name: 'XmProductInfoRoute', + iconCls: 'fa el-icon-menu', + meta: { + title: '产品管理', + icon: 'project', + hidden:true + }, + }, { path: '/xm/core', component: Layout, @@ -89,13 +100,23 @@ export default { // leaf: true,//只有一个节点 children: [ - { path: 'xmProduct/XmProductComplex', component: _import('xm/core/xmProduct/XmProductComplex'), name: 'XmProductComplex', meta: { title: '产品总览' }}, - { path: 'xmProduct/XmProductMng', component: _import('xm/core/xmProduct/XmProductMng'), name: 'XmProductMng', meta: { title: '产品管理' }}, + { path: 'xmProduct/XmProductMng', component: _import('xm/core/xmProduct/XmProductMng'), name: 'XmProductMng', meta: { title: '产品管理' }}, { path: 'xmMenu/XmMenuMng', component: _import('xm/core/xmMenu/XmMenuMng'), name: 'XmMenuMng', meta: { title: '故事管理' }}, { path: 'xmMenuExchange/XmMenuExchangeMng', component: _import('xm/core/xmMenuExchange/XmMenuExchangeMng'), name: 'XmMenuExchangeMng', meta: { title: '互动评论' }}, { path: 'xmMenuTemplate/XmMenuTemplateMng', component: _import('xm/core/xmMenuTemplate/XmMenuTemplateMng'), name: 'XmMenuTemplateMng', meta: { title: '故事模板' }}, ] + },, + { + path: '/xm/core/xmIteration/XmIterationInfoRoute', + component: _import('xm/core/xmIteration/XmIterationInfoRoute'), + name: 'XmIterationInfoRoute', + iconCls: 'fa el-icon-menu', + meta: { + title: '迭代管理', + icon: 'project', + hidden:true + }, }, { path: '/xm/core', @@ -108,8 +129,7 @@ export default { }, // leaf: true,//只有一个节点 children: [ - { path: 'xmIteration/XmIterationComplex', component: _import('xm/core/xmIteration/XmIterationComplex'), name: 'XmIterationComplex', meta: { title: '迭代总览' }}, - { path: 'xmIteration/XmIterationMng', component: _import('xm/core/xmIteration/XmIterationMng'), name: 'XmIterationMng', meta: { title: '迭代管理' }}, + { path: 'xmIteration/XmIterationMng', component: _import('xm/core/xmIteration/XmIterationMng'), name: 'XmIterationMng', meta: { title: '迭代管理' }}, { path: 'xmIterationMenu/XmIterationMenuMng', component: _import('xm/core/xmIterationMenu/XmIterationMenuMng'), name: 'XmIterationMenuMng', meta: { title: '故事迭代' }}, ] } diff --git a/src/views/xm/core/xmIteration/XmIterationComplex.vue b/src/views/xm/core/xmIteration/XmIterationForProjectComplex.vue similarity index 83% rename from src/views/xm/core/xmIteration/XmIterationComplex.vue rename to src/views/xm/core/xmIteration/XmIterationForProjectComplex.vue index 7db348bf..57de3866 100644 --- a/src/views/xm/core/xmIteration/XmIterationComplex.vue +++ b/src/views/xm/core/xmIteration/XmIterationForProjectComplex.vue @@ -12,17 +12,20 @@ 迭代概览 - - + + + + + - + - + - + @@ -45,6 +48,7 @@ import XmIterationStateShow from '../xmIterationState/XmIterationStateShow.vue' import { mapGetters } from 'vuex' import XmProductMng from '../xmProduct/XmProductMng.vue'; +import XmProjectForLink from '../xmProject/XmProjectForLink.vue'; import XmTaskMng from '../xmTask/XmTaskMng.vue'; import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue'; @@ -55,7 +59,7 @@ import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue'; 'userInfo','roles' ]), }, - props:['visible','selProject'], + props:['visible','selProject','xmProduct'], watch:{ visible:function(visible){ if(visible==true){ @@ -143,7 +147,8 @@ import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue'; XmIterationStateShow, XmProductMng, XmTaskMng, - XmQuestionMng + XmQuestionMng, + XmProjectForLink, }, mounted() { this.$nextTick(() => { diff --git a/src/views/xm/core/xmIteration/XmIterationInfo.vue b/src/views/xm/core/xmIteration/XmIterationInfo.vue new file mode 100644 index 00000000..12ba0dce --- /dev/null +++ b/src/views/xm/core/xmIteration/XmIterationInfo.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/views/xm/core/xmIteration/XmIterationInfoRoute.vue b/src/views/xm/core/xmIteration/XmIterationInfoRoute.vue new file mode 100644 index 00000000..2b790321 --- /dev/null +++ b/src/views/xm/core/xmIteration/XmIterationInfoRoute.vue @@ -0,0 +1,61 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue index 03d40451..c154ea10 100644 --- a/src/views/xm/core/xmMenu/XmMenuMng.vue +++ b/src/views/xm/core/xmMenu/XmMenuMng.vue @@ -27,8 +27,8 @@ - 故事 - 修改 + 故事 + 修改 描述 - + +
+ + + + + + + + {{xmProduct.productName.substring(0,10)}} + {{xmProduct.productName}} + 概览 + + + + 迭代 + + + + 项目 + + + 故事 + + + + + 任务 + + + + + 缺陷 + + + + + 团队 + + + 文档 + + + + + 阶段计划及里程碑 + + + 测试计划 + + + + + 项目监控 + + + 故事监控 + + + + 合同管理 + + + 预算 + + + + + 费用 + + + + + 考核 + + + + + 日志 + + + + + 环境清单 + + + + 风险 + + + + + 故事监控 + + + 项目监控 + + + 预算 + + + + + 费用 + + + + + 考核 + + + + + 日志 + + + + + 合同管理 + + + + + 环境清单 + + + + 风险 + + + 论坛 + + + 即聊 + + + 客服 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + diff --git a/src/views/xm/core/xmProduct/XmProductInfoRoute.vue b/src/views/xm/core/xmProduct/XmProductInfoRoute.vue new file mode 100644 index 00000000..72cd1ee6 --- /dev/null +++ b/src/views/xm/core/xmProduct/XmProductInfoRoute.vue @@ -0,0 +1,61 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProduct/XmProductMng.vue b/src/views/xm/core/xmProduct/XmProductMng.vue index 8653e1f6..df96fd93 100644 --- a/src/views/xm/core/xmProduct/XmProductMng.vue +++ b/src/views/xm/core/xmProduct/XmProductMng.vue @@ -8,6 +8,7 @@ + - 产品 + 将更多产品加入迭代{{xmIteration.iterationName}} + 产品 查询条件 @@ -104,6 +106,42 @@
+ + + + + +
{{p.productName}}
+
{{p.code}}
+
+
+ {{p.totalBugCnt==null?0:p.totalBugCnt}} + 缺陷 +
+
+ {{p.totalFileCnt==null?0:p.totalFileCnt}} + 文档 +
+
+ + {{p.totalCompleteTaskCnt==null?0:p.totalCompleteTaskCnt}} + / + {{p.totalTaskCnt==null?0:p.totalTaskCnt}} + + 任务完成 +
+
+
+ +
+ +
+
+
+
@@ -273,6 +311,7 @@ import XmProductSelect from './XmProductSelect.vue'; pickerOptions: util.pickerOptions('datarange'), projectVisible:false, productSelectVisible:false, + showType:true, /**begin 自定义属性请在下面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/ @@ -411,6 +450,13 @@ import XmProductSelect from './XmProductSelect.vue'; this.editFormVisible=false; this.getXmProducts() }, + + //进入info界面 + intoInfo(row) { + this.editForm = row; + this.$router.push({ name:'XmProductInfoRoute', params: row }) + //this.showInfo = true; + }, //选择行xmProduct selsChange: function (sels) { this.sels = sels; @@ -504,6 +550,9 @@ import XmProductSelect from './XmProductSelect.vue'; }, onProjectSelected(projects){ + }, + onXmIterationSelect(){ + }, /**end 自定义函数请在上面加**/ onXmProductSelect:function(row){ @@ -547,7 +596,7 @@ import XmProductSelect from './XmProductSelect.vue'; UsersSelect, XmProjectList, XmIterationSelect, -XmProductSelect, + XmProductSelect, //在下面添加其它组件 }, mounted() { @@ -574,4 +623,107 @@ XmProductSelect, .align-right{ float: right; } + + + \ No newline at end of file diff --git a/src/views/xm/core/xmProduct/XmProductOverview.vue b/src/views/xm/core/xmProduct/XmProductOverview.vue index e369c2f5..4eaf08ad 100644 --- a/src/views/xm/core/xmProduct/XmProductOverview.vue +++ b/src/views/xm/core/xmProduct/XmProductOverview.vue @@ -1,331 +1,699 @@ - + + \ No newline at end of file + diff --git a/src/views/xm/core/xmProduct/XmProductOverviewComplex.vue b/src/views/xm/core/xmProduct/XmProductOverviewComplex.vue new file mode 100644 index 00000000..7413173c --- /dev/null +++ b/src/views/xm/core/xmProduct/XmProductOverviewComplex.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/xm/core/xmProject/XmProjectForLink.vue b/src/views/xm/core/xmProject/XmProjectForLink.vue index f6627291..ab6c29da 100644 --- a/src/views/xm/core/xmProject/XmProjectForLink.vue +++ b/src/views/xm/core/xmProject/XmProjectForLink.vue @@ -6,6 +6,10 @@ + + + 加入更多项目到产品中 + @@ -15,9 +19,8 @@ @@ -25,6 +28,10 @@ + + + + @@ -37,11 +44,13 @@ //import { listOption } from '@/api/mdp/meta/itemOption';//下拉框数据查询 import { listXmProject, } from '@/api/xm/core/xmProject'; import { mapGetters } from 'vuex' - + import { delXmProductProjectLink, addXmProductProjectLink,batchDelXmProductProjectLink } from '@/api/xm/core/xmProductProjectLink'; +import XmProjectList from './XmProjectList.vue'; + export default { - props:['xmProduct'], + props:['xmProduct','xmIteration'], computed: { ...mapGetters([ 'userInfo','roles' @@ -50,6 +59,9 @@ watch:{ xmProduct:function(){ this.getXmProjects(); + }, + xmIteration:function(){ + this.getXmProjects(); } }, data() { @@ -82,7 +94,7 @@ editForm: { id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:'',bizProcInstId:'',bizFlowState:'',planNouserAt:'',planInnerUserAt:'',planOutUserAt:'',locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:'',totalReceivables:'',budgetMarginRate:'',contractAmt:'',planInnerUserPrice:'',budgetOutUserPrice:'',planOutUserCnt:'',planInnerUserCnt:'',planWorkingHours:'' }, - + xmProjectListVisible:false, /**end 自定义属性请在上面加 请加备注**/ } @@ -125,6 +137,10 @@ if(this.xmProduct){ params.productId=this.xmProduct.id } + + if(this.xmIteration){ + params.iterationId=this.xmIteration.id + } if(this.filters.key){ params.key='%'+this.filters.key+'%' } @@ -153,11 +169,46 @@ selectProject:function(row){ this.editForm=row this.$emit('project-confirm',this.editForm); + }, + /**end 自定义函数请在上面加**/ + onXmProjectSelect:function(row){ + var xmProject=row; + var xmProduct=this.xmProduct; + this.$confirm('确认将项目【'+xmProject.name+'】加入产品【'+xmProduct.productName+'】吗?', '提示', { + type: 'warning' + }).then(()=>{ + addXmProductProjectLink({projectId:xmProject.id,productId:xmProduct.id}).then(res=>{ + var tips =res.data.tips; + if(tips.isOk){ + this.getXmProjects(); + } + this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'}); + }) + }) + }, + doDelXmProductProjectLink(row){ + + var xmProduct=this.xmProduct; + var selProject=row; + this.$confirm('确认将项目【'+selProject.projectName+'】从产品【'+xmProduct.productName+'】移出吗?移出后,项目试图中将看不到该产品信息', '提示', { + type: 'warning' + }).then(()=>{ + var params={productId:xmProduct.id,projectId:selProject.id} + delXmProductProjectLink(params).then(res=>{ + var tips = res.data.tips; + if(tips.isOk){ + this.getXmProjects(); + this.$message({showClose: true, message: "移出成功", type: 'success' }); + } + }); + }) + } /**end 自定义函数请在上面加**/ },//end methods - components: { + components: { +XmProjectList //在下面添加其它组件 }, diff --git a/src/views/xm/core/xmProject/XmProjectInfo.vue b/src/views/xm/core/xmProject/XmProjectInfo.vue index e89c43e7..6bd08dd2 100644 --- a/src/views/xm/core/xmProject/XmProjectInfo.vue +++ b/src/views/xm/core/xmProject/XmProjectInfo.vue @@ -141,9 +141,9 @@ - - - + + + @@ -194,9 +194,9 @@ import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan'; import xmProjectStateMng from '../xmProjectState/XmProjectStateMng'; import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng'; - import XmIterationComplex from '../xmIteration/XmIterationComplex.vue'; + import XmIterationForProjectComplex from '../xmIteration/XmIterationForProjectComplex.vue'; import XmProjectOverviewComplex from './XmProjectOverviewComplex.vue'; -import XmProductComplex from '../xmProduct/XmProductComplex.vue'; + import XmProductForProjectComplex from '../xmProduct/XmProductForProjectComplex.vue'; export default { @@ -416,9 +416,9 @@ import XmProductComplex from '../xmProduct/XmProductComplex.vue'; xmProjectStateMng, xmTestCaseExecMng, xmProjectGroupSelect, - XmIterationComplex, + XmIterationForProjectComplex, XmProjectOverviewComplex, - XmProductComplex, + XmProductForProjectComplex, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmTask/XmTaskMng.vue b/src/views/xm/core/xmTask/XmTaskMng.vue index 67199e95..a28d0a88 100644 --- a/src/views/xm/core/xmTask/XmTaskMng.vue +++ b/src/views/xm/core/xmTask/XmTaskMng.vue @@ -56,7 +56,7 @@ 直接创建 - + Date: Mon, 19 Jul 2021 02:42:15 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E8=BF=AD=E4=BB=A3=E8=AF=95=E5=9B=BE?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/xmIteration/XmIterationInfo.vue | 72 +++++++++---------- .../xm/core/xmIteration/XmIterationMng.vue | 9 ++- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/src/views/xm/core/xmIteration/XmIterationInfo.vue b/src/views/xm/core/xmIteration/XmIterationInfo.vue index 12ba0dce..44366b66 100644 --- a/src/views/xm/core/xmIteration/XmIterationInfo.vue +++ b/src/views/xm/core/xmIteration/XmIterationInfo.vue @@ -3,27 +3,24 @@ - + - {{selProject.name.substring(0,10)}} - {{selProject.name}} + {{xmIteration.iterationName.substring(0,10)}} + {{xmIteration.iterationName}} 概览 - - - 迭代 - + + + + 项目 - 产品 - + 产品 - 故事 - - + 故事 任务 @@ -141,27 +138,28 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -197,17 +195,18 @@ import XmIterationForProjectComplex from '../xmIteration/XmIterationForProjectComplex.vue'; import XmProjectOverviewComplex from '../xmProject/XmProjectOverviewComplex.vue'; import XmProductForProjectComplex from '../xmProduct/XmProductForProjectComplex.vue'; + import XmProjectForLink from '../xmProject/XmProjectForLink.vue'; export default { - props: ["selProject","visible"], + props: ["xmIteration","visible"], computed: { ...mapGetters([ 'userInfo','roles' ]), }, watch:{ - selProject:function(selProject){ + xmIteration:function(xmIteration){ var oldInfotype=this.infotype this.infotype='' this.$nextTick(()=>{ @@ -221,7 +220,7 @@ return { platformViewVisible:false, tabPosition:'left', - infotype:"项目概览", + infotype:"迭代概览", load:{list:false,edit:false}, groupUserVisible:false, exportArr: ['任务', '阶段计划', '故事监控'] @@ -303,7 +302,7 @@ list = this.$refs.xmMenuWithPlan.xmMenusTreeData; pageNum = this.$refs.xmMenuWithPlan.pageInfo.pageNum; } - const filename = `${this.selProject.name}_${this.infotype}_第${pageNum}页`; + const filename = `${this.xmIteration.iterationName}_${this.infotype}_第${pageNum}页`; const data = this.formatJson(keyList, list); import('@/vendor/Export2Excel').then(excel => { @@ -419,6 +418,7 @@ XmIterationForProjectComplex, XmProjectOverviewComplex, XmProductForProjectComplex, + XmProjectForLink, //在下面添加其它组件 }, mounted() { diff --git a/src/views/xm/core/xmIteration/XmIterationMng.vue b/src/views/xm/core/xmIteration/XmIterationMng.vue index 2342fdb1..0491758d 100644 --- a/src/views/xm/core/xmIteration/XmIterationMng.vue +++ b/src/views/xm/core/xmIteration/XmIterationMng.vue @@ -85,7 +85,7 @@ @@ -361,6 +361,13 @@ import XmIterationSelect from './XmIterationSelect.vue'; afterEditSubmit(){ this.editFormVisible=false; }, + + //进入info界面 + intoInfo(row) { + this.editForm = row; + this.$router.push({ name:'XmIterationInfoRoute', params: row }) + //this.showInfo = true; + }, //选择行xmIteration selsChange: function (sels) { this.sels = sels;