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 @@
-
+
-
-
-
+
+
+
产品、战略
产品、战略
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -64,7 +64,7 @@ import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue';
data() {
return{
xmIteration:null,
- showPanel:'menus',//menus,tasks,bugs,iterationStateShow
+ showPanel:'products',//menus,tasks,bugs,iterationStateShow
topModules:
[
{
@@ -132,9 +132,7 @@ import XmQuestionMng from '../xmQuestion/XmQuestionMng.vue';
this.iteration=null;
},
tabClick(tab){
- if(tab.label=='任务' || tab.label=='故事'){
- this.iterationVisible=false;
- }
+ this.showPanel=tab.name
}
},//end methods
components: {
diff --git a/src/views/xm/core/xmMenu/XmMenuMng.vue b/src/views/xm/core/xmMenu/XmMenuMng.vue
index 5e6c938c..32524bc0 100644
--- a/src/views/xm/core/xmMenu/XmMenuMng.vue
+++ b/src/views/xm/core/xmMenu/XmMenuMng.vue
@@ -1,10 +1,10 @@
-
-
+
+
-
+
@@ -224,7 +224,7 @@
import { mapGetters } from 'vuex'
export default {
- props:['selProject','xmIteration'],
+ props:['selProject','xmIteration','xmProduct'],
computed: {
...mapGetters([
'userInfo','roles'
@@ -260,6 +260,13 @@
if(product==null){
this.productVisible=true;
}
+ },
+ xmIteration:function(){
+ this.getXmMenus()
+ },
+ xmProduct:function(){
+ this.filters.product=this.xmProduct
+ this.getXmMenus()
}
},
data() {
@@ -412,7 +419,11 @@
this.load.list = false;
}
this.load.list = true;
- listXmMenuWithPlan(params).then( callback ).catch( err => this.load.list = false );
+ if(!this.selProject){
+ listXmMenuWithState(params).then( callback ).catch( err => this.load.list = false );
+ }else{
+ listXmMenuWithPlan
+ }
},
//显示编辑界面 XmMenu xm_project_menu
@@ -807,6 +818,10 @@
//在下面添加其它组件
},
mounted() {
+ this.filters.product=this.xmProduct
+ if(this.xmProduct){
+ this.productVisible=false;
+ }
this.$nextTick(() => {
var clientRect=this.$refs.table.$el.getBoundingClientRect();
var subHeight=70/1000 * window.innerHeight;
diff --git a/src/views/xm/core/xmProduct/XmProductComplex.vue b/src/views/xm/core/xmProduct/XmProductComplex.vue
new file mode 100644
index 00000000..55d82068
--- /dev/null
+++ b/src/views/xm/core/xmProduct/XmProductComplex.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+ 产品概览
+ 产品概览
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/xm/core/xmProduct/XmProductMng.vue b/src/views/xm/core/xmProduct/XmProductMng.vue
index cf29c56b..495ee313 100644
--- a/src/views/xm/core/xmProduct/XmProductMng.vue
+++ b/src/views/xm/core/xmProduct/XmProductMng.vue
@@ -27,9 +27,20 @@
- 产品
+
+
+ 产品
+ 将项目与产品关联
+ 将迭代与产品关联
+
+
+
+
+
+
+
@@ -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) => {