Browse Source

优化

master
陈裕财 4 years ago
parent
commit
02ce6f227f
  1. 12
      src/views/xm/core/components/XmItSelect.vue
  2. 119
      src/views/xm/core/components/XmMenuWorkload.vue
  3. 39
      src/views/xm/core/xmMenu/XmMenuMng.vue

12
src/views/xm/core/components/XmItSelect.vue

@ -30,7 +30,7 @@
this.initData();
},
value(){
this.iterationId=value;
this.iterationId=this.value;
},
iterationId(){
this.$emit("input",this.iterationId)
@ -38,8 +38,14 @@
this.$emit("change",null)
return;
}
var iteration=this.xmIterations.find(i=>i.id==this.iterationId)
this.$emit("change",iteration)
if(this.xmIterations){
var iteration=this.xmIterations.find(i=>i.id==this.iterationId)
this.$emit("change",iteration)
}else{
var iteration={id:this.iterationId}
this.$emit("change",iteration)
}
}
},
data() {

119
src/views/xm/core/components/XmMenuWorkload.vue

@ -0,0 +1,119 @@
<template>
<section>
<el-popover
placement="bottom"
width="500"
v-model="formVisible"
trigger="manual" > <el-form :model="editForm" label-width="100px" ref="editForm">
<el-form-item label="汇总方式" prop="calcType">
<el-radio v-model="editForm.calcType" label="3" placeholder="下级往上级汇总" :disabled="editForm.ntype==='0'">下往上</el-radio>
<el-radio v-model="editForm.calcType" label="1" placeholder="由任务汇总" :disabled="editForm.ntype==='1'">任务汇总</el-radio>
<el-radio v-model="editForm.calcType" label="2" placeholder="手工填报" :disabled="editForm.ntype==='1'">手工填报</el-radio>
</el-form-item>
<el-form-item label="当前进度" prop="mactRate" >
<el-progress style="width:50%;" :stroke-width="15" :percentage="editForm.mactRate?editForm.mactRate:0"></el-progress>
</el-form-item>
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;h
</el-form-item>
<el-form-item label="预估工时" prop="budgetWorkload">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计工时(人时)"></el-input-number> &nbsp;h
</el-form-item>
<el-form-item label="实际工时" prop="mactWorkload">
<el-input-number :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" style="width:200px;" v-model="editForm.mactWorkload" :precision="2" :step="8" :min="0" placeholder="实际工时(人时)"></el-input-number> &nbsp;h
</el-form-item>
<font color="blue" style="font-size:10px;">控制规则:
<br>下级往上汇总指需求池的数据来自直接下级的需求池(需求)的数据之和逐级往上汇总
<br>由任务汇总 指需求(不包括需求池)的数据来自与该需求关联的任务的数据之和
<br>手工填报 指需求(不包括需求池)的数据来自手工填报无论是否关联了任务都不从任务汇总
</font>
<el-form-item label="" class="padding">
<el-button type="text" @click="cancel">关闭</el-button>
<el-button :disabled="editForm.calcType!=='2' && editForm.ntype==='1'" type="primary" @click="submit">确认</el-button>
</el-form-item>
</el-form>
<el-button title="点击填写工时" @click="formVisible=true" type="warning" slot="reference" icon="el-icon-edit"><font style="font-size:14px;"></font></el-button>
</el-popover>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
props:['menu'],
watch:{
menu(){
this.editForm={...this.menu}
},
'editForm.mactWorkload':function(val,oldVal){
if(!this.editForm.budgetWorkload){
return;
}
if(val==0||!val){
return;
}
this.editForm.mactRate=Math.round(val/this.editForm.budgetWorkload*100)
if( this.editForm.mactRate>100){
this.editForm.mactRate=100;
}
},
'editForm.budgetWorkload':function(val,oldVal){
if(!this.editForm.mactWorkload){
return;
}
if(val==0||!val){
return;
}
this.editForm.mactRate=Math.round(this.editForm.mactWorkload/val*100)
if( this.editForm.mactRate>100){
this.editForm.mactRate=100;
}
}
},
data() {
return {
editForm: {
menuId:'',menuName:'',pmenuId:'',productId:'',remark:'',status:'',online:'',demandUrl:'',codeUrl:'',designUrl:'',docUrl:'',helpUrl:'',operDocUrl:'',seqNo:'1',mmUserid:'',mmUsername:'',ntype:'0',childrenCnt:0,sinceVersion:'',
proposerId:'',proposerName:'',dlvl:'',dtype:'',priority:'',source:'',calcType:'1',mactWorkload:0,mactAmount:0,mactRate:0
},
formVisible:false,
}
},//end data
methods: {
cancel(){
this.formVisible=false;
this.$emit("cancel")
},
submit(){
var params={mactRate:this.editForm.mactRate,menuId:this.editForm.menuId,mactWorkload:this.editForm.mactWorkload,budgetWorkload:this.editForm.budgetWorkload,budgetHours:this.editForm.budgetHours,calcType:this.editForm.calcType}
this.$emit("submit",params);
this.formVisible=false;
}
},//end methods
components: {
//
},
mounted() {
this.$nextTick(() => {
this.editForm={...this.menu}
});
}
}
</script>
<style lang="scss" scoped>
</style>

