diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js
index 0babb3fa..c34efd98 100644
--- a/src/router/routes_xm.js
+++ b/src/router/routes_xm.js
@@ -99,7 +99,8 @@ export default {
},
// leaf: true,//只有一个节点
children: [
-
+ { path: 'xmProduct/XmProductAllMng', component: _import('xm/core/xmProduct/XmProductAllMng'), name: 'XmProductAllMng', 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: '故事管理' }},
diff --git a/src/views/xm/core/xmIteration/XmIterationMng.vue b/src/views/xm/core/xmIteration/XmIterationMng.vue
index 0491758d..60305388 100644
--- a/src/views/xm/core/xmIteration/XmIterationMng.vue
+++ b/src/views/xm/core/xmIteration/XmIterationMng.vue
@@ -1,15 +1,15 @@
- 迭代计划
+ 迭代计划
查询条件
-
-
+
+
迭代查询范围:
@@ -40,9 +40,9 @@
-
-
-
+
+
+
上线时间:
@@ -67,16 +67,10 @@
查询
- 甘特图
+ 甘特图
- 更多操作
-
-
- 将更多迭代加入产品{{xmProduct.productName}}
-
-
-
+
@@ -101,8 +95,7 @@
- 与产品脱钩
-
+
@@ -123,11 +116,11 @@
-
+
-
+
@@ -173,8 +166,8 @@ import XmIterationSelect from './XmIterationSelect.vue';
data() {
const beginDate = new Date();
const endDate = new Date();
- beginDate.setTime(beginDate.getTime() - 3600 * 1000 * 24 * 7 * 4 * 3 );
- endDate.setTime(endDate.getTime() + 3600 * 1000 * 24 * 7 * 4 * 3 );
+ beginDate.setTime(beginDate.getTime() - 3600 * 1000 * 24 * 7 * 4 * 3 );
+ endDate.setTime(endDate.getTime() + 3600 * 1000 * 24 * 7 * 4 * 3 );
return {
filters: {
key: '',
@@ -272,7 +265,7 @@ import XmIterationSelect from './XmIterationSelect.vue';
pageNum: this.pageInfo.pageNum,
total: this.pageInfo.total,
count:this.pageInfo.count
- };
+ };
if(!this.dateRangerOnline || this.dateRangerOnline.length==0){
this.$message({showClose: true, message: "上线日期范围不能为空", type: 'error' });
return;
@@ -295,16 +288,16 @@ import XmIterationSelect from './XmIterationSelect.vue';
}
if(this.menuId){
params.menuId=this.menuId
- }
+ }
if( !this.menuId && !this.xmProduct && !this.selProject){
- params.queryScope=this.filters.queryScope
+ params.queryScope=this.filters.queryScope
if(this.filters.queryScope=='iterationId'){
if(!this.filters.id){
this.$message({showClose: true, message:"您选择了按迭代编号精确查找模式,请输入迭代编号", type: 'error' });
return;
}
params.id=this.filters.id
-
+
}
if(this.filters.queryScope=="branchId"){
params.branchId=this.userInfo.branchId
@@ -313,7 +306,7 @@ import XmIterationSelect from './XmIterationSelect.vue';
params.onlineTimeStart=this.dateRangerOnline[0]+" 00:00:00"
params.onlineTimeEnd=this.dateRangerOnline[1]+" 23:59:59"
}
-
+
}
this.load.list = true;
listXmIterationWithState(params).then((res) => {
@@ -354,14 +347,14 @@ import XmIterationSelect from './XmIterationSelect.vue';
this.pageInfo.count=true;
if(this.xmProduct){//如果是产品试图界面添加的迭代,直接添加产品与迭代的关联关系
this.onXmIterationSelect(xmIteration);
- }else{
+ }else{
this.getXmIterations();
- }
+ }
},
afterEditSubmit(){
this.editFormVisible=false;
},
-
+
//进入info界面
intoInfo(row) {
this.editForm = row;
@@ -506,14 +499,14 @@ import XmIterationSelect from './XmIterationSelect.vue';
}).then(()=>{
addXmIterationProductLink({iterationId:xmIteration.id,productId:xmProduct.id}).then(res=>{
var tips =res.data.tips;
- if(tips.isOk){
+ if(tips.isOk){
this.getXmIterations();
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
})
})
},
- doDelXmIterationProductLink(row){
+ doDelXmIterationProductLink(row){
var xmIteration=row;
var xmProduct=this.xmProduct;
this.$confirm('确认将产品【'+xmProduct.productName+'】与迭代【'+xmIteration.iterationName+'】进行脱钩吗?脱钩后,产品与迭代互相查看不到对方信息。', '提示', {
diff --git a/src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue b/src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue
index 61ce8f6d..1234f385 100644
--- a/src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue
+++ b/src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue
@@ -9,8 +9,10 @@
配置可见产品
+
+
+ 配置可见故事
-
项目变更
@@ -88,7 +90,8 @@
-
+
+
+
+
\ 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 df96fd93..0f706f42 100644
--- a/src/views/xm/core/xmProduct/XmProductMng.vue
+++ b/src/views/xm/core/xmProduct/XmProductMng.vue
@@ -1,18 +1,18 @@
-
+
-
-
-
-
+
+
+
+
+ >
-
+
-
- 将更多产品加入迭代{{xmIteration.iterationName}}
- 产品
+
+ 产品
- 查询条件
+ 查询条件
-
+
产品查询范围:
-
+
-
-
-
+
+
+
- 创建时间:
+ 创建时间:
-
+ >
+
产品名称:
-
-
-
+
+
+
产品经理:
-
- {{filters.pmUser.username}}
+
+ {{filters.pmUser.username}}
选责任人
我的
-
+
项目 {{selProject?selProject.name:''}}
-
-
+
+
迭代 {{xmIteration.iterationName}}
-
+
查询
-
- 更多操作
-
-
- 将更多产品加入迭代{{xmIteration.iterationName}}
-
-
+
-
+
-
+
{{p.productName}}
@@ -142,26 +135,25 @@
-
+
-
+
- {{scope.row.productName}}
-
+ {{scope.row.productName}}
+
{{scope.row.finishRate}}%
-
+
{{scope.row.pmUsername}}
-
+
-
+
-
- 与迭代脱钩
+
从任务汇总统计进度
- 产品报告
+ 产品报告
- 关联迭代计划查询
-
+ 关联迭代计划查询
+
- 关联项目查询
-
+ 关联项目查询
+
关联任务查询
-
+
- 删除
-
+ 删除
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
@@ -237,19 +229,19 @@
//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 { loadTasksToXmProductState } from '@/api/xm/core/xmProductState';
import XmProductAdd from './XmProductAdd';//新增界面
import XmProductEdit from './XmProductEdit';//修改界面
import { mapGetters } from 'vuex'
import XmIterationMng from '../xmIteration/XmIterationSelect';//修改界面
import XmProductStateMng from '../xmProductState/XmProductStateMng';//修改界面
- import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
+ import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
import XmProjectList from '../xmProject/XmProjectList.vue';
import XmIterationSelect from '../xmIteration/XmIterationSelect.vue';
import XmProductSelect from './XmProductSelect.vue';
- export default {
+ export default {
props:['selProject','xmIteration'],
computed: {
...mapGetters([
@@ -258,10 +250,10 @@ import XmProductSelect from './XmProductSelect.vue';
},
watch:{
selProject:function(){
- this.getXmProducts();
+ this.getXmProducts();
},
- xmIteration:function(){
- this.getXmProducts();
+ xmIteration:function(){
+ this.getXmProducts();
}
},
data() {
@@ -272,7 +264,7 @@ import XmProductSelect from './XmProductSelect.vue';
filters: {
key: '',
queryScope:'compete',//compete/branchId/''/productId
- id:'',//产品编号
+ id:'',//产品编号
pmUser:null,//产品经理
},
xmProducts: [],//查询结果
@@ -286,14 +278,14 @@ import XmProductSelect from './XmProductSelect.vue';
},
load:{ list: false, edit: false, del: false, add: false },//查询中...
sels: [],//列表选中数据
- options:{},//下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]}
-
+ options:{},//下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]}
+
addFormVisible: false,//新增xmProduct界面是否显示
//新增xmProduct界面初始化数据
addForm: {
id:'',productName:'',branchId:'',remark:''
},
-
+
editFormVisible: false,//编辑界面是否显示
//编辑xmProduct界面初始化数据
editForm: {
@@ -307,19 +299,19 @@ import XmProductSelect from './XmProductSelect.vue';
dateRanger: [
util.formatDate.format(beginDate, "yyyy-MM-dd"),
util.formatDate.format(endDate, "yyyy-MM-dd")
- ],
+ ],
pickerOptions: util.pickerOptions('datarange'),
projectVisible:false,
productSelectVisible:false,
- showType:true,
+ showType:false,
/**begin 自定义属性请在下面加 请加备注**/
-
+
/**end 自定义属性请在上面加 请加备注**/
}
},//end data
- methods: {
- handleSizeChange(pageSize) {
- this.pageInfo.pageSize=pageSize;
+ methods: {
+ handleSizeChange(pageSize) {
+ this.pageInfo.pageSize=pageSize;
this.getXmProducts();
},
handleCurrentChange(pageNum) {
@@ -341,26 +333,26 @@ import XmProductSelect from './XmProductSelect.vue';
this.getXmProducts();
},
searchXmProducts(){
- this.pageInfo.count=true;
+ this.pageInfo.count=true;
this.getXmProducts();
},
showProductState(row){
this.editForm=row
this.productStateVisible=true;
},
- loadTasksToXmProductState: function (row) {
+ loadTasksToXmProductState: function (row) {
this.load.edit=true;
-
+
let params = { productId: row.id };
loadTasksToXmProductState(params).then((res) => {
this.load.edit=false;
var tips=res.data.tips;
- if(tips.isOk){
+ if(tips.isOk){
this.pageInfo.count=true;
this.getXmProducts();
}
- this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
- }).catch( err => this.load.edit=false );
+ this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
+ }).catch( err => this.load.edit=false );
},
//获取列表 XmProduct 产品表
getXmProducts() {
@@ -372,11 +364,11 @@ import XmProductSelect from './XmProductSelect.vue';
};
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
let orderBys=[];
- for(var i=0;i {
var tips=res.data.tips;
- if(tips.isOk){
+ if(tips.isOk){
this.pageInfo.total = res.data.total;
this.pageInfo.count=false;
this.xmProducts = res.data.data;
}else{
this.$message({showClose: true, message: tips.msg, type: 'error' });
- }
+ }
this.load.list = false;
}).catch( err => this.load.list = false );
},
@@ -431,7 +423,7 @@ import XmProductSelect from './XmProductSelect.vue';
//显示新增界面 XmProduct 产品表
showAdd: function () {
if(!this.roles.some(i=>i.roleid=='productAdmin')){
- this.$message({showClose: true, message: "只有产品经理能够创建产品", type: 'error'});
+ this.$message({showClose: true, message: "只有产品经理能够创建产品", type: 'error'});
return false;
}
this.addFormVisible = true;
@@ -442,7 +434,7 @@ import XmProductSelect from './XmProductSelect.vue';
this.pageInfo.count=true;
if(this.xmIteration){//如果是迭代试图进入的迭代界面,创建了产品直接添加产品与迭代的关系
this.onXmProductSelect(xmProduct);
- }else{
+ }else{
this.getXmProducts();
}
},
@@ -450,7 +442,7 @@ import XmProductSelect from './XmProductSelect.vue';
this.editFormVisible=false;
this.getXmProducts()
},
-
+
//进入info界面
intoInfo(row) {
this.editForm = row;
@@ -460,50 +452,50 @@ import XmProductSelect from './XmProductSelect.vue';
//选择行xmProduct
selsChange: function (sels) {
this.sels = sels;
- },
+ },
//删除xmProduct
- handleDel: function (row,index) {
+ handleDel: function (row,index) {
if(!this.roles.some(i=>i.roleid=='productAdmin')){
- this.$message({showClose: true, message: "只有产品经理能够删除产品", type: 'error'});
+ this.$message({showClose: true, message: "只有产品经理能够删除产品", type: 'error'});
return false;
}
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
- }).then(() => {
+ }).then(() => {
this.load.del=true;
let params = { id: row.id };
delXmProduct(params).then((res) => {
this.load.del=false;
var tips=res.data.tips;
- if(tips.isOk){
+ if(tips.isOk){
this.pageInfo.count=true;
this.getXmProducts();
}
- this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
+ this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
});
},
//批量删除xmProduct
batchDel: function () {
if(!this.roles.some(i=>i.roleid=='productAdmin')){
- this.$message({showClose: true, message: "只有产品经理能够删除产品", type: 'error'});
+ this.$message({showClose: true, message: "只有产品经理能够删除产品", type: 'error'});
return false;
}
var mmSels=this.sels.filter(i=>i.pmUserid!=this.userInfo.userid)
if(mmSels.length>0){
- this.$message({showClose: true, message: "只能删除你负责的产品", type: 'error'});
+ this.$message({showClose: true, message: "只能删除你负责的产品", type: 'error'});
return false;
}
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
- }).then(() => {
+ }).then(() => {
this.load.del=true;
batchDelXmProduct(this.sels).then((res) => {
this.load.del=false;
var tips=res.data.tips;
- if( tips.isOk ){
+ if( tips.isOk ){
this.pageInfo.count=true;
- this.getXmProducts();
+ this.getXmProducts();
}
this.$message({showClose: true, message: tips.msg, type: tips.isOk?'success':'error'});
}).catch( err => this.load.del=false );
@@ -522,7 +514,7 @@ import XmProductSelect from './XmProductSelect.vue';
this.editForm=product
this.iterationVisible=true;
- },
+ },
toTaskList:function(product){
this.$router.push({name:'XmTaskCenterForProduct',params:{productId:product.id,productName:product.productName}})
@@ -531,11 +523,11 @@ import XmProductSelect from './XmProductSelect.vue';
clearFiltersPmUser:function(){
this.filters.pmUser=null;
this.searchXmProducts();
- },
+ },
selectFiltersPmUser(){
this.selectFiltersPmUserVisible=true;
},
- onFiltersPmUserSelected(users){
+ onFiltersPmUserSelected(users){
if(users && users.length>0){
this.filters.pmUser=users[0]
}else{
@@ -547,7 +539,7 @@ import XmProductSelect from './XmProductSelect.vue';
setFiltersPmUserAsMySelf(){
this.filters.pmUser=this.userInfo;
this.searchXmProducts();
- },
+ },
onProjectSelected(projects){
},
@@ -570,7 +562,7 @@ import XmProductSelect from './XmProductSelect.vue';
})
})
},
- doDelXmIterationProductLink(row){
+ doDelXmIterationProductLink(row){
var xmIteration=this.xmIteration;
var xmProduct=row;
this.$confirm('确认将产品【'+xmProduct.productName+'】与迭代【'+xmIteration.iterationName+'】进行脱钩吗?脱钩后,产品下的所有故事将从本迭代计划一并移出。', '提示', {
@@ -586,9 +578,9 @@ import XmProductSelect from './XmProductSelect.vue';
})
}
/**end 自定义函数请在上面加**/
-
+
},//end methods
- components: {
+ components: {
'xm-product-add':XmProductAdd,
'xm-product-edit':XmProductEdit,
XmIterationMng,
@@ -599,13 +591,13 @@ import XmProductSelect from './XmProductSelect.vue';
XmProductSelect,
//在下面添加其它组件
},
- mounted() {
+ mounted() {
this.$nextTick(() => {
var clientRect=this.$refs.table.$el.getBoundingClientRect();
- var subHeight=70/1000 * window.innerHeight;
- this.tableHeight = window.innerHeight -clientRect.y - this.$refs.table.$el.offsetTop-subHeight;
+ var subHeight=70/1000 * window.innerHeight;
+ this.tableHeight = window.innerHeight -clientRect.y - this.$refs.table.$el.offsetTop-subHeight;
this.getXmProducts();
- });
+ });
}
}
@@ -621,12 +613,12 @@ import XmProductSelect from './XmProductSelect.vue';
}
.align-right{
- float: right;
+ float: right;
}
\ No newline at end of file
+