Browse Source

概览前端减少查询,饼图添加百分比

master
chentaiyu 5 years ago
parent
commit
687731fc7c
  1. 8
      src/views/xm/core/xmProject/XmProjectOveriewComplex.vue
  2. 81
      src/views/xm/core/xmProject/XmProjectOverview.vue

8
src/views/xm/core/xmProject/XmProjectOveriewComplex.vue

@ -1,7 +1,7 @@
<template> <template>
<section class="page-container page-height-90 padding-left padding-right"> <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">
<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">
@ -81,7 +81,7 @@
</el-menu-item> </el-menu-item>
</el-submenu> </el-submenu>
</el-menu> </el-menu>
<xm-project-overview v-if="showPanelName=='overiew'" :sel-project="selProject"></xm-project-overview>
<xm-project-overview v-if="showPanelName=='overview'" :sel-project="selProject"></xm-project-overview>
<xm-project-detail v-if="showPanelName=='detail'" :sel-project="selProject"></xm-project-detail> <xm-project-detail v-if="showPanelName=='detail'" :sel-project="selProject"></xm-project-detail>
</section> </section>
</template> </template>
@ -106,7 +106,7 @@ export default {
}, },
data() { data() {
return { return {
showPanelName:'overiew'
showPanelName:'overview'
}; };
}, },

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