39
src/views/xm/core/xmMenu/XmMenuMng.vue

@ -177,8 +177,7 @@
</el-row>
<el-button type="primary" round slot="reference" icon="el-icon-plus"></el-button>
</el-popover>
<!--<el-button @click="batchEditVisible=true" icon="el-icon-edit" title="批量修改"></el-button> -->
<el-button @click="showParentMenu" icon="el-icon-top" title="更换上级"></el-button>
<el-button v-if="disabledMng!=false" type="danger" @click="batchDel" icon="el-icon-delete" title="删除"></el-button>
@ -310,7 +309,7 @@
{{scope.row.iterationName}}
</div>
<span class="cell-bar">
<xm-it-select :product-id="filters.product?filters.product.id:null" :link-project-id="selProject?selProject.id:null" v-model="scope.row.iterationId" placeholder="迭代" style="display:block;" @change="editXmMenuSomeFields(scope.row,'iterationId',$event)">
<xm-it-select :product-id="filters.product?filters.product.id:null" :link-project-id="selProject?selProject.id:null" placeholder="迭代" style="display:block;" @change="editXmMenuSomeFields(scope.row,'iterationId',$event)">
</xm-it-select>
</span>
@ -327,8 +326,18 @@
</el-table-column>
<el-table-column prop="finishRate" label="进度" min-width="80" show-overflow-tooltip sortable>
<template slot-scope="scope">
<span v-if="scope.row.finishRate"><el-tag :type="scope.row.finishRate>=100?'success':'warning'">{{scope.row.finishRate}}%</el-tag></span>
<div class="cell-text" v-if="scope.row.calcType!=='2'">
<span v-if="scope.row.finishRate"><el-tag :type="scope.row.finishRate>=100?'success':'warning'">{{scope.row.finishRate}}%</el-tag></span>
</div>
<div class="cell-text" v-else>
<span v-if="scope.row.mactRate"><el-tag :type="scope.row.mactRate>=100?'success':'warning'">{{scope.row.mactRate}}%</el-tag></span>
</div>
<span class="cell-bar">
<xm-menu-workload :menu="scope.row" placeholder="工时" style="display:block;" @submit="editXmMenuSomeFields(scope.row,'workload',$event)">
</xm-menu-workload>
</span>
</template>
</el-table-column>
<el-table-column prop="bugs" label="缺陷" min-width="100" show-overflow-tooltip sortable>
@ -456,6 +465,7 @@
import XmTaskListForMenu from '../xmTask/XmTaskListForMenu';
import XmIterationSelect from '../xmIteration/XmIterationSelect';//
import XmItSelect from '@/views/xm/core/components/XmItSelect';//
import XmMenuWorkload from '@/views/xm/core/components/XmMenuWorkload';//
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
import XmMenuSelect from "../xmMenu/XmMenuSelect";
@ -463,7 +473,7 @@
import {sn} from '@/common/js/sequence'
import { mapGetters } from 'vuex'
import { mapGetters } from 'vuex'
export default {
props:['selProject','xmIteration','xmProduct','disabledMng'],
@ -1227,8 +1237,10 @@
}else{
return;
}
}else {
params[fieldName]=$event;
}else if(fieldName==='workload'){
params={...params,...$event}
}else{
params[fieldName]=$event
}
editXmMenuSomeFields(params).then(res=>{
@ -1245,6 +1257,9 @@
i['tagIds']=params['tagIds']
this.fieldTagVisible=false;
}
if(fieldName==='workload'){
Object.assign(i,params)
}
})
}else{
if(fieldName==='tagIds'){
@ -1252,6 +1267,13 @@
row['tagIds']=params['tagIds']
this.fieldTagVisible=false;
}
if(fieldName==='iterationId'){
row['iterationName']=params['iterationName']
row['iterationId']=params['iterationId']
}
if(fieldName==='workload'){
Object.assign(row,params)
}
}
}else{
this.$notify({showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
@ -1274,8 +1296,9 @@
TagMng,
XmMenuSelect,
XmItSelect,
XmMenuWorkload,
//
},
},
mounted() {
initSimpleDicts("all",['menuStatus','demandSource','demandLvl','demandType','priority']).then(res=>{
this.dicts=res.data.data;

Loading…
Cancel
Save