Browse Source

添加迭代概览

master
chentaiyu 5 years ago
parent
commit
3e8178e7b1
  1. 421
      src/views/xm/core/xmIteration/XmIterationOverview.vue
  2. 130
      src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue
  3. 5
      src/views/xm/core/xmProject/XmProjectOverview.vue

421
src/views/xm/core/xmIteration/XmIterationOverview.vue

@ -1,23 +1,18 @@
<template> <template>
<section class="page-container padding"> <section class="page-container padding">
<!-- <el-row class="page-header page-height-10">
<el-col :xs="22" :sm="22" :md="23" :lg="23" :xl="23">
<span >项目总览</span>
</el-col>
</el-row>-->
<el-row class="page-main page-height-75" style="overflow-x: hidden;"> <el-row class="page-main page-height-75" style="overflow-x: hidden;">
<el-row :gutter="10" style="margin-bottom:10px"> <el-row :gutter="10" style="margin-bottom:10px">
<el-col :span="8" > <el-col :span="8" >
<el-card class="box-card" style="padding:0px ;height:425px"> <el-card class="box-card" style="padding:0px ;height:425px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>项目信息</span>
<span>迭代信息</span>
</div> </div>
<el-row style="margin-bottom:18px"> <el-row style="margin-bottom:18px">
<el-row> <el-row>
<span v-text="taskMng"></span>
<span v-text="this.xmIteration.adminUsername"></span>
</el-row> </el-row>
<el-row> <el-row>
<span>项目负责人</span>
<span>负责人</span>
</el-row> </el-row>
</el-row> </el-row>
<el-row style="margin-bottom:18px"> <el-row style="margin-bottom:18px">
@ -27,7 +22,7 @@
<i class="el-icon-right"></i> <i class="el-icon-right"></i>
</div> </div>
<div class="info"> <div class="info">
<div v-text="totalTask"></div>
<div v-text="this.xmIteration.taskCnt"></div>
<div class="title">总任务量</div> <div class="title">总任务量</div>
</div> </div>
</div> </div>
@ -50,7 +45,7 @@
<i class="el-icon-check"></i> <i class="el-icon-check"></i>
</div> </div>
<div class="info"> <div class="info">
<div v-text="finish" >
<div v-text="this.xmIteration.finishTaskCnt" >
</div> </div>
<div class="title">已完成</div> <div class="title">已完成</div>
</div> </div>
@ -63,9 +58,9 @@
<i class="el-icon-date"></i> <i class="el-icon-date"></i>
</div> </div>
<div class="info"> <div class="info">
<div v-text="taskStartTime+'~'+taskEndTime">
<div v-text="iterationStartTime+'~'+iterationEndTime">
</div> </div>
<div class="title">项目计划周期</div>
<div class="title">迭代计划周期</div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -75,7 +70,7 @@
<i class="el-icon-star-off"></i> <i class="el-icon-star-off"></i>
</div> </div>
<div class="info"> <div class="info">
<div class="title"> 需求数 {{this.xmProjectState.menuCnt}}</div>
<div class="title"> 需求数 {{this.xmIteration.menuCnt}}</div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -85,7 +80,7 @@
<i class="el-icon-refresh"></i> <i class="el-icon-refresh"></i>
</div> </div>
<div class="info"> <div class="info">
<div class="title"> 迭代 {{(this.xmProjectState.iterationCnt==null?0:this.xmProjectState.iterationCnt)}} </div>
<div class="title"> 产品 {{(this.xmIteration.productCnt)}} </div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -96,7 +91,7 @@
</div> </div>
<div> <div>
<div class="info"> <div class="info">
<el-progress v-if="progress1" :percentage="progress1"></el-progress>
<el-progress :percentage="taskProgress"></el-progress>
</div> </div>
<div class="title">任务进度</div> <div class="title">任务进度</div>
</div> </div>
@ -126,20 +121,10 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10" style="margin-bottom:10px"> <el-row :gutter="10" style="margin-bottom:10px">
<el-col :span="12" >
<el-col :span="8" >
<el-card class="box-card" style="padding:0px ;height:425px"> <el-card class="box-card" style="padding:0px ;height:425px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>任务每日状态趋势</span>
</div>
<div>
<div id="taskChart" :style="{width: '630px', height: '320px'}"></div>
</div>
</el-card>
</el-col>
<el-col :span="12" >
<el-card class="box-card" style="padding:0px ;height:425px">
<div slot="header" class="clearfix">
<span>项目工时</span>
<span>迭代工时</span>
</div> </div>
<div> <div>
<el-row style="padding:25px;"> <el-row style="padding:25px;">
@ -147,7 +132,7 @@
<el-col :span="8"> <el-col :span="8">
<div> <div>
<div style="text-align:center;"> <div style="text-align:center;">
<span style="font-size:24px;" v-text="this.xmProjectState.totalPlanWorkload"></span>
<span style="font-size:24px;" v-text="this.xmIteration.distBudgetWorkload"></span>
<span style="font-size:5px;">h</span> <span style="font-size:5px;">h</span>
</div> </div>
<div style="text-align:center;font-size:5px;">预估工时</div> <div style="text-align:center;font-size:5px;">预估工时</div>
@ -156,7 +141,7 @@
<el-col :span="8"> <el-col :span="8">
<div> <div>
<div style="text-align:center;"> <div style="text-align:center;">
<span style="font-size:24px;" v-text="this.xmProjectState.totalActWorkload"></span>
<span style="font-size:24px;" v-text="this.xmIteration.actWorkload"></span>
<span style="font-size:5px;">h</span> <span style="font-size:5px;">h</span>
</div> </div>
<div style="text-align:center;font-size:5px;">登记工时</div> <div style="text-align:center;font-size:5px;">登记工时</div>
@ -206,171 +191,119 @@
</el-row> </el-row>
<el-row> <el-row>
<span style="margin-left:20px;">项目预计进度</span> <span style="margin-left:20px;">项目预计进度</span>
<el-progress style="width: 600px;margin-left:20px;margin-top: 10px;margin-bottom: 20px;" :text-inside="true" :stroke-width="24" :percentage="planProgress"></el-progress>
<el-progress style="width: 400px;margin-left:20px;margin-top: 10px;margin-bottom: 20px;" :text-inside="true" :stroke-width="24" :percentage="planProgress"></el-progress>
</el-row> </el-row>
<el-row> <el-row>
<span style="margin-left:20px;">项目实际进度</span> <span style="margin-left:20px;">项目实际进度</span>
<el-progress style="width: 600px;margin-left:20px;margin-top: 10px;" :text-inside="true" :stroke-width="24" :percentage="realProgress"></el-progress>
<el-progress style="width: 400px;margin-left:20px;margin-top: 10px;" :text-inside="true" :stroke-width="24" :percentage="realProgress"></el-progress>
</el-row> </el-row>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
</el-row>
<el-row style="margin-bottom:10px">
<el-card class="box-card" style="padding:0px ;height:200px">
<div slot="header" class="clearfix" style="margin-bottom:10px">
<span>项目阶段</span>
</div>
<div>
<el-row style="padding:10px">
<el-steps :active="calcProjectStatusStep" finish-status="success">
<el-step v-for="(i,index) in options['projectStatus']" :title="i.optionName" :key="index">
<el-row slot="title" @click.native.stop="editForm.status=i.optionValue">
{{i.optionName}}
</el-row>
</el-step>
</el-steps>
</el-row>
</div>
</el-card>
<el-col :span="8" >
<el-card class="box-card" style="padding:0px ;height:425px">
<div slot="header" class="clearfix">
<span>迭代相关联产品与项目数</span>
</div>
<div>
<div id="productAndProject" :style="{width: '450px', height: '350px'}"></div>
</div>
</el-card>
</el-col>
<el-col :span="8" >
<el-card class="box-card" style="height:425px">
<div slot="header" class="clearfix">
<span>案例情况</span>
</div>
<div>
<div id="casePie" :style="{width: '400px', height: '415px'}"></div>
</div>
</el-card>
</el-col>
</el-row> </el-row>
</el-row> </el-row>
</section> </section>
</template> </template>
<script> <script>
import util from "@/common/js/util"; // import util from "@/common/js/util"; //
//import Sticky from "@/components/Sticky"; // header
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { listXmProjectState } from '@/api/xm/core/xmProjectState';
import { listOption } from '@/api/mdp/meta/itemOption';//
export default { export default {
computed: { computed: {
...mapGetters(["userInfo"]), ...mapGetters(["userInfo"]),
finish: function (){
return this.xmProjectState.totalCompleteTaskCnt;
},
notStart: function() { notStart: function() {
return this.xmProjectState.totalTaskCnt-this.xmProjectState.totalCompleteTaskCnt;
},
totalTask: function() {
return this.xmProjectState.totalTaskCnt;
},
progress1: function (){
return Math.round(this.xmProjectState.totalCompleteTaskCnt/this.xmProjectState.totalTaskCnt*100);
return this.xmIteration.taskCnt-this.xmIteration.finishTaskCnt;
}, },
taskStartTime: function (){
return this.selProject.startTime.substring(0,10);
taskProgress: function (){
return Math.round(this.xmIteration.finishTaskCnt/this.xmIteration.taskCnt*100);
}, },
taskEndTime: function (){
return this.selProject.endTime.substring(0,10);
iterationStartTime: function (){
return this.xmIteration.startTime.substring(0,10);
}, },
taskMng: function (){
return this.selProject.createUsername;
iterationEndTime: function (){
return this.xmIteration.endTime.substring(0,10);
}, },
workloadProgress:function (){ workloadProgress:function (){
return Math.round(this.xmProjectState.totalActWorkload/this.xmProjectState.totalPlanWorkload*100);
return Math.round(this.xmIteration.actWorkload/this.xmIteration.distBudgetWorkload*100);
}, },
deviation:function (){ deviation:function (){
let now = new Date(); let now = new Date();
let taskStartTime = new Date(this.selProject.startTime);
let taskEndTime = new Date(this.selProject.endTime);
if(now<=taskEndTime){
let allDays=taskEndTime-taskStartTime;
return this.xmProjectState.totalActWorkload - Math.round((now-taskStartTime)/allDays*this.xmProjectState.totalPlanWorkload)
let startTime = new Date(this.xmIteration.startTime);
let endTime = new Date(this.xmIteration.endTime);
if(now<=endTime){
let allDays=endTime-startTime;
return this.xmIteration.actWorkload - Math.round((now-startTime)/allDays*this.xmIteration.distBudgetWorkload)
}else{ }else{
return this.xmProjectState.totalActWorkload - this.xmProjectState.totalPlanWorkload;
return this.xmIteration.actWorkload - this.xmIteration.distBudgetWorkload;
} }
}, },
deviationRate:function (){ deviationRate:function (){
return Math.round(this.deviation/this.xmProjectState.totalPlanWorkload*100);
return Math.round(this.deviation/this.xmIteration.distBudgetWorkload*100);
}, },
remainWorkload:function (){ remainWorkload:function (){
return this.xmProjectState.totalPlanWorkload - this.xmProjectState.totalActWorkload;
return this.xmIteration.distBudgetWorkload - this.xmIteration.actWorkload;
}, },
planProgress:function (){ planProgress:function (){
let now = new Date(); let now = new Date();
let taskStartTime = new Date(this.selProject.startTime);
let taskEndTime = new Date(this.selProject.endTime);
if(now<=taskEndTime){
let allDays=taskEndTime-taskStartTime;
return Math.round((now-taskStartTime)/allDays*100)
let startTime = new Date(this.xmIteration.startTime);
let endTime = new Date(this.xmIteration.endTime);
if(now<=endTime){
let allDays=endTime-startTime;
return Math.round((now-startTime)/allDays*100)
}else{ }else{
return 100; return 100;
} }
}, },
realProgress:function (){ realProgress:function (){
if(this.xmProjectState.totalActWorkload < this.xmProjectState.totalPlanWorkload){
return Math.round(this.xmProjectState.totalActWorkload/this.xmProjectState.totalPlanWorkload*100)
if(this.xmIteration.actWorkload < this.xmIteration.distBudgetWorkload){
return Math.round(this.xmIteration.actWorkload/this.xmIteration.distBudgetWorkload*100)
}else{ }else{
return 100; return 100;
} }
}, },
xmProjectStateCpd(){
return this.xmProjectState
xmIterationStateCpd(){
return this.xmIteration
}, },
calcProjectStatusStep(){
if(this.options['projectStatus'] && this.selProject){
var index=this.options['projectStatus'].findIndex(i=>{
if(i.optionValue==this.selProject.status){
return true;
}else{
return false;
}
})
return index+1;
}else{
return 0;
}
}
}, },
props:['selProject'],
props:['xmIteration'],
watch:{ watch:{
xmProjectStateCpd:function(){
xmIterationStateCpd:function(){
this.drawAllBar(); this.drawAllBar();
this.drawTaskByDate();
this.drawPieBug(); this.drawPieBug();
this.drawProductAndProject();
this.drawCasePie();
} }
}, },
data() { data() {
return { return {
isActive: true, isActive: true,
load:{ list: false},
xmProjectState: [],//
options:{
projectType:[],
urgencyLevel:[],
priority:[],
projectStatus:[],
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
};
};
}, },
methods:{ methods:{
//xmProjectsTate
getXmProjectState(){
let params = {
projectId:this.selProject.id,
branchId:this.userInfo.branchId
};
this.load.list = true;
listXmProjectState(params).then((res) => {
let tips=res.data.tips;
if(tips.isOk){
this.xmProjectState = res.data.data[0];
}else{
this.$message({showClose: true, message: tips.msg, type: 'error' });
}
this.load.list = false;
}).catch( err => this.load.list = false );
},
drawAllBar() { drawAllBar() {
// domecharts // domecharts
let allChart = this.$echarts.init(document.getElementById("allChart")); let allChart = this.$echarts.init(document.getElementById("allChart"));
@ -398,7 +331,7 @@ export default {
{ {
data: [ data: [
{ {
value: this.xmProjectState.menuCnt,
value: this.xmIteration.menuCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -406,7 +339,7 @@ export default {
} }
}, },
{ {
value: this.xmProjectState.totalTaskCnt,
value: this.xmIteration.taskCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -414,7 +347,7 @@ export default {
} }
}, },
{ {
value: this.xmProjectState.totalBugCnt,
value: this.xmIteration.bugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -430,74 +363,6 @@ export default {
// //
allChart.setOption(option); allChart.setOption(option);
}, },
drawTaskByDate() {
let taskChart = this.$echarts.init(document.getElementById("taskChart"));
let option = {
tooltip: {
trigger: 'axis'
},
color:['rgb(0, 153, 255)','#6699CC'],
legend: {
data: ['未开始', '进行中']
},
grid: {
left: '1%',
right: '3%',
bottom: '5%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
},
yAxis: {
type: 'value'
},
series: [
{
name: '未开始',
type: 'line',
//stack: '',
data: [120, 132, 101, 134, 90, 230, 210],
areaStyle: {
normal:{
color:"rgb(153, 204, 255)" , //线
}
},
lineStyle:{
normal:{
color:'rgb(0, 153, 255)'
}
},
},
{
name: '进行中',
type: 'line',
//stack: '',
data: [220, 182, 191, 234, 290, 330, 310],
areaStyle: {
normal:{
color:"rgb(153, 204, 255)", //线
}
},
lineStyle:{
normal:{
color:'#6699CC'
}
},
},
],
};
//
taskChart.setOption(option);
},
drawPieBug() { drawPieBug() {
let bugPieChart = this.$echarts.init(document.getElementById("bugPieChart")); let bugPieChart = this.$echarts.init(document.getElementById("bugPieChart"));
let option = { let option = {
@ -514,29 +379,43 @@ export default {
center:['55%','40%'], center:['55%','40%'],
type: 'pie', type: 'pie',
radius: '68%', radius: '68%',
label:{ //
normal:{
show:true,
position:'outer', //:
textStyle : {
fontWeight : 100 ,
fontSize: document.body.clientWidth / 120, //
color: "#000000"
},
formatter:'{b}\n{c}({d}%)',//bname,c:value,d:
alignTo:'edge',
margin:10
}
},
data: [ data: [
{value: this.xmProjectState.totalClosedBugCnt,
{value: this.xmIteration.closedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#5470C6' color: '#5470C6'
} }
}, },
name: '已关闭'}, name: '已关闭'},
{value: this.xmProjectState.totalResolvedBugCnt,
{value: this.xmIteration.resolvedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#91CC75' color: '#91CC75'
} }
}, },
name: '已解决'}, name: '已解决'},
{value: this.xmProjectState.totalActiveBugCnt,
{value: this.xmIteration.activeBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#FAC858' color: '#FAC858'
} }
}, },
name: '已激活'}, name: '已激活'},
{value: this.xmProjectState.totalConfirmedBugCnt,
{value: this.xmIteration.confirmedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#EE6666' color: '#EE6666'
@ -557,23 +436,125 @@ export default {
// //
bugPieChart.setOption(option); bugPieChart.setOption(option);
}
},
drawProductAndProject() {
let productAndProject = this.$echarts.init(document.getElementById("productAndProject"));
let option = {
tooltip: {
trigger: 'axis',
formatter: '{b} : {c}',
axisPointer: { //
type: 'shadow' // 线'line' | 'shadow'
},
},
yAxis: {
type: 'category',
data: ['产品数', '项目数']
},
xAxis: {
type: 'value'
},
series: [{
label: {
normal:{
show: true,
position: 'inside',
color:'#000000',
}
},
data: [this.xmIteration.productCnt, this.xmIteration.projectCnt],
type: 'bar',
showBackground: true,
itemStyle: {
normal:{
color: '#99CCFF'
}
},
backgroundStyle: {
color: '#FFFFFF'
}
}]
};
//
productAndProject.setOption(option);
},
drawCasePie() {
let casePie = this.$echarts.init(document.getElementById("casePie"));
let option = {
tooltip: {
trigger: 'item',
formatter: '{b} :<br/> {c} ({d}%)'
},
legend: {
bottom: 10,
left: 'center',
},
series: [
{
center:['55%','40%'],//
type: 'pie',
radius: '60%',//
label:{ //
normal:{
show:true,
position:'outer', //:
textStyle : {
fontWeight : 100 ,
fontSize: document.body.clientWidth / 120, //
color: "#000000"
},
formatter:'{b}\n{c}({d}%)',//bname,c:value,d:
alignTo:'edge',
margin:10
}
},
data: [
{value: this.xmIteration.execCases,
itemStyle: {
normal:{
color: '#73C0DE'
}
},
name: '测试中案例'},
{value: this.xmIteration.designCases,
itemStyle: {
normal:{
color: '#FAC858'
}
},
name: '设计中案例'},
{value: this.xmIteration.finishCases,
itemStyle: {
normal:{
color: '#91CC75'
}
},
name: '完成案例'},
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
//
casePie.setOption(option);
},
}, },
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
this.getXmProjectState();
}); });
listOption([{categoryId:'all',itemCode:'projectType'},{categoryId:'all',itemCode:'urgencyLevel'},{categoryId:'all',itemCode:'priority'},{categoryId:'all',itemCode:'projectStatus'}] ).then(res=>{
if(res.data.tips.isOk){
this.options['projectType']=res.data.data.projectType
this.options['urgencyLevel']=res.data.data.urgencyLevel
this.options['priority']=res.data.data.priority
this.options['projectStatus']=res.data.data.projectStatus
}
});
this.drawAllBar();
this.drawPieBug();
this.drawProductAndProject();
this.drawCasePie();
}, },
}; };

130
src/views/xm/core/xmIteration/XmIterationOverviewComplex.vue

@ -1,87 +1,87 @@
<template> <template>
<section class="page-container page-height-90 padding-left padding-right">
<el-menu mode="horizontal" default-active="overiew" @select="onMenuToolBarSelect">
<el-menu-item index="overiew">
<section class="page-container page-height-90 padding-left padding-right">
<el-menu mode="horizontal" default-active="overview" @select="onMenuToolBarSelect">
<el-menu-item index="overview">
<span slot="title">迭代概览</span> <span slot="title">迭代概览</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="detail">
<el-menu-item index="detail">
<span slot="title">迭代详情</span> <span slot="title">迭代详情</span>
</el-menu-item> </el-menu-item>
<el-submenu index="project-change"> <el-submenu index="project-change">
<template slot="title">
<template slot="title">
<span slot="title">项目变更</span> <span slot="title">项目变更</span>
</template>
</template>
<el-menu-item index="project-change-base-info"> <el-menu-item index="project-change-base-info">
<span slot="title">基础信息修改</span>
</el-menu-item>
<el-menu-item index="project-change-start">
<span slot="title">立项申请</span>
<span slot="title">基础信息修改</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-budget">
<span slot="title">预算+-</span>
<el-menu-item index="project-change-start">
<span slot="title">立项申请</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-cost">
<span slot="title">成本+-</span>
<el-menu-item index="project-change-budget">
<span slot="title">预算+-</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-collection">
<span slot="title">收款</span>
<el-menu-item index="project-change-cost">
<span slot="title">成本+-</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-conclusion">
<span slot="title">结项申请</span>
<el-menu-item index="project-change-collection">
<span slot="title">收款</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-suspend">
<span slot="title">暂停申请</span>
<el-menu-item index="project-change-conclusion">
<span slot="title">结项申请</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-activation">
<span slot="title">激活申请</span>
<el-menu-item index="project-change-suspend">
<span slot="title">暂停申请</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="project-change-to-after-sales">
<el-menu-item index="project-change-activation">
<span slot="title">激活申请</span>
</el-menu-item>
<el-menu-item index="project-change-to-after-sales">
<span slot="title">转售后申请</span> <span slot="title">转售后申请</span>
</el-menu-item>
<el-menu-item index="project-change-new-pm">
</el-menu-item>
<el-menu-item index="project-change-new-pm">
<span slot="title">项目经理变更申请</span> <span slot="title">项目经理变更申请</span>
</el-menu-item>
<el-menu-item index="project-change-new-leader">
</el-menu-item>
<el-menu-item index="project-change-new-leader">
<span slot="title">组长变更申请</span> <span slot="title">组长变更申请</span>
</el-menu-item>
</el-submenu>
</el-menu-item>
</el-submenu>
<el-submenu index="menu-change"> <el-submenu index="menu-change">
<template slot="title">
<template slot="title">
<span slot="title">需求变更</span> <span slot="title">需求变更</span>
</template>
</template>
<el-menu-item index="menu-change-review"> <el-menu-item index="menu-change-review">
<span slot="title">需求评审</span>
</el-menu-item>
<el-menu-item index="menu-change-border-review">
<span slot="title">需求边界异动</span>
</el-menu-item>
</el-submenu>
<span slot="title">需求评审</span>
</el-menu-item>
<el-menu-item index="menu-change-border-review">
<span slot="title">需求边界异动</span>
</el-menu-item>
</el-submenu>
<el-submenu index="iteration-change"> <el-submenu index="iteration-change">
<template slot="title">
<template slot="title">
<span slot="title">迭代变更</span> <span slot="title">迭代变更</span>
</template>
</template>
<el-menu-item index="iteration-change-review"> <el-menu-item index="iteration-change-review">
<span slot="title">迭代计划评审</span>
</el-menu-item>
<el-menu-item index="iteration-change-border-review">
<span slot="title">迭代上线申请</span>
</el-menu-item>
</el-submenu>
<span slot="title">迭代计划评审</span>
</el-menu-item>
<el-menu-item index="iteration-change-border-review">
<span slot="title">迭代上线申请</span>
</el-menu-item>
</el-submenu>
<el-submenu index="phase-change"> <el-submenu index="phase-change">
<template slot="title">
<template slot="title">
<span slot="title">阶段计划变更</span> <span slot="title">阶段计划变更</span>
</template>
</template>
<el-menu-item index="phase-change-review"> <el-menu-item index="phase-change-review">
<span slot="title">计划评审</span>
</el-menu-item>
<el-menu-item index="phase-change-border-review">
<span slot="title">预算变更</span>
</el-menu-item>
</el-submenu>
</el-menu>
<xm-iteration-overview v-if="showPanelName=='overiew'" :xm-iteration="xmIteration"></xm-iteration-overview>
<span slot="title">计划评审</span>
</el-menu-item>
<el-menu-item index="phase-change-border-review">
<span slot="title">预算变更</span>
</el-menu-item>
</el-submenu>
</el-menu>
<xm-iteration-overview v-if="showPanelName=='overview'" :xm-iteration="xmIteration"></xm-iteration-overview>
<xm-iteration-edit v-if="showPanelName=='detail'" :xm-iteration="xmIteration"></xm-iteration-edit> <xm-iteration-edit v-if="showPanelName=='detail'" :xm-iteration="xmIteration"></xm-iteration-edit>
</section> </section>
</template> </template>
@ -90,34 +90,34 @@
import util from "@/common/js/util"; // import util from "@/common/js/util"; //
//import Sticky from "@/components/Sticky"; // header //import Sticky from "@/components/Sticky"; // header
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import XmIterationOverview from './XmIterationOverview.vue';
import XmIterationOverview from './XmIterationOverview.vue';
import XmIterationEdit from './XmIterationEdit.vue'; import XmIterationEdit from './XmIterationEdit.vue';
export default { export default {
components: {XmIterationOverview,XmIterationEdit }, components: {XmIterationOverview,XmIterationEdit },
computed: { computed: {
...mapGetters(["userInfo"]),
...mapGetters(["userInfo"]),
}, },
props:['xmIteration'], props:['xmIteration'],
watch:{
watch:{
}, },
data() { data() {
return {
showPanelName:'overiew'
return {
showPanelName:'overview'
}; };
}, },
methods:{ methods:{
onMenuToolBarSelect(menuIndex){ onMenuToolBarSelect(menuIndex){
this.showPanelName=menuIndex; this.showPanelName=menuIndex;
} }
}, },
mounted() { mounted() {
this.$nextTick(() => {
this.$nextTick(() => {
}); });
}, },
@ -125,5 +125,5 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
</style> </style>

5
src/views/xm/core/xmProject/XmProjectOverview.vue

@ -269,7 +269,6 @@
<script> <script>
import util from "@/common/js/util"; // import util from "@/common/js/util"; //
//import Sticky from "@/components/Sticky"; // header
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { listOption } from '@/api/mdp/meta/itemOption';// import { listOption } from '@/api/mdp/meta/itemOption';//
@ -369,8 +368,6 @@ export default {
data() { data() {
return { return {
isActive: true, isActive: true,
load:{ list: false},
selProject:[],
options:{ options:{
projectType:[], projectType:[],
urgencyLevel:[], urgencyLevel:[],
@ -739,7 +736,7 @@ export default {
showBackground: true, showBackground: true,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#FFE4C4'
color: '#87CEFA'
} }
}, },
backgroundStyle: { backgroundStyle: {

Loading…
Cancel
Save