@ -75,7 +75,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.selProject.menuCnt}}</div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -85,7 +85,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.selProject.iterationCnt==null?0:this.selProject.iterationCnt)}} </div>
</div> </div>
</div> </div>
</el-row> </el-row>
@ -120,7 +120,7 @@
<span>缺陷情况</span> <span>缺陷情况</span>
</div> </div>
<div> <div>
<div id="bugPieChart" :style="{width: '440px', height: '400px'}"></div>
<div id="bugPieChart" :style="{width: '425px', height: '400px'}"></div>
</div> </div>
</el-card> </el-card>
</el-col> </el-col>
@ -147,7 +147,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.selProject.totalPlanWorkload"></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 +156,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.selProject.totalActWorkload"></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>
@ -244,7 +244,7 @@
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 { listXmProjectState } from '@/api/xm/core/xmProjectState';
//import { listXmProjectState } from '@/api/xm/core/xmProjectState';
import { listOption } from '@/api/mdp/meta/itemOption';// import { listOption } from '@/api/mdp/meta/itemOption';//
@ -252,16 +252,16 @@ export default {
computed: { computed: {
...mapGetters(["userInfo"]), ...mapGetters(["userInfo"]),
finish: function (){ finish: function (){
return this.xmProjectState.totalCompleteTaskCnt;
return this.selProject.totalCompleteTaskCnt;
}, },
notStart: function() { notStart: function() {
return this.xmProjectState.totalTaskCnt-this.xmProjectState.totalCompleteTaskCnt;
return this.selProject.totalTaskCnt-this.selProject.totalCompleteTaskCnt;
}, },
totalTask: function() { totalTask: function() {
return this.xmProjectState.totalTaskCnt;
return this.selProject.totalTaskCnt;
}, },
progress1: function (){ progress1: function (){
return Math.round(this.xmProjectState.totalCompleteTaskCnt/this.xmProjectState.totalTaskCnt*100);
return Math.round(this.selProject.totalCompleteTaskCnt/this.selProject.totalTaskCnt*100);
}, },
taskStartTime: function (){ taskStartTime: function (){
return this.selProject.startTime.substring(0,10); return this.selProject.startTime.substring(0,10);
@ -273,7 +273,7 @@ export default {
return this.selProject.createUsername; return this.selProject.createUsername;
}, },
workloadProgress:function (){ workloadProgress:function (){
return Math.round(this.xmProjectState.totalActWorkload/this.xmProjectState.totalPlanWorkload*100);
return Math.round(this.selProject.totalActWorkload/this.selProject.totalPlanWorkload*100);
}, },
deviation:function (){ deviation:function (){
let now = new Date(); let now = new Date();
@ -281,16 +281,16 @@ export default {
let taskEndTime = new Date(this.selProject.endTime); let taskEndTime = new Date(this.selProject.endTime);
if(now<=taskEndTime){ if(now<=taskEndTime){
let allDays=taskEndTime-taskStartTime; let allDays=taskEndTime-taskStartTime;
return this.xmProjectState.totalActWorkload - Math.round((now-taskStartTime)/allDays*this.xmProjectState.totalPlanWorkload)
return this.selProject.totalActWorkload - Math.round((now-taskStartTime)/allDays*this.selProject.totalPlanWorkload)
}else{ }else{
return this.xmProjectState.totalActWorkload - this.xmProjectState.totalPlanWorkload;
return this.selProject.totalActWorkload - this.selProject.totalPlanWorkload;
} }
}, },
deviationRate:function (){ deviationRate:function (){
return Math.round(this.deviation/this.xmProjectState.totalPlanWorkload*100);
return Math.round(this.deviation/this.selProject.totalPlanWorkload*100);
}, },
remainWorkload:function (){ remainWorkload:function (){
return this.xmProjectState.totalPlanWorkload - this.xmProjectState.totalActWorkload;
return this.selProject.totalPlanWorkload - this.selProject.totalActWorkload;
}, },
planProgress:function (){ planProgress:function (){
let now = new Date(); let now = new Date();
@ -304,14 +304,14 @@ export default {
} }
}, },
realProgress:function (){ realProgress:function (){
if(this.xmProjectState.totalActWorkload < this.xmProjectState.totalPlanWorkload){
return Math.round(this.xmProjectState.totalActWorkload/this.xmProjectState.totalPlanWorkload*100)
if(this.selProject.totalActWorkload < this.selProject.totalPlanWorkload){
return Math.round(this.selProject.totalActWorkload/this.selProject.totalPlanWorkload*100)
}else{ }else{
return 100; return 100;
} }
}, },
xmProjectStateCpd(){ xmProjectStateCpd(){
return this.xmProjectState
return this.selProject
}, },
calcProjectStatusStep(){ calcProjectStatusStep(){
if(this.options['projectStatus'] && this.selProject){ if(this.options['projectStatus'] && this.selProject){
@ -342,7 +342,8 @@ export default {
return { return {
isActive: true, isActive: true,
load:{ list: false}, load:{ list: false},
xmProjectState: [],//
selProject:[],
//xmProjectState: [],//
options:{ options:{
projectType:[], projectType:[],
urgencyLevel:[], urgencyLevel:[],
@ -354,7 +355,7 @@ export default {
methods:{ methods:{
//xmProjectsTate //xmProjectsTate
getXmProjectState(){
/*getXmProjectState(){
let params = { let params = {
projectId:this.selProject.id, projectId:this.selProject.id,
branchId:this.userInfo.branchId branchId:this.userInfo.branchId
@ -369,7 +370,7 @@ export default {
} }
this.load.list = false; this.load.list = false;
}).catch( err => this.load.list = false ); }).catch( err => this.load.list = false );
},
},*/
drawAllBar() { drawAllBar() {
// domecharts // domecharts
@ -398,7 +399,7 @@ export default {
{ {
data: [ data: [
{ {
value: this.xmProjectState.menuCnt,
value: this.selProject.menuCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -406,7 +407,7 @@ export default {
} }
}, },
{ {
value: this.xmProjectState.totalTaskCnt,
value: this.selProject.totalTaskCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -414,7 +415,7 @@ export default {
} }
}, },
{ {
value: this.xmProjectState.totalBugCnt,
value: this.selProject.totalBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#99CCFF' color: '#99CCFF'
@ -511,32 +512,46 @@ export default {
}, },
series: [ series: [
{ {
center:['55%','40%'],
center:['55%','40%'],//
type: 'pie', type: 'pie',
radius: '68%',
radius: '68%',//
label:{ //
normal:{
show:true,
position:'inner', //:
textStyle : {
fontWeight : 120 ,
fontSize: document.body.clientWidth / 150, //
color: "#000000"
},
formatter:'{b} : {c} ({d}%)',//bname,c:value,d:
alignTo:'edge',
margin:10
}
},
data: [ data: [
{value: this.xmProjectState.totalClosedBugCnt,
{value: this.selProject.totalClosedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#5470C6' color: '#5470C6'
} }
}, },
name: '已关闭'}, name: '已关闭'},
{value: this.xmProjectState.totalResolvedBugCnt,
{value: this.selProject.totalResolvedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#91CC75' color: '#91CC75'
} }
}, },
name: '已解决'}, name: '已解决'},
{value: this.xmProjectState.totalActiveBugCnt,
{value: this.selProject.totalActiveBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#FAC858' color: '#FAC858'
} }
}, },
name: '已激活'}, name: '已激活'},
{value: this.xmProjectState.totalConfirmedBugCnt,
{value: this.selProject.totalConfirmedBugCnt,
itemStyle: { itemStyle: {
normal:{ normal:{
color: '#EE6666' color: '#EE6666'
@ -562,17 +577,19 @@ export default {
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
this.getXmProjectState();
//this.getXmProjectState();
}); });
listOption([{categoryId:'all',itemCode:'projectType'},{categoryId:'all',itemCode:'urgencyLevel'},{categoryId:'all',itemCode:'priority'},{categoryId:'all',itemCode:'projectStatus'}] ).then(res=>{ listOption([{categoryId:'all',itemCode:'projectType'},{categoryId:'all',itemCode:'urgencyLevel'},{categoryId:'all',itemCode:'priority'},{categoryId:'all',itemCode:'projectStatus'}] ).then(res=>{
if(res.data.tips.isOk){ if(res.data.tips.isOk){
this.options['projectType']=res.data.data.projectType this.options['projectType']=res.data.data.projectType
this.options['urgencyLevel']=res.data.data.urgencyLevel this.options['urgencyLevel']=res.data.data.urgencyLevel
this.options['priority']=res.data.data.priority this.options['priority']=res.data.data.priority
this.options['projectStatus']=res.data.data.projectStatus this.options['projectStatus']=res.data.data.projectStatus
} }
}); });
this.drawAllBar();
this.drawTaskByDate();
this.drawPieBug();
}, },

Loading…
Cancel
Save