Browse Source

优化

master
陈裕财 4 years ago
parent
commit
39ca29f547
  1. 2
      src/api/xm/core/xmPhaseTemplate.js
  2. 4
      src/views/datav/xm/project/cards.vue
  3. 2
      src/views/xm/core/xmIteration/XmIterationInfo.vue
  4. 140
      src/views/xm/core/xmPhase/XmPhaseAdd.vue
  5. 400
      src/views/xm/core/xmPhase/XmPhaseBatch.vue
  6. 140
      src/views/xm/core/xmPhase/XmPhaseEdit.vue
  7. 184
      src/views/xm/core/xmPhase/XmPhaseForProduct.vue
  8. 192
      src/views/xm/core/xmPhase/XmPhaseMng.vue
  9. 28
      src/views/xm/core/xmPhase/XmPhaseOverview.vue
  10. 20
      src/views/xm/core/xmPhase/XmPhaseSelect.vue
  11. 50
      src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateAdd.vue
  12. 50
      src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateEdit.vue
  13. 18
      src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateMng.vue
  14. 2
      src/views/xm/core/xmProduct/XmProductInfo.vue
  15. 2
      src/views/xm/core/xmProject/XmProjectInfo.vue
  16. 8
      src/views/xm/core/xmTask/XmTaskAdd.vue
  17. 16
      src/views/xm/core/xmTask/XmTaskEdit.vue

2
src/api/xm/core/xmPhaseTemplate.js

@ -8,7 +8,7 @@ let base = config.getCoreBasePath();
/**
* 项目阶段模板
*1 默认只开放普通查询所有查询只要上传 分页参数 {currentPage:当前页码从1开始,pageSize:每页记录数,total:总记录数如果是0后台会自动计算总记录数非0不会自动计算}后台都会自动按分页查询 其它 api用到再打开没用到的api请注释掉
*2 查询新增修改的参数格式 params={id:'阶段主键 主键',name:'阶段名称',remark:'备注',parentId:'上级阶段编号',branchId:'机构编号',projectId:'当前项目编号',beginDate:'开始时间',endDate:'结束时间',phaseBudgetHours:'工时(不包括下一级)-应该大于或等于task中总工时',phaseBudgetStaffNu:'投入人员数(不包括下一级)-应该大于或等于task中总人数',ctime:'创建时间',phaseBudgetNouserAt:'非人力成本总预算(不包括下一级)-应该大于或等于task中非人力总成本',phaseBudgetIuserAt:'内部人力成本总预算(不包括下一级)-应该大于或等于task中内部人力总成本',phaseBudgetOuserAt:'外购人力成本总预算(不包括下一级)-应该大于或等于task中外购总成本',phaseBudgetWorkload:'总工作量单位人时-应该大于或者等于task中的预算总工作量',taskType:'0售前方案1投标2需求3设计4开发5测试6验收7部署8运维--来自基础数据表taskType',planType:'计划类型w1-周,w2-2周,w3-3周,m1-1月,m2-2月,q1-季,q2-半年,y1-年',seqNo:'顺序号',phaseBudgetIuserWorkload:'内部人力工作量总预算(不包括下一级)-应该大于或等于task中内部人力总成本',phaseBudgetOuserWorkload:'外购人力工作量总预算(不包括下一级)-应该大于或等于task中外购总成本',phaseBudgetIuserPrice:'内部人力成本单价元/人时',phaseBudgetOuserPrice:'外购人力成本单价元/人时',phaseBudgetOuserCnt:'外购人数',phaseBudgetIuserCnt:'内部人数'}
*2 查询新增修改的参数格式 params={id:'阶段主键 主键',name:'阶段名称',remark:'备注',parentId:'上级阶段编号',branchId:'机构编号',projectId:'当前项目编号',beginDate:'开始时间',endDate:'结束时间',budgetHours:'工时(不包括下一级)-应该大于或等于task中总工时',budgetStaffNu:'投入人员数(不包括下一级)-应该大于或等于task中总人数',ctime:'创建时间',budgetNouserAt:'非人力成本总预算(不包括下一级)-应该大于或等于task中非人力总成本',budgetIuserAt:'内部人力成本总预算(不包括下一级)-应该大于或等于task中内部人力总成本',budgetOuserAt:'外购人力成本总预算(不包括下一级)-应该大于或等于task中外购总成本',budgetWorkload:'总工作量单位人时-应该大于或者等于task中的预算总工作量',taskType:'0售前方案1投标2需求3设计4开发5测试6验收7部署8运维--来自基础数据表taskType',planType:'计划类型w1-周,w2-2周,w3-3周,m1-1月,m2-2月,q1-季,q2-半年,y1-年',seqNo:'顺序号',budgetIuserWorkload:'内部人力工作量总预算(不包括下一级)-应该大于或等于task中内部人力总成本',budgetOuserWorkload:'外购人力工作量总预算(不包括下一级)-应该大于或等于task中外购总成本',budgetIuserPrice:'内部人力成本单价元/人时',budgetOuserPrice:'外购人力成本单价元/人时',budgetOuserCnt:'外购人数',budgetIuserCnt:'内部人数'}
**/
//普通查询 条件之间and关系

4
src/views/datav/xm/project/cards.vue

@ -39,10 +39,10 @@ export default {
var cards= this.data.map(i=>{
var card=JSON.parse(JSON.stringify(this.cardConfig))
card.title=i.name
card.total.number=[i.phaseBudgetWorkload];//
card.total.number=[i.budgetWorkload];//
card.num.number=[i.actRate];//
//
card.ring.series[0].data[0].value=(i.phaseBudgetWorkload/i.totalPlanWorkload) //
card.ring.series[0].data[0].value=(i.budgetWorkload/i.totalPlanWorkload) //
return card
});

2
src/views/xm/core/xmIteration/XmIterationInfo.vue

@ -178,7 +178,7 @@
pageNum = this.$refs.xmTaskMng.pageInfo.pageNum;
} else if (this.infotype === '计划') {
header = ['序号', '计划名称', '开始时间', '结束时间', '进度(%)', '状态', '计划人数', '实际人数', '计划工期', '实际工期', '计划工作量(人时)', '实际工作量(人时)', '计划非人力成本(元)', '实际非人力成本(元)', '计划内购人力成本(元)', '实际内购人力成本(元)', '计划外购人力成本(元)', '实际外购人力成本(元)', '计划成本合计(元)', '实际成本合计(元)', '审批状态', '备注'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'phaseBudgetOuserCnt', 'actStaffNu', 'phaseBudgetHours', 'actHours', 'phaseBudgetWorkload', 'phaseActWorkload', 'phaseBudgetNouserAt', 'actNouserAt', 'phaseBudgetIuserAt', 'actIuserAt', 'phaseBudgetOuserAt', 'actOuserAt', 'phaseBudgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'budgetOuserCnt', 'actStaffNu', 'budgetHours', 'actHours', 'budgetWorkload', 'actWorkload', 'budgetNouserAt', 'actNouserAt', 'budgetIuserAt', 'actIuserAt', 'budgetOuserAt', 'actOuserAt', 'budgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
list = this.$refs.xmPhaseMng.projectPhaseTreeData;
pageNum = this.$refs.xmPhaseMng.pageInfo.pageNum;

140
src/views/xm/core/xmPhase/XmPhaseAdd.vue

@ -27,7 +27,7 @@
</el-row>
<el-tabs v-model="activeName" class="border padding">
<el-tab-pane label="工作量及人力成本" name="phaseBudgetWorkload">
<el-tab-pane label="工作量及人力成本" name="budgetWorkload">
<el-row>
<el-row class="padding-20 border">
<el-row class="padding">工作量计算方式<font style="color:red">总工时 = 工作日天数 * 每日工时数 * 人数 </font> </el-row>
@ -46,8 +46,8 @@
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
预估工期<el-input style="width:100px;" type="number" v-model="addForm.phaseBudgetHours" :precision="2" :step="8" :min="0" placeholder="预计工时"></el-input>小时
<div class="tips"><font>工时{{autoParams.phaseBudgetHours}}小时,工作日{{autoParams.weekday}}</font></div>
预估工期<el-input style="width:100px;" type="number" v-model="addForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工时"></el-input>小时
<div class="tips"><font>工时{{autoParams.budgetHours}}小时,工作日{{autoParams.weekday}}</font></div>
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">人员类型</el-col>
@ -59,36 +59,36 @@
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">内购</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.phaseBudgetIuserCnt" :precision="0" :step="1" :min="0" placeholder="内购人数"></el-input>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.budgetIuserCnt" :precision="0" :step="1" :min="0" placeholder="内购人数"></el-input>
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetIuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.phaseBudgetIuserPrice" :precision="0" :step="1" :min="0" placeholder="预计内部人时单价"></el-input> </el-col>
<el-col :span="8">{{this.toFixed(autoParams.phaseBudgetIuserAt)}},{{this.toFixed(autoParams.phaseBudgetIuserAt/10000)}} 万元</el-col>
<el-col :span="4">{{autoParams.budgetIuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.budgetIuserPrice" :precision="0" :step="1" :min="0" placeholder="预计内部人时单价"></el-input> </el-col>
<el-col :span="8">{{this.toFixed(autoParams.budgetIuserAt)}},{{this.toFixed(autoParams.budgetIuserAt/10000)}} 万元</el-col>
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">外购</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.phaseBudgetOuserCnt" :precision="0" :step="1" :min="0" placeholder="外购人数"></el-input>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.budgetOuserCnt" :precision="0" :step="1" :min="0" placeholder="外购人数"></el-input>
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.phaseBudgetOuserPrice" :precision="0" :step="1" :min="0" placeholder="预计外购人时单价"></el-input> </el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserAt }} {{autoParams.phaseBudgetOuserAt/10000 }}万元</el-col>
<el-col :span="4">{{autoParams.budgetOuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="addForm.budgetOuserPrice" :precision="0" :step="1" :min="0" placeholder="预计外购人时单价"></el-input> </el-col>
<el-col :span="4">{{autoParams.budgetOuserAt }} {{autoParams.budgetOuserAt/10000 }}万元</el-col>
</el-row >
<el-row class="padding-20 border">
<el-col :span="4">合计</el-col>
<el-col :span="4"> {{autoParams.phaseBudgetOuserCnt+autoParams.phaseBudgetIuserCnt}}
<el-col :span="4"> {{autoParams.budgetOuserCnt+autoParams.budgetIuserCnt}}
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserWorkload+autoParams.phaseBudgetIuserWorkload }}人时,{{ (autoParams.phaseBudgetOuserWorkload+autoParams.phaseBudgetIuserWorkload)/8/20 }}人月 </el-col>
<el-col :span="4">{{ (parseFloat2(autoParams.phaseBudgetOuserPrice) + parseFloat2(autoParams.phaseBudgetIuserPrice))/2}}/人时</el-col>
<el-col :span="8">{{autoParams.phaseBudgetTotalCost}} {{(autoParams.phaseBudgetTotalCost)/10000}} 万元</el-col>
<el-col :span="4">{{autoParams.budgetOuserWorkload+autoParams.budgetIuserWorkload }}人时,{{ (autoParams.budgetOuserWorkload+autoParams.budgetIuserWorkload)/8/20 }}人月 </el-col>
<el-col :span="4">{{ (parseFloat2(autoParams.budgetOuserPrice) + parseFloat2(autoParams.budgetIuserPrice))/2}}/人时</el-col>
<el-col :span="8">{{autoParams.budgetTotalCost}} {{(autoParams.budgetTotalCost)/10000}} 万元</el-col>
</el-row>
<el-row class="padding-20 border">
总计 {{parseFloat2(addForm.phaseBudgetIuserAt)+parseFloat2(addForm.phaseBudgetOuserAt)+parseFloat2(addForm.phaseBudgetNouserAt)}} <el-tag>{{this.toFixed(autoParams.phaseBudgetTotalCost/10000)}}万元</el-tag>
总计 {{parseFloat2(addForm.budgetIuserAt)+parseFloat2(addForm.budgetOuserAt)+parseFloat2(addForm.budgetNouserAt)}} <el-tag>{{this.toFixed(autoParams.budgetTotalCost/10000)}}万元</el-tag>
</el-row>
</el-row>
</el-tab-pane>
<el-tab-pane v-if="activeName=='phaseBudgetWorkload'" label="收起" name="">
<el-tab-pane v-if="activeName=='budgetWorkload'" label="收起" name="">
</el-tab-pane>
</el-tabs>
</el-form>
@ -115,31 +115,31 @@
autoParams:function(){
var phaseBudgetOuserPrice=this.toFixed(this.addForm.phaseBudgetOuserPrice)
var phaseBudgetIuserPrice=this.toFixed(this.addForm.phaseBudgetIuserPrice)
var phaseBudgetOuserCnt=this.toFixed(this.addForm.phaseBudgetOuserCnt)
var phaseBudgetIuserCnt=this.toFixed(this.addForm.phaseBudgetIuserCnt)
var phaseBudgetHours=this.toFixed(this.addForm.phaseBudgetHours )
var phaseBudgetNouserAt=this.toFixed(this.addForm.phaseBudgetNouserAt )
if(phaseBudgetOuserPrice==null || phaseBudgetOuserPrice==''){
phaseBudgetOuserPrice=100
var budgetOuserPrice=this.toFixed(this.addForm.budgetOuserPrice)
var budgetIuserPrice=this.toFixed(this.addForm.budgetIuserPrice)
var budgetOuserCnt=this.toFixed(this.addForm.budgetOuserCnt)
var budgetIuserCnt=this.toFixed(this.addForm.budgetIuserCnt)
var budgetHours=this.toFixed(this.addForm.budgetHours )
var budgetNouserAt=this.toFixed(this.addForm.budgetNouserAt )
if(budgetOuserPrice==null || budgetOuserPrice==''){
budgetOuserPrice=100
}
if(phaseBudgetIuserPrice==null || phaseBudgetIuserPrice==''){
phaseBudgetIuserPrice=80
if(budgetIuserPrice==null || budgetIuserPrice==''){
budgetIuserPrice=80
}
if(phaseBudgetOuserCnt==null || phaseBudgetOuserCnt==''){
phaseBudgetOuserCnt=0.0
if(budgetOuserCnt==null || budgetOuserCnt==''){
budgetOuserCnt=0.0
}
if(phaseBudgetIuserCnt==null || phaseBudgetIuserCnt==''){
phaseBudgetIuserCnt=0.0
if(budgetIuserCnt==null || budgetIuserCnt==''){
budgetIuserCnt=0.0
}
if(phaseBudgetNouserAt==null || phaseBudgetNouserAt==''){
phaseBudgetNouserAt=0.0
if(budgetNouserAt==null || budgetNouserAt==''){
budgetNouserAt=0.0
}
if(phaseBudgetHours==null || phaseBudgetHours==''){
phaseBudgetHours=0.0
if(budgetHours==null || budgetHours==''){
budgetHours=0.0
}
var autoParams={
@ -147,22 +147,22 @@
var weekday=1;
if(this.dateRanger!=null && this.dateRanger.length>=2 ){
weekday=this.getWeekday(new Date(this.dateRanger[0]),new Date(this.dateRanger[1]));
phaseBudgetHours=weekday * 8
budgetHours=weekday * 8
}
autoParams.weekday=weekday
autoParams.phaseBudgetHours=phaseBudgetHours
autoParams.phaseBudgetOuserPrice=phaseBudgetOuserPrice
autoParams.phaseBudgetIuserPrice=phaseBudgetIuserPrice
autoParams.phaseBudgetOuserCnt=phaseBudgetOuserCnt
autoParams.phaseBudgetIuserCnt=phaseBudgetIuserCnt
autoParams.phaseBudgetIuserWorkload= phaseBudgetIuserCnt*phaseBudgetHours
autoParams.phaseBudgetOuserWorkload= phaseBudgetOuserCnt*phaseBudgetHours
autoParams.phaseBudgetWorkload= phaseBudgetIuserCnt*phaseBudgetHours + phaseBudgetOuserCnt*phaseBudgetHours
autoParams.phaseBudgetOuserAt= phaseBudgetOuserCnt * phaseBudgetHours * phaseBudgetOuserPrice
autoParams.phaseBudgetIuserAt= phaseBudgetIuserCnt * phaseBudgetHours * phaseBudgetIuserPrice
autoParams.phaseBudgetNouserAt= phaseBudgetNouserAt
autoParams.phaseBudgetTotalCost= autoParams.phaseBudgetOuserAt + autoParams.phaseBudgetIuserAt + autoParams.phaseBudgetNouserAt
autoParams.budgetHours=budgetHours
autoParams.budgetOuserPrice=budgetOuserPrice
autoParams.budgetIuserPrice=budgetIuserPrice
autoParams.budgetOuserCnt=budgetOuserCnt
autoParams.budgetIuserCnt=budgetIuserCnt
autoParams.budgetIuserWorkload= budgetIuserCnt*budgetHours
autoParams.budgetOuserWorkload= budgetOuserCnt*budgetHours
autoParams.budgetWorkload= budgetIuserCnt*budgetHours + budgetOuserCnt*budgetHours
autoParams.budgetOuserAt= budgetOuserCnt * budgetHours * budgetOuserPrice
autoParams.budgetIuserAt= budgetIuserCnt * budgetHours * budgetIuserPrice
autoParams.budgetNouserAt= budgetNouserAt
autoParams.budgetTotalCost= autoParams.budgetOuserAt + autoParams.budgetIuserAt + autoParams.budgetNouserAt
return autoParams
},
},
@ -185,8 +185,8 @@
}
},
autoParams:function(autoParams){
this.fillphaseBudgetHoursToField()
this.fillphaseBudgetAtToField()
this.fillbudgetHoursToField()
this.fillbudgetAtToField()
}
},
data() {
@ -215,7 +215,7 @@
},
// xm_project_phase
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetWorkload:'',totalActWorkload:'',totalActNouserAt:'',totalActInerUserAt:'',totalActOuserAt:'',planType:'',taskType:'',seqNo:'1',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0,ntype:'0'
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetWorkload:'',totalActWorkload:'',totalActNouserAt:'',totalActInerUserAt:'',totalActOuserAt:'',planType:'',taskType:'',seqNo:'1',budgetIuserCnt:'',budgetOuserCnt:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0,ntype:'0'
},
dateRanger: [
util.formatDate.format(beginDate, "yyyy-MM-dd HH:mm:ss"),
@ -260,16 +260,16 @@
this.$notify({showClose: true, message: "请输入开始日期和结束日期", type: 'error' });
return;
}
if(!this.addForm.phaseBudgetIuserCnt){
if(!this.addForm.budgetIuserCnt){
this.$notify({showClose: true, message: "内购人员数不能为空", type: 'error' });
return;
}
if(!this.addForm.phaseBudgetHours){
if(!this.addForm.budgetHours){
this.$notify({showClose: true, message: "工期不能为空", type: 'error' });
return;
}
if(!this.addForm.phaseBudgetIuserPrice){
if(!this.addForm.budgetIuserPrice){
this.$notify({showClose: true, message: "内购单价不能为空", type: 'error' });
return;
}
@ -278,19 +278,19 @@
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.add=true
let params = Object.assign({}, this.addForm);
if(!params.phaseBudgetIuserAt){
params.phaseBudgetIuserAt= this.parseFloat2(params.phaseBudgetIuserCnt) * this.parseFloat2(params.phaseBudgetIuserPrice) * this.parseFloat2(params.phaseBudgetHours)
if(!params.budgetIuserAt){
params.budgetIuserAt= this.parseFloat2(params.budgetIuserCnt) * this.parseFloat2(params.budgetIuserPrice) * this.parseFloat2(params.budgetHours)
}
if( !params.phaseBudgetOuserAt ){
params.phaseBudgetOuserAt= this.parseFloat2(params.phaseBudgetOuserCnt) * this.parseFloat2(params.phaseBudgetOuserPrice) * this.parseFloat2(params.phaseBudgetHours)
if( !params.budgetOuserAt ){
params.budgetOuserAt= this.parseFloat2(params.budgetOuserCnt) * this.parseFloat2(params.budgetOuserPrice) * this.parseFloat2(params.budgetHours)
}
params.phaseBudgetIuserWorkload= this.parseFloat2(params.phaseBudgetIuserCnt) * this.parseFloat2(params.phaseBudgetHours)
params.phaseBudgetOuserWorkload= this.parseFloat2(params.phaseBudgetOuserCnt) * this.parseFloat2(params.phaseBudgetHours)
params.budgetIuserWorkload= this.parseFloat2(params.budgetIuserCnt) * this.parseFloat2(params.budgetHours)
params.budgetOuserWorkload= this.parseFloat2(params.budgetOuserCnt) * this.parseFloat2(params.budgetHours)
params.phaseBudgetWorkload= this.parseFloat2(params.phaseBudgetIuserWorkload) + this.parseFloat2(params.phaseBudgetOuserWorkload)
if( !params.phaseBudgetStaffNu ){
params.budgetWorkload= this.parseFloat2(params.budgetIuserWorkload) + this.parseFloat2(params.budgetOuserWorkload)
if( !params.budgetStaffNu ){
params.phaseBudgetStaffNu= this.parseFloat2(params.phaseBudgetOuserCnt) + this.parseFloat2(params.phaseBudgetIuserCnt)
params.budgetStaffNu= this.parseFloat2(params.budgetOuserCnt) + this.parseFloat2(params.budgetIuserCnt)
}
if(this.parentProjectPhase==null || this.parentProjectPhase==undefined){
@ -350,15 +350,15 @@
fillToField:function(){
this.addForm=Object.assign(this.addForm,this.autoParams);
},
fillphaseBudgetHoursToField:function(){
this.addForm.phaseBudgetHours=this.toFixed(this.autoParams.phaseBudgetHours)
fillbudgetHoursToField:function(){
this.addForm.budgetHours=this.toFixed(this.autoParams.budgetHours)
},
fillphaseBudgetAtToField:function(){
this.addForm.phaseBudgetNouserAt=this.toFixed(this.autoParams.phaseBudgetNouserAt)
this.addForm.phaseBudgetOuserAt=this.toFixed(this.autoParams.phaseBudgetOuserAt )
this.addForm.phaseBudgetIuserAt=this.toFixed(this.autoParams.phaseBudgetIuserAt )
this.addForm.phaseBudgetTotalCost=this.toFixed(this.autoParams.phaseBudgetTotalCost)
fillbudgetAtToField:function(){
this.addForm.budgetNouserAt=this.toFixed(this.autoParams.budgetNouserAt)
this.addForm.budgetOuserAt=this.toFixed(this.autoParams.budgetOuserAt )
this.addForm.budgetIuserAt=this.toFixed(this.autoParams.budgetIuserAt )
this.addForm.budgetTotalCost=this.toFixed(this.autoParams.budgetTotalCost)
},
/**end 在上面加自定义方法**/

400
src/views/xm/core/xmPhase/XmPhaseBatch.vue

@ -50,30 +50,30 @@
<span style="margin-left: 10px; font-size: 14px">项目总预算</span
><el-tag type="success">
{{ toFixed(selProject.planTotalCost / 10000, 2) }}{{
toFixed(phaseBudgetData.surplusPlanCostAt / 10000, 2)
toFixed(budgetData.surplusPlanCostAt / 10000, 2)
}}</el-tag
>
<span style="margin-left: 10px; font-size: 14px">非人力总预算</span
><el-tag
:type="phaseBudgetData.surplusPlanNouserAt > 0 ? 'warning' : 'danger'"
:type="budgetData.surplusPlanNouserAt > 0 ? 'warning' : 'danger'"
>{{ toFixed(selProject.planNouserAt / 10000, 2) }}{{
toFixed(phaseBudgetData.surplusPlanNouserAt / 10000, 2)
toFixed(budgetData.surplusPlanNouserAt / 10000, 2)
}}</el-tag
>
<span style="margin-left: 10px; font-size: 14px">内部人力总预算</span
><el-tag
:type="
phaseBudgetData.surplusPlanIuserAt > 0 ? 'warning' : 'danger'
budgetData.surplusPlanIuserAt > 0 ? 'warning' : 'danger'
"
>{{ toFixed(selProject.planIuserAt / 10000, 2) }}{{
toFixed(phaseBudgetData.surplusPlanIuserAt / 10000, 2)
toFixed(budgetData.surplusPlanIuserAt / 10000, 2)
}}</el-tag
>
<span style="margin-left: 10px; font-size: 14px">外购人力总预算</span
><el-tag
:type="phaseBudgetData.surplusPlanOuserAt > 0 ? 'warning' : 'danger'"
:type="budgetData.surplusPlanOuserAt > 0 ? 'warning' : 'danger'"
>{{ toFixed(selProject.planOuserAt / 10000, 2) }}{{
toFixed(phaseBudgetData.surplusPlanOuserAt / 10000, 2)
toFixed(budgetData.surplusPlanOuserAt / 10000, 2)
}}</el-tag
>
</el-row>
@ -161,7 +161,7 @@
</template>
</el-table-column>
<el-table-column
prop="phaseBudgetHours"
prop="budgetHours"
label="工期.H"
width="100"
>
@ -169,24 +169,24 @@
<el-row>
<el-input-number
style="width: 100%"
v-model="scope.row.phaseBudgetHours"
v-model="scope.row.budgetHours"
:precision="1"
:step="8"
type="number"
:controls="false"
@change="fieldChange(scope.row, 'phaseBudgetHours')"
@change="fieldChange(scope.row, 'budgetHours')"
></el-input-number>
</el-row>
</template>
</el-table-column>
<el-table-column
prop="phaseBudgetHours"
prop="budgetHours"
label="预计工作量及成本"
min-width="300"
>
<el-table-column
prop="phaseBudgetHours"
prop="budgetHours"
label="人数"
min-width="100"
>
@ -196,12 +196,12 @@
内购
<el-input
style="width: 80px"
v-model="scope.row.phaseBudgetIuserCnt"
v-model="scope.row.budgetIuserCnt"
:precision="2"
step="1"
type="number"
@change="
fieldChange(scope.row, 'phaseBudgetIuserCnt')
fieldChange(scope.row, 'budgetIuserCnt')
"
></el-input
>
@ -210,11 +210,11 @@
外购
<el-input
style="width: 80px"
v-model="scope.row.phaseBudgetOuserCnt"
v-model="scope.row.budgetOuserCnt"
:precision="2"
step="1"
type="number"
@change="fieldChange(scope.row, 'phaseBudgetOuserCnt')"
@change="fieldChange(scope.row, 'budgetOuserCnt')"
></el-input
>
</el-col>
@ -225,12 +225,12 @@
<template slot-scope="scope">
<el-input
style="width: 80px"
v-model="scope.row.phaseBudgetOuserPrice"
v-model="scope.row.budgetOuserPrice"
:precision="2"
step="10"
type="number"
@change="
fieldChange(scope.row, 'phaseBudgetOuserPrice')
fieldChange(scope.row, 'budgetOuserPrice')
"
></el-input>
</template>
@ -239,9 +239,9 @@
<template slot-scope="scope">
{{
(
scope.row.phaseBudgetIuserAt +
scope.row.phaseBudgetOuserAt +
scope.row.phaseBudgetNouserAt
scope.row.budgetIuserAt +
scope.row.budgetOuserAt +
scope.row.budgetNouserAt
).toFixed(0)
}}
</template>
@ -296,7 +296,7 @@ export default {
var projectPhaseTreeData = treeTool.translateDataToTree(this.xmPhases,"parentPhaseId","id");
return projectPhaseTreeData;
},
phaseBudgetData() {
budgetData() {
var rows = this.xmPhases;
var surplusPlanCostAt =
this.getFloatValue(this.selProject.planIuserAt) +
@ -322,20 +322,20 @@ export default {
surplusPlanNouserAt: surplusPlanNouserAt,
surplusPlanUserAt: surplusPlanUserAt,
phaseBudgetNouserAt: 0,
phaseBudgetIuserAt: 0,
phaseBudgetOuserAt: 0,
phaseBudgetUserAt: 0,
budgetNouserAt: 0,
budgetIuserAt: 0,
budgetOuserAt: 0,
budgetUserAt: 0,
phaseBudgetIuserWorkload: 0,
phaseBudgetOuserWorkload: 0,
budgetIuserWorkload: 0,
budgetOuserWorkload: 0,
phaseActWorkload: 0,
actWorkload: 0,
actIuserAt: 0,
actNouserAt: 0,
actOuserAt: 0,
};
//phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt
//budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt
rows.forEach((row2) => {
var row = row2;
@ -346,24 +346,24 @@ export default {
}
}
if(row.lvl<=1){
total.phaseBudgetNouserAt =
total.phaseBudgetNouserAt +
this.getFloatValue(row.phaseBudgetNouserAt);
total.phaseBudgetIuserAt =
total.phaseBudgetIuserAt +
this.getFloatValue(row.phaseBudgetIuserAt);
total.phaseBudgetOuserAt =
total.phaseBudgetOuserAt +
this.getFloatValue(row.phaseBudgetOuserAt);
total.phaseBudgetIuserWorkload =
total.phaseBudgetIuserWorkload +
this.getFloatValue(row.phaseBudgetIuserWorkload);
total.phaseBudgetOuserWorkload =
total.phaseBudgetOuserWorkload +
this.getFloatValue(row.phaseBudgetOuserWorkload);
total.budgetNouserAt =
total.budgetNouserAt +
this.getFloatValue(row.budgetNouserAt);
total.budgetIuserAt =
total.budgetIuserAt +
this.getFloatValue(row.budgetIuserAt);
total.budgetOuserAt =
total.budgetOuserAt +
this.getFloatValue(row.budgetOuserAt);
total.budgetIuserWorkload =
total.budgetIuserWorkload +
this.getFloatValue(row.budgetIuserWorkload);
total.budgetOuserWorkload =
total.budgetOuserWorkload +
this.getFloatValue(row.budgetOuserWorkload);
total.phaseActWorkload =
total.phaseActWorkload + this.getFloatValue(row.phaseActWorkload);
total.actWorkload =
total.actWorkload + this.getFloatValue(row.actWorkload);
total.actIuserAt =
total.actIuserAt + this.getFloatValue(row.actIuserAt);
total.actNouserAt =
@ -373,21 +373,21 @@ export default {
}
});
total.phaseBudgetUserAt =
total.phaseBudgetIuserAt + total.phaseBudgetOuserAt;
total.budgetUserAt =
total.budgetIuserAt + total.budgetOuserAt;
total.surplusPlanCostAt = this.getFloatValue(
total.surplusPlanCostAt -
total.phaseBudgetNouserAt -
total.phaseBudgetUserAt
total.budgetNouserAt -
total.budgetUserAt
);
total.surplusPlanIuserAt =
total.surplusPlanIuserAt - total.phaseBudgetIuserAt;
total.surplusPlanIuserAt - total.budgetIuserAt;
total.surplusPlanOuserAt =
total.surplusPlanOuserAt - total.phaseBudgetOuserAt;
total.surplusPlanOuserAt - total.budgetOuserAt;
total.surplusPlanNouserAt =
total.surplusPlanNouserAt - total.phaseBudgetNouserAt;
total.surplusPlanNouserAt - total.budgetNouserAt;
total.surplusPlanUserAt =
total.surplusPlanUserAt - total.phaseBudgetUserAt;
total.surplusPlanUserAt - total.budgetUserAt;
return total;
},
},
@ -437,22 +437,22 @@ export default {
projectId: "",
beginDate: "",
endDate: "",
phaseBudgetHours: "",
phaseBudgetStaffNu: "",
budgetHours: "",
budgetStaffNu: "",
ctime: "",
phaseBudgetNouserAt: "",
phaseBudgetIuserAt: "",
phaseBudgetOuserAt: "",
budgetNouserAt: "",
budgetIuserAt: "",
budgetOuserAt: "",
baselineId: "",
bizProcInstId: "",
bizFlowState: "",
phaseBudgetIuserCnt: "",
phaseBudgetOuserCnt: "",
budgetIuserCnt: "",
budgetOuserCnt: "",
seqNo: "",
phaseBudgetIuserPrice: 80,
phaseBudgetOuserPrice: 100,
phaseBudgetIuserWorkload: 0,
phaseBudgetOuserWorkload: 0,
budgetIuserPrice: 80,
budgetOuserPrice: 100,
budgetIuserWorkload: 0,
budgetOuserWorkload: 0,
},
editFormVisible: false, //
@ -466,22 +466,22 @@ export default {
projectId: "",
beginDate: "",
endDate: "",
phaseBudgetHours: "",
phaseBudgetStaffNu: "",
budgetHours: "",
budgetStaffNu: "",
ctime: "",
phaseBudgetNouserAt: "",
phaseBudgetIuserAt: "",
phaseBudgetOuserAt: "",
budgetNouserAt: "",
budgetIuserAt: "",
budgetOuserAt: "",
baselineId: "",
bizProcInstId: "",
bizFlowState: "",
phaseBudgetIuserCnt: "",
phaseBudgetOuserCnt: "",
budgetIuserCnt: "",
budgetOuserCnt: "",
seqNo: "",
phaseBudgetIuserPrice: 80,
phaseBudgetOuserPrice: 100,
phaseBudgetIuserWorkload: 0,
phaseBudgetOuserWorkload: 0,
budgetIuserPrice: 80,
budgetOuserPrice: 100,
budgetIuserWorkload: 0,
budgetOuserWorkload: 0,
},
editFormInit: {
@ -495,22 +495,22 @@ export default {
projectId: "",
beginDate: "",
endDate: "",
phaseBudgetHours: "",
phaseBudgetStaffNu: "",
budgetHours: "",
budgetStaffNu: "",
ctime: "",
phaseBudgetNouserAt: "",
phaseBudgetIuserAt: "",
phaseBudgetOuserAt: "",
budgetNouserAt: "",
budgetIuserAt: "",
budgetOuserAt: "",
baselineId: "",
bizProcInstId: "",
bizFlowState: "",
phaseBudgetIuserCnt: "",
phaseBudgetOuserCnt: "",
budgetIuserCnt: "",
budgetOuserCnt: "",
seqNo: "",
phaseBudgetIuserPrice: 80,
phaseBudgetOuserPrice: 100,
phaseBudgetIuserWorkload: 0,
phaseBudgetOuserWorkload: 0,
budgetIuserPrice: 80,
budgetOuserPrice: 100,
budgetIuserWorkload: 0,
budgetOuserWorkload: 0,
},
parentProjectPhase: null,
/**begin 自定义属性请在下面加 请加备注**/
@ -764,19 +764,19 @@ export default {
i.projectId = this.selProject.id;
i.projectName = this.selProject.name;
i.branchId = this.selProject.branchId;
i.phaseBudgetAt = 0;
i.phaseBudgetNouserAt = 0;
i.phaseBudgetIuserAt = 0;
i.phaseBudgetOuserAt = 0;
i.phaseBudgetWorkload = 0;
i.phaseBudgetStaffNu = 0;
i.phaseBudgetHours = 160;
i.phaseBudgetIuserWorkload = 0;
i.phaseBudgetOuserWorkload = 0;
i.phaseBudgetIuserPrice = this.selProject.planIuserPrice;
i.phaseBudgetOuserPrice = this.selProject.planOuserPrice;
i.phaseBudgetOuserCnt = 0;
i.phaseBudgetIuserCnt = 0;
i.budgetAt = 0;
i.budgetNouserAt = 0;
i.budgetIuserAt = 0;
i.budgetOuserAt = 0;
i.budgetWorkload = 0;
i.budgetStaffNu = 0;
i.budgetHours = 160;
i.budgetIuserWorkload = 0;
i.budgetOuserWorkload = 0;
i.budgetIuserPrice = this.selProject.planIuserPrice;
i.budgetOuserPrice = this.selProject.planOuserPrice;
i.budgetOuserCnt = 0;
i.budgetIuserCnt = 0;
const ctime = new Date();
var beginDate = new Date();
const endDate = new Date();
@ -947,7 +947,7 @@ export default {
let parents = data.filter((value) => {
//
var calcData = this.getRowSum(value);
value.phaseBudgetAt = calcData.phaseBudgetAt;
value.budgetAt = calcData.budgetAt;
value.actCostAt = calcData.actCostAt;
if (
value.parentPhaseId == "undefined" ||
@ -1030,27 +1030,27 @@ export default {
},
getRowSum(row) {
if (
row.phaseBudgetNouserAt == null ||
row.phaseBudgetNouserAt == "" ||
row.phaseBudgetNouserAt == undefined
row.budgetNouserAt == null ||
row.budgetNouserAt == "" ||
row.budgetNouserAt == undefined
) {
row.phaseBudgetNouserAt = 0;
row.budgetNouserAt = 0;
}
if (
row.phaseBudgetIuserAt == null ||
row.phaseBudgetIuserAt == "" ||
row.phaseBudgetIuserAt == undefined
row.budgetIuserAt == null ||
row.budgetIuserAt == "" ||
row.budgetIuserAt == undefined
) {
row.phaseBudgetIuserAt = 0;
row.budgetIuserAt = 0;
}
if (
row.phaseBudgetOuserAt == null ||
row.phaseBudgetOuserAt == "" ||
row.phaseBudgetOuserAt == undefined
row.budgetOuserAt == null ||
row.budgetOuserAt == "" ||
row.budgetOuserAt == undefined
) {
row.phaseBudgetOuserAt = 0;
row.budgetOuserAt = 0;
}
if (
row.actNouserAt == null ||
@ -1075,16 +1075,16 @@ export default {
) {
row.actOuserAt = 0;
}
var phaseBudgetAt =
parseFloat(row.phaseBudgetNouserAt) +
parseFloat(row.phaseBudgetIuserAt) +
parseFloat(row.phaseBudgetOuserAt);
var budgetAt =
parseFloat(row.budgetNouserAt) +
parseFloat(row.budgetIuserAt) +
parseFloat(row.budgetOuserAt);
var actCostAt =
parseFloat(row.actNouserAt) +
parseFloat(row.actIuserAt) +
parseFloat(row.actOuserAt);
return { phaseBudgetAt: phaseBudgetAt, actCostAt: actCostAt };
return { budgetAt: budgetAt, actCostAt: actCostAt };
},
fieldChange: function (row, fieldName, nextReplace) {
if (nextReplace) {
@ -1093,73 +1093,73 @@ export default {
console.log("fieldChange--row.opType==", row.opType);
//{{formatDate(scope.row.beginDate)}}~{{formatDate(scope.row.endDate)}} <br/>
if (!row.phaseBudgetIuserPrice) {
row.phaseBudgetIuserPrice = this.selProject.planIuserPrice;
if (!row.budgetIuserPrice) {
row.budgetIuserPrice = this.selProject.planIuserPrice;
}
if (!row.phaseBudgetOuserPrice) {
row.phaseBudgetOuserPrice = this.selProject.planOuserPrice;
if (!row.budgetOuserPrice) {
row.budgetOuserPrice = this.selProject.planOuserPrice;
}
if (!row.phaseBudgetIuserCnt) {
row.phaseBudgetIuserCnt = 0;
if (!row.budgetIuserCnt) {
row.budgetIuserCnt = 0;
}
if (!row.phaseBudgetOuserPrice) {
row.phaseBudgetOuserPrice = this.selProject.planOuserPrice;
if (!row.budgetOuserPrice) {
row.budgetOuserPrice = this.selProject.planOuserPrice;
}
if (!row.phaseBudgetOuserPrice) {
row.phaseBudgetOuserPrice = this.selProject.planOuserPrice;
if (!row.budgetOuserPrice) {
row.budgetOuserPrice = this.selProject.planOuserPrice;
}
if (!row.phaseBudgetOuserCnt) {
row.phaseBudgetOuserCnt = 0;
if (!row.budgetOuserCnt) {
row.budgetOuserCnt = 0;
}
if (fieldName == "beginDate" || fieldName == "endDate") {
if (row.beginDate && row.endDate) {
var start = new Date(row.beginDate);
var end = new Date(row.endDate);
var days = this.getDaysBetween(end, start);
row.phaseBudgetHours = this.getFloatValue(days * 8).toFixed(2);
row.phaseBudgetIuserWorkload =
row.phaseBudgetHours * row.phaseBudgetIuserCnt;
row.phaseBudgetIuserAt =
row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice;
row.phaseBudgetOuserWorkload =
row.phaseBudgetHours * row.phaseBudgetOuserCnt;
row.phaseBudgetOuserAt =
row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice;
row.phaseBudgetWorkload =
row.phaseBudgetIuserWorkload + row.phaseBudgetOuserWorkload;
row.budgetHours = this.getFloatValue(days * 8).toFixed(2);
row.budgetIuserWorkload =
row.budgetHours * row.budgetIuserCnt;
row.budgetIuserAt =
row.budgetIuserWorkload * row.budgetIuserPrice;
row.budgetOuserWorkload =
row.budgetHours * row.budgetOuserCnt;
row.budgetOuserAt =
row.budgetOuserWorkload * row.budgetOuserPrice;
row.budgetWorkload =
row.budgetIuserWorkload + row.budgetOuserWorkload;
}
} else if (fieldName == "phaseBudgetHours") {
row.phaseBudgetIuserWorkload =
row.phaseBudgetHours * row.phaseBudgetIuserCnt;
row.phaseBudgetIuserAt =
row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice;
row.phaseBudgetOuserWorkload =
row.phaseBudgetHours * row.phaseBudgetOuserCnt;
row.phaseBudgetOuserAt =
row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice;
row.phaseBudgetWorkload =
row.phaseBudgetIuserWorkload + row.phaseBudgetOuserWorkload;
} else if (fieldName == "budgetHours") {
row.budgetIuserWorkload =
row.budgetHours * row.budgetIuserCnt;
row.budgetIuserAt =
row.budgetIuserWorkload * row.budgetIuserPrice;
row.budgetOuserWorkload =
row.budgetHours * row.budgetOuserCnt;
row.budgetOuserAt =
row.budgetOuserWorkload * row.budgetOuserPrice;
row.budgetWorkload =
row.budgetIuserWorkload + row.budgetOuserWorkload;
} else if (
fieldName == "phaseBudgetIuserPrice" ||
fieldName == "phaseBudgetIuserCnt"
fieldName == "budgetIuserPrice" ||
fieldName == "budgetIuserCnt"
) {
row.phaseBudgetIuserWorkload =
row.phaseBudgetHours * row.phaseBudgetIuserCnt;
row.phaseBudgetIuserAt =
row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice;
row.phaseBudgetWorkload =
row.phaseBudgetIuserWorkload + row.phaseBudgetOuserWorkload;
row.budgetIuserWorkload =
row.budgetHours * row.budgetIuserCnt;
row.budgetIuserAt =
row.budgetIuserWorkload * row.budgetIuserPrice;
row.budgetWorkload =
row.budgetIuserWorkload + row.budgetOuserWorkload;
} else if (
fieldName == "phaseBudgetOuserPrice" ||
fieldName == "phaseBudgetOuserCnt"
fieldName == "budgetOuserPrice" ||
fieldName == "budgetOuserCnt"
) {
row.phaseBudgetOuserWorkload =
row.phaseBudgetHours * row.phaseBudgetOuserCnt;
row.phaseBudgetOuserAt =
row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice;
row.phaseBudgetWorkload =
row.phaseBudgetIuserWorkload + row.phaseBudgetOuserWorkload;
row.budgetOuserWorkload =
row.budgetHours * row.budgetOuserCnt;
row.budgetOuserAt =
row.budgetOuserWorkload * row.budgetOuserPrice;
row.budgetWorkload =
row.budgetIuserWorkload + row.budgetOuserWorkload;
}
if (row.opType) {
var index = this.valueChangeRows.findIndex((i) => i.id == row.id);
@ -1205,7 +1205,7 @@ export default {
});
return;
} else {
if (this.phaseBudgetData.surplusPlanIuserAt < 0) {
if (this.budgetData.surplusPlanIuserAt < 0) {
this.$notify({
showClose: true,
message: "内部人力预算不足,请调整",
@ -1213,7 +1213,7 @@ export default {
});
return;
}
if (this.phaseBudgetData.surplusPlanOuserAt < 0) {
if (this.budgetData.surplusPlanOuserAt < 0) {
this.$notify({
showClose: true,
message: "外购人力预算不足,请调整",
@ -1221,7 +1221,7 @@ export default {
});
return;
}
if (this.phaseBudgetData.surplusPlanNouserAt < 0) {
if (this.budgetData.surplusPlanNouserAt < 0) {
this.$notify({
showClose: true,
message: "非人力预算不足请调整",
@ -1320,12 +1320,12 @@ export default {
sums[4] = ""; //
var workload =
this.phaseBudgetData.phaseBudgetIuserWorkload +
this.phaseBudgetData.phaseBudgetOuserWorkload;
this.budgetData.budgetIuserWorkload +
this.budgetData.budgetOuserWorkload;
var cost =
this.phaseBudgetData.phaseBudgetNouserAt +
this.phaseBudgetData.phaseBudgetIuserAt +
this.phaseBudgetData.phaseBudgetOuserAt;
this.budgetData.budgetNouserAt +
this.budgetData.budgetIuserAt +
this.budgetData.budgetOuserAt;
sums[4] =
"工作量:" +
workload.toFixed(0) +
@ -1347,23 +1347,23 @@ export default {
sums[5] = ""; //
sums[6] = ""; //
var budgetWorkload =
this.phaseBudgetData.phaseBudgetIuserWorkload +
this.phaseBudgetData.phaseBudgetOuserWorkload;
this.budgetData.budgetIuserWorkload +
this.budgetData.budgetOuserWorkload;
var phaseActWorkload = this.phaseBudgetData.phaseActWorkload;
var actWorkload = this.budgetData.actWorkload;
var budgetCost =
this.phaseBudgetData.phaseBudgetNouserAt +
this.phaseBudgetData.phaseBudgetIuserAt +
this.phaseBudgetData.phaseBudgetOuserAt;
this.budgetData.budgetNouserAt +
this.budgetData.budgetIuserAt +
this.budgetData.budgetOuserAt;
var actCost =
this.phaseBudgetData.actIuserAt +
this.phaseBudgetData.actNouserAt +
this.phaseBudgetData.actOuserAt;
this.budgetData.actIuserAt +
this.budgetData.actNouserAt +
this.budgetData.actOuserAt;
sums[5] =
"预算工作量:" +
budgetWorkload +
"人时,实际:" +
phaseActWorkload +
actWorkload +
"人时";
sums[6] =
"预算金额:" +
@ -1652,19 +1652,19 @@ export default {
subRow.projectId = this.selProject.id;
subRow.projectName = this.selProject.name;
subRow.branchId = this.selProject.branchId;
subRow.phaseBudgetAt = 0;
subRow.phaseBudgetNouserAt = 0;
subRow.phaseBudgetIuserAt = 0;
subRow.phaseBudgetOuserAt = 0;
subRow.phaseBudgetWorkload = 0;
subRow.phaseBudgetStaffNu = 0;
subRow.phaseBudgetHours = 160;
subRow.phaseBudgetIuserWorkload = 0;
subRow.phaseBudgetOuserWorkload = 0;
subRow.phaseBudgetIuserPrice = this.selProject.planIuserPrice;
subRow.phaseBudgetOuserPrice = this.selProject.planOuserPrice;
subRow.phaseBudgetOuserCnt = 0;
subRow.phaseBudgetIuserCnt = 0;
subRow.budgetAt = 0;
subRow.budgetNouserAt = 0;
subRow.budgetIuserAt = 0;
subRow.budgetOuserAt = 0;
subRow.budgetWorkload = 0;
subRow.budgetStaffNu = 0;
subRow.budgetHours = 160;
subRow.budgetIuserWorkload = 0;
subRow.budgetOuserWorkload = 0;
subRow.budgetIuserPrice = this.selProject.planIuserPrice;
subRow.budgetOuserPrice = this.selProject.planOuserPrice;
subRow.budgetOuserCnt = 0;
subRow.budgetIuserCnt = 0;
const ctime = new Date();
var beginDate = new Date();
const endDate = new Date();

140
src/views/xm/core/xmPhase/XmPhaseEdit.vue

@ -36,7 +36,7 @@
</el-row>
<el-tabs v-model="activeName" class="border padding">
<el-tab-pane label="工作量及人力成本" name="phaseBudgetWorkload">
<el-tab-pane label="工作量及人力成本" name="budgetWorkload">
<el-row>
<el-row class="padding-20 border">
<el-row class="padding">工作量计算方式<font style="color:red">总工时 = 工作日天数 * 每日工时数 * 人数 </font> </el-row>
@ -55,8 +55,8 @@
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
预估工期<el-input style="width:100px;" type="number" v-model="editForm.phaseBudgetHours" :precision="2" :step="8" :min="0" placeholder="预计工时"></el-input>小时
<div class="tips"><font>工时{{autoParams.phaseBudgetHours}}小时,工作日{{autoParams.weekday}}</font></div>
预估工期<el-input style="width:100px;" type="number" v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工时"></el-input>小时
<div class="tips"><font>工时{{autoParams.budgetHours}}小时,工作日{{autoParams.weekday}}</font></div>
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">人员类型</el-col>
@ -68,36 +68,36 @@
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">内购</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.phaseBudgetIuserCnt" :precision="0" :step="1" :min="0" placeholder="内购人数"></el-input>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.budgetIuserCnt" :precision="0" :step="1" :min="0" placeholder="内购人数"></el-input>
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetIuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.phaseBudgetIuserPrice" :precision="0" :step="1" :min="0" placeholder="预计内部人时单价"></el-input> </el-col>
<el-col :span="8">{{this.toFixed(autoParams.phaseBudgetIuserAt)}},{{this.toFixed(autoParams.phaseBudgetIuserAt/10000)}} 万元</el-col>
<el-col :span="4">{{autoParams.budgetIuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.budgetIuserPrice" :precision="0" :step="1" :min="0" placeholder="预计内部人时单价"></el-input> </el-col>
<el-col :span="8">{{this.toFixed(autoParams.budgetIuserAt)}},{{this.toFixed(autoParams.budgetIuserAt/10000)}} 万元</el-col>
</el-row>
<el-row class="padding-20 border">
<el-col :span="4">外购</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.phaseBudgetOuserCnt" :precision="0" :step="1" :min="0" placeholder="外购人数"></el-input>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.budgetOuserCnt" :precision="0" :step="1" :min="0" placeholder="外购人数"></el-input>
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.phaseBudgetOuserPrice" :precision="0" :step="1" :min="0" placeholder="预计外购人时单价"></el-input> </el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserAt }} {{autoParams.phaseBudgetOuserAt/10000 }}万元</el-col>
<el-col :span="4">{{autoParams.budgetOuserWorkload}}人时</el-col>
<el-col :span="4"><el-input style="width:100px;" type="number" v-model="editForm.budgetOuserPrice" :precision="0" :step="1" :min="0" placeholder="预计外购人时单价"></el-input> </el-col>
<el-col :span="4">{{autoParams.budgetOuserAt }} {{autoParams.budgetOuserAt/10000 }}万元</el-col>
</el-row >
<el-row class="padding-20 border">
<el-col :span="4">合计</el-col>
<el-col :span="4"> {{autoParams.phaseBudgetOuserCnt+autoParams.phaseBudgetIuserCnt}}
<el-col :span="4"> {{autoParams.budgetOuserCnt+autoParams.budgetIuserCnt}}
</el-col>
<el-col :span="4">{{autoParams.phaseBudgetOuserWorkload+autoParams.phaseBudgetIuserWorkload }}人时,{{ (autoParams.phaseBudgetOuserWorkload+autoParams.phaseBudgetIuserWorkload)/8/20 }}人月 </el-col>
<el-col :span="4">{{ (parseFloat2(autoParams.phaseBudgetOuserPrice) + parseFloat2(autoParams.phaseBudgetIuserPrice))/2}}/人时</el-col>
<el-col :span="8">{{autoParams.phaseBudgetTotalCost}} {{(autoParams.phaseBudgetTotalCost)/10000}} 万元</el-col>
<el-col :span="4">{{autoParams.budgetOuserWorkload+autoParams.budgetIuserWorkload }}人时,{{ (autoParams.budgetOuserWorkload+autoParams.budgetIuserWorkload)/8/20 }}人月 </el-col>
<el-col :span="4">{{ (parseFloat2(autoParams.budgetOuserPrice) + parseFloat2(autoParams.budgetIuserPrice))/2}}/人时</el-col>
<el-col :span="8">{{autoParams.budgetTotalCost}} {{(autoParams.budgetTotalCost)/10000}} 万元</el-col>
</el-row>
<el-row class="padding-20 border">
总计 {{parseFloat2(editForm.phaseBudgetIuserAt)+parseFloat2(editForm.phaseBudgetOuserAt)+parseFloat2(editForm.phaseBudgetNouserAt)}} <el-tag>{{this.toFixed(autoParams.phaseBudgetTotalCost/10000)}}万元</el-tag>
总计 {{parseFloat2(editForm.budgetIuserAt)+parseFloat2(editForm.budgetOuserAt)+parseFloat2(editForm.budgetNouserAt)}} <el-tag>{{this.toFixed(autoParams.budgetTotalCost/10000)}}万元</el-tag>
</el-row>
</el-row>
</el-tab-pane>
<el-tab-pane v-if="activeName=='phaseBudgetWorkload'" label="收起" name="">
<el-tab-pane v-if="activeName=='budgetWorkload'" label="收起" name="">
</el-tab-pane>
</el-tabs>
</el-form>
@ -130,31 +130,31 @@
autoParams:function(){
var phaseBudgetOuserPrice=this.toFixed(this.editForm.phaseBudgetOuserPrice)
var phaseBudgetIuserPrice=this.toFixed(this.editForm.phaseBudgetIuserPrice)
var phaseBudgetOuserCnt=this.toFixed(this.editForm.phaseBudgetOuserCnt)
var phaseBudgetIuserCnt=this.toFixed(this.editForm.phaseBudgetIuserCnt)
var phaseBudgetHours=this.toFixed(this.editForm.phaseBudgetHours )
var phaseBudgetNouserAt=this.toFixed(this.editForm.phaseBudgetNouserAt )
if(phaseBudgetOuserPrice==null || phaseBudgetOuserPrice==''){
phaseBudgetOuserPrice=100
var budgetOuserPrice=this.toFixed(this.editForm.budgetOuserPrice)
var budgetIuserPrice=this.toFixed(this.editForm.budgetIuserPrice)
var budgetOuserCnt=this.toFixed(this.editForm.budgetOuserCnt)
var budgetIuserCnt=this.toFixed(this.editForm.budgetIuserCnt)
var budgetHours=this.toFixed(this.editForm.budgetHours )
var budgetNouserAt=this.toFixed(this.editForm.budgetNouserAt )
if(budgetOuserPrice==null || budgetOuserPrice==''){
budgetOuserPrice=100
}
if(phaseBudgetIuserPrice==null || phaseBudgetIuserPrice==''){
phaseBudgetIuserPrice=80
if(budgetIuserPrice==null || budgetIuserPrice==''){
budgetIuserPrice=80
}
if(phaseBudgetOuserCnt==null || phaseBudgetOuserCnt==''){
phaseBudgetOuserCnt=0.0
if(budgetOuserCnt==null || budgetOuserCnt==''){
budgetOuserCnt=0.0
}
if(phaseBudgetIuserCnt==null || phaseBudgetIuserCnt==''){
phaseBudgetIuserCnt=0.0
if(budgetIuserCnt==null || budgetIuserCnt==''){
budgetIuserCnt=0.0
}
if(phaseBudgetNouserAt==null || phaseBudgetNouserAt==''){
phaseBudgetNouserAt=0.0
if(budgetNouserAt==null || budgetNouserAt==''){
budgetNouserAt=0.0
}
if(phaseBudgetHours==null || phaseBudgetHours==''){
phaseBudgetHours=0.0
if(budgetHours==null || budgetHours==''){
budgetHours=0.0
}
var autoParams={
@ -162,22 +162,22 @@
var weekday=1;
if(this.dateRanger!=null && this.dateRanger.length>=2 ){
weekday=this.getWeekday(new Date(this.dateRanger[0]),new Date(this.dateRanger[1]));
phaseBudgetHours=weekday * 8
budgetHours=weekday * 8
}
autoParams.weekday=weekday
autoParams.phaseBudgetHours=phaseBudgetHours
autoParams.phaseBudgetOuserPrice=phaseBudgetOuserPrice
autoParams.phaseBudgetIuserPrice=phaseBudgetIuserPrice
autoParams.phaseBudgetOuserCnt=phaseBudgetOuserCnt
autoParams.phaseBudgetIuserCnt=phaseBudgetIuserCnt
autoParams.phaseBudgetIuserWorkload= phaseBudgetIuserCnt*phaseBudgetHours
autoParams.phaseBudgetOuserWorkload= phaseBudgetOuserCnt*phaseBudgetHours
autoParams.phaseBudgetWorkload= phaseBudgetIuserCnt*phaseBudgetHours + phaseBudgetOuserCnt*phaseBudgetHours
autoParams.phaseBudgetOuserAt= phaseBudgetOuserCnt * phaseBudgetHours * phaseBudgetOuserPrice
autoParams.phaseBudgetIuserAt= phaseBudgetIuserCnt * phaseBudgetHours * phaseBudgetIuserPrice
autoParams.phaseBudgetNouserAt= phaseBudgetNouserAt
autoParams.phaseBudgetTotalCost= autoParams.phaseBudgetOuserAt + autoParams.phaseBudgetIuserAt + autoParams.phaseBudgetNouserAt
autoParams.budgetHours=budgetHours
autoParams.budgetOuserPrice=budgetOuserPrice
autoParams.budgetIuserPrice=budgetIuserPrice
autoParams.budgetOuserCnt=budgetOuserCnt
autoParams.budgetIuserCnt=budgetIuserCnt
autoParams.budgetIuserWorkload= budgetIuserCnt*budgetHours
autoParams.budgetOuserWorkload= budgetOuserCnt*budgetHours
autoParams.budgetWorkload= budgetIuserCnt*budgetHours + budgetOuserCnt*budgetHours
autoParams.budgetOuserAt= budgetOuserCnt * budgetHours * budgetOuserPrice
autoParams.budgetIuserAt= budgetIuserCnt * budgetHours * budgetIuserPrice
autoParams.budgetNouserAt= budgetNouserAt
autoParams.budgetTotalCost= autoParams.budgetOuserAt + autoParams.budgetIuserAt + autoParams.budgetNouserAt
return autoParams
},
},
@ -193,8 +193,8 @@
}
},
autoParams:function(autoParams){
this.fillphaseBudgetHoursToField()
this.fillphaseBudgetAtToField()
this.fillbudgetHoursToField()
this.fillbudgetAtToField()
}
},
data() {
@ -224,7 +224,7 @@
oldeditForm:{},
// xm_project_phase
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetWorkload:'',totalActWorkload:'',totalActNouserAt:'',totalActInerUserAt:'',totalActOuserAt:'',seqNo:'1',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0,phaseStatus:'',ntype:'0'
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetWorkload:'',totalActWorkload:'',totalActNouserAt:'',totalActInerUserAt:'',totalActOuserAt:'',seqNo:'1',budgetIuserCnt:'',budgetOuserCnt:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0,phaseStatus:'',ntype:'0'
},
dateRanger: [
],
@ -276,16 +276,16 @@
this.$notify({showClose: true, message: "请输入开始日期和结束日期", type: 'error' });
return;
}
if(!this.editForm.phaseBudgetIuserCnt){
if(!this.editForm.budgetIuserCnt){
this.$notify({showClose: true, message: "内购人员数不能为空", type: 'error' });
return;
}
if(!this.editForm.phaseBudgetHours){
if(!this.editForm.budgetHours){
this.$notify({showClose: true, message: "工期不能为空", type: 'error' });
return;
}
if(!this.editForm.phaseBudgetIuserPrice){
if(!this.editForm.budgetIuserPrice){
this.$notify({showClose: true, message: "内购单价不能为空", type: 'error' });
return;
}
@ -294,19 +294,19 @@
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.load.edit=true
let params = Object.assign({}, this.editForm);
if(!params.phaseBudgetIuserAt){
params.phaseBudgetIuserAt= this.parseFloat2(params.phaseBudgetIuserCnt) * this.parseFloat2(params.phaseBudgetIuserPrice) * this.parseFloat2(params.phaseBudgetHours)
if(!params.budgetIuserAt){
params.budgetIuserAt= this.parseFloat2(params.budgetIuserCnt) * this.parseFloat2(params.budgetIuserPrice) * this.parseFloat2(params.budgetHours)
}
if( !params.phaseBudgetOuserAt ){
params.phaseBudgetOuserAt= this.parseFloat2(params.phaseBudgetOuserCnt) * this.parseFloat2(params.phaseBudgetOuserPrice) * this.parseFloat2(params.phaseBudgetHours)
if( !params.budgetOuserAt ){
params.budgetOuserAt= this.parseFloat2(params.budgetOuserCnt) * this.parseFloat2(params.budgetOuserPrice) * this.parseFloat2(params.budgetHours)
}
params.phaseBudgetIuserWorkload= this.parseFloat2(params.phaseBudgetIuserCnt) * this.parseFloat2(params.phaseBudgetHours)
params.phaseBudgetOuserWorkload= this.parseFloat2(params.phaseBudgetOuserCnt) * this.parseFloat2(params.phaseBudgetHours)
params.budgetIuserWorkload= this.parseFloat2(params.budgetIuserCnt) * this.parseFloat2(params.budgetHours)
params.budgetOuserWorkload= this.parseFloat2(params.budgetOuserCnt) * this.parseFloat2(params.budgetHours)
params.phaseBudgetWorkload= this.parseFloat2(params.phaseBudgetIuserWorkload) + this.parseFloat2(params.phaseBudgetOuserWorkload)
if( !params.phaseBudgetStaffNu ){
params.budgetWorkload= this.parseFloat2(params.budgetIuserWorkload) + this.parseFloat2(params.budgetOuserWorkload)
if( !params.budgetStaffNu ){
params.phaseBudgetStaffNu= this.parseFloat2(params.phaseBudgetOuserCnt) + this.parseFloat2(params.phaseBudgetIuserCnt)
params.budgetStaffNu= this.parseFloat2(params.budgetOuserCnt) + this.parseFloat2(params.budgetIuserCnt)
}
var func=editXmPhase
if(this.editForm.phaseClass=="1"){
@ -361,15 +361,15 @@
fillToField:function(){
this.editForm=Object.assign(this.editForm,this.autoParams);
},
fillphaseBudgetHoursToField:function(){
this.editForm.phaseBudgetHours=this.toFixed(this.autoParams.phaseBudgetHours)
fillbudgetHoursToField:function(){
this.editForm.budgetHours=this.toFixed(this.autoParams.budgetHours)
},
fillphaseBudgetAtToField:function(){
this.editForm.phaseBudgetNouserAt=this.toFixed(this.autoParams.phaseBudgetNouserAt)
this.editForm.phaseBudgetOuserAt=this.toFixed(this.autoParams.phaseBudgetOuserAt )
this.editForm.phaseBudgetIuserAt=this.toFixed(this.autoParams.phaseBudgetIuserAt )
this.editForm.phaseBudgetTotalCost=this.toFixed(this.autoParams.phaseBudgetTotalCost)
fillbudgetAtToField:function(){
this.editForm.budgetNouserAt=this.toFixed(this.autoParams.budgetNouserAt)
this.editForm.budgetOuserAt=this.toFixed(this.autoParams.budgetOuserAt )
this.editForm.budgetIuserAt=this.toFixed(this.autoParams.budgetIuserAt )
this.editForm.budgetTotalCost=this.toFixed(this.autoParams.budgetTotalCost)
},
on_click(status){

184
src/views/xm/core/xmPhase/XmPhaseForProduct.vue

@ -94,14 +94,14 @@
</el-table-column>
<el-table-column label="工作量(人时)" width="100">
<el-table-column prop="phaseBudgetWorkload" label="预计" width="100" >
<el-table-column prop="budgetWorkload" label="预计" width="100" >
</el-table-column>
<el-table-column prop="phaseActWorkload" label="实际" width="100" >
<el-table-column prop="actWorkload" label="实际" width="100" >
</el-table-column>
</el-table-column>
<el-table-column label="成本(元)" width="100">
<el-table-column prop="phaseBudgetAt" label="预计" width="100" >
<el-table-column prop="budgetAt" label="预计" width="100" >
</el-table-column>
<el-table-column prop="actCostAt" label="实际" width="100" >
</el-table-column>
@ -211,23 +211,23 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
projectPhaseTreeData() {
return treeTool.translateDataToTree(this.xmPhases,"parentPhaseId","id");
},
phaseBudgetData(){
budgetData(){
if( this.xmIteration || this.xmProduct){
return {}
}
var dbData=this.totalProjectAndPhaseBudgetCost;
var projectPlanTotalCost = this.getFloatValue(dbData.planTotalCost)
var phaseBudgetAt=this.getFloatValue(dbData.phaseBudgetAt)
var budgetAt=this.getFloatValue(dbData.budgetAt)
const total={
surplusPlanCostAt: projectPlanTotalCost-phaseBudgetAt,
surplusPlanIuserAt: dbData.planIuserAt-dbData.phaseBudgetIuserAt,
surplusPlanOuserAt: dbData.planOuserAt-dbData.phaseBudgetOuserAt,
surplusPlanNouserAt: dbData.planNouserAt-dbData.phaseBudgetNouserAt,
surplusPlanCostAt: projectPlanTotalCost-budgetAt,
surplusPlanIuserAt: dbData.planIuserAt-dbData.budgetIuserAt,
surplusPlanOuserAt: dbData.planOuserAt-dbData.budgetOuserAt,
surplusPlanNouserAt: dbData.planNouserAt-dbData.budgetNouserAt,
phaseBudgetNouserAt:dbData.phaseBudgetNouserAt,
phaseBudgetIuserAt:dbData.phaseBudgetIuserAt,
phaseBudgetOuserAt:dbData.phaseBudgetOuserAt,
phaseBudgetAt: phaseBudgetAt,
budgetNouserAt:dbData.budgetNouserAt,
budgetIuserAt:dbData.budgetIuserAt,
budgetOuserAt:dbData.budgetOuserAt,
budgetAt: budgetAt,
planTotalCost: projectPlanTotalCost,
planIuserAt: dbData.planIuserAt,
@ -283,17 +283,17 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
addFormVisible: false,//xmPhase
//xmPhase
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormVisible: false,//
//xmPhase
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormInit: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
parentProjectPhase:null,
/**begin 自定义属性请在下面加 请加备注**/
@ -521,19 +521,19 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
i.phaseClass="1"
i.productName=this.xmProduct.productName
i.branchId=this.xmProduct.branchId
i.phaseBudgetAt=0
i.phaseBudgetNouserAt=0
i.phaseBudgetIuserAt=0
i.phaseBudgetOuserAt=0
i.phaseBudgetWorkload=0
i.phaseBudgetStaffNu=0
i.phaseBudgetHours=160
i.phaseBudgetIuserWorkload=0
i.phaseBudgetOuserWorkload=0
i.phaseBudgetIuserPrice=80
i.phaseBudgetOuserPrice=100
i.phaseBudgetOuserCnt=0;
i.phaseBudgetIuserCnt=0;
i.budgetAt=0
i.budgetNouserAt=0
i.budgetIuserAt=0
i.budgetOuserAt=0
i.budgetWorkload=0
i.budgetStaffNu=0
i.budgetHours=160
i.budgetIuserWorkload=0
i.budgetOuserWorkload=0
i.budgetIuserPrice=80
i.budgetOuserPrice=100
i.budgetOuserCnt=0;
i.budgetIuserCnt=0;
const ctime = new Date();
var beginDate=new Date();
const endDate=new Date();
@ -820,16 +820,16 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
},
getRowSum(row){
if(row.phaseBudgetNouserAt==null || row.phaseBudgetNouserAt=='' || row.phaseBudgetNouserAt==undefined){
row.phaseBudgetNouserAt=0;
if(row.budgetNouserAt==null || row.budgetNouserAt=='' || row.budgetNouserAt==undefined){
row.budgetNouserAt=0;
}
if(row.phaseBudgetIuserAt==null || row.phaseBudgetIuserAt=='' || row.phaseBudgetIuserAt==undefined){
row.phaseBudgetIuserAt=0;
if(row.budgetIuserAt==null || row.budgetIuserAt=='' || row.budgetIuserAt==undefined){
row.budgetIuserAt=0;
}
if(row.phaseBudgetOuserAt==null || row.phaseBudgetOuserAt=='' || row.phaseBudgetOuserAt==undefined){
row.phaseBudgetOuserAt=0;
if(row.budgetOuserAt==null || row.budgetOuserAt=='' || row.budgetOuserAt==undefined){
row.budgetOuserAt=0;
}
if(row.actNouserAt==null || row.actNouserAt=='' || row.actNouserAt==undefined){
row.actNouserAt=0;
@ -842,10 +842,10 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
if(row.actOuserAt==null || row.actOuserAt=='' || row.actOuserAt==undefined){
row.actOuserAt=0;
}
var phaseBudgetAt=parseFloat(row.phaseBudgetNouserAt)+parseFloat(row.phaseBudgetIuserAt)+parseFloat(row.phaseBudgetOuserAt)
var budgetAt=parseFloat(row.budgetNouserAt)+parseFloat(row.budgetIuserAt)+parseFloat(row.budgetOuserAt)
var actCostAt=parseFloat(row.actNouserAt)+parseFloat(row.actIuserAt)+parseFloat(row.actOuserAt)
return {phaseBudgetAt:phaseBudgetAt,actCostAt:actCostAt};
return {budgetAt:budgetAt,actCostAt:actCostAt};
},
fieldChange:function(row,fieldName, nextReplace){
if (nextReplace) {
@ -854,24 +854,24 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
console.log('fieldChange--row.opType==', row.opType);
//{{formatDate(scope.row.beginDate)}}~{{formatDate(scope.row.endDate)}} <br/>
if(!row.phaseBudgetIuserPrice){
row.phaseBudgetIuserPrice=this.selProject.planIuserPrice
if(!row.budgetIuserPrice){
row.budgetIuserPrice=this.selProject.planIuserPrice
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetIuserCnt){
row.phaseBudgetIuserCnt=0
if(!row.budgetIuserCnt){
row.budgetIuserCnt=0
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetOuserCnt){
row.phaseBudgetOuserCnt=0
if(!row.budgetOuserCnt){
row.budgetOuserCnt=0
}
if(fieldName=='beginDate' || fieldName=='endDate'){
if(row.beginDate && row.endDate){
@ -879,27 +879,27 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
var start=new Date(row.beginDate);
var end=new Date(row.endDate);
var days=this.getDaysBetween(end,start)
row.phaseBudgetHours=this.getFloatValue(days*8).toFixed(2)
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
row.budgetHours=this.getFloatValue(days*8).toFixed(2)
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}
}else if(fieldName=='phaseBudgetHours'){
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='phaseBudgetIuserPrice' || fieldName=='phaseBudgetIuserCnt'){
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='phaseBudgetOuserPrice'||fieldName=='phaseBudgetOuserCnt'){
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='budgetHours'){
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}else if(fieldName=='budgetIuserPrice' || fieldName=='budgetIuserCnt'){
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}else if(fieldName=='budgetOuserPrice'||fieldName=='budgetOuserCnt'){
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}
if(row.opType){
var index=this.valueChangeRows.findIndex(i=>i.id==row.id);
@ -930,15 +930,15 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
this.$notify({showClose: true, message:"没有改变任何数据,无需保存", type: 'success'});
return;
}else {
if(this.phaseBudgetData.surplusPlanIuserAt<0){
if(this.budgetData.surplusPlanIuserAt<0){
this.$notify({showClose: true, message:"内部人力预算不足,请调整", type: 'error'});
return;
}
if(this.phaseBudgetData.surplusPlanOuserAt<0){
if(this.budgetData.surplusPlanOuserAt<0){
this.$notify({showClose: true, message:"外购人力预算不足,请调整", type: 'error'});
return;
}
if(this.phaseBudgetData.surplusPlanNouserAt<0){
if(this.budgetData.surplusPlanNouserAt<0){
this.$notify({showClose: true, message:"非人力预算不足请调整",type: 'error'});
return;
}
@ -1012,8 +1012,8 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
sums[3]=''//
sums[4]=''//
var workload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var cost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var workload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var cost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
sums[4]='工作量:'+workload.toFixed(0)+'人时,预算金额:'+cost.toFixed(0)+'元,'+(cost/10000).toFixed(2)+'万元'
return sums;
},
@ -1027,12 +1027,12 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
sums[4]=''//
sums[5]=''//
sums[6]=''//
var budgetWorkload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var budgetWorkload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var phaseActWorkload=this.phaseBudgetData.phaseActWorkload
var budgetCost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var actCost=this.phaseBudgetData.actIuserAt+this.phaseBudgetData.actNouserAt+this.phaseBudgetData.actOuserAt
sums[5]='计 '+budgetWorkload+',实 '+phaseActWorkload+''
var actWorkload=this.budgetData.actWorkload
var budgetCost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
var actCost=this.budgetData.actIuserAt+this.budgetData.actNouserAt+this.budgetData.actOuserAt
sums[5]='计 '+budgetWorkload+',实 '+actWorkload+''
sums[6]='计 '+budgetCost.toFixed(0)+',实 '+actCost.toFixed(0)+''
return sums;
@ -1165,19 +1165,19 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
subRow.projectId=this.selProject.id
subRow.projectName=this.selProject.name
subRow.branchId=this.selProject.branchId
subRow.phaseBudgetAt=0
subRow.phaseBudgetNouserAt=0
subRow.phaseBudgetIuserAt=0
subRow.phaseBudgetOuserAt=0
subRow.phaseBudgetWorkload=0
subRow.phaseBudgetStaffNu=0
subRow.phaseBudgetHours=160
subRow.phaseBudgetIuserWorkload=0
subRow.phaseBudgetOuserWorkload=0
subRow.phaseBudgetIuserPrice=this.selProject.planIuserPrice
subRow.phaseBudgetOuserPrice=this.selProject.planOuserPrice
subRow.phaseBudgetOuserCnt=0;
subRow.phaseBudgetIuserCnt=0;
subRow.budgetAt=0
subRow.budgetNouserAt=0
subRow.budgetIuserAt=0
subRow.budgetOuserAt=0
subRow.budgetWorkload=0
subRow.budgetStaffNu=0
subRow.budgetHours=160
subRow.budgetIuserWorkload=0
subRow.budgetOuserWorkload=0
subRow.budgetIuserPrice=this.selProject.planIuserPrice
subRow.budgetOuserPrice=this.selProject.planOuserPrice
subRow.budgetOuserCnt=0;
subRow.budgetIuserCnt=0;
const ctime = new Date();
var beginDate=new Date();
const endDate=new Date();

192
src/views/xm/core/xmPhase/XmPhaseMng.vue

@ -59,10 +59,10 @@
</el-row>
<el-row class="padding-top hidden-md-and-down" v-if="batchEditVisible==false && !xmIteration && !xmProduct">
<span style="margin-left:10px;font-size:14px;">项目总预算</span><el-tag type='success'> {{toFixed(phaseBudgetData.planTotalCost/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanCostAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">非人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanNouserAt>0?'warning':'danger'">{{toFixed(phaseBudgetData.planNouserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanNouserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">内部人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanIuserAt>0?'warning':'danger'">{{toFixed(phaseBudgetData.planIuserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanIuserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">外购人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanOuserAt>0?'warning':'danger'">{{toFixed(phaseBudgetData.planOuserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanOuserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">项目总预算</span><el-tag type='success'> {{toFixed(budgetData.planTotalCost/10000,2)}}{{toFixed(budgetData.surplusPlanCostAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">非人力总预算</span><el-tag :type="budgetData.surplusPlanNouserAt>0?'warning':'danger'">{{toFixed(budgetData.planNouserAt/10000,2)}}{{toFixed(budgetData.surplusPlanNouserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">内部人力总预算</span><el-tag :type="budgetData.surplusPlanIuserAt>0?'warning':'danger'">{{toFixed(budgetData.planIuserAt/10000,2)}}{{toFixed(budgetData.surplusPlanIuserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">外购人力总预算</span><el-tag :type="budgetData.surplusPlanOuserAt>0?'warning':'danger'">{{toFixed(budgetData.planOuserAt/10000,2)}}{{toFixed(budgetData.surplusPlanOuserAt/10000,2)}}</el-tag>
<el-button @click="selectTotalProjectAndPhaseBudgetCost">刷新统计数据</el-button>
</el-row>
@ -107,14 +107,14 @@
</el-table-column>
<el-table-column label="工作量(人时)" width="100">
<el-table-column prop="phaseBudgetWorkload" label="预计" width="100" >
<el-table-column prop="budgetWorkload" label="预计" width="100" >
</el-table-column>
<el-table-column prop="phaseActWorkload" label="实际" width="100" >
<el-table-column prop="actWorkload" label="实际" width="100" >
</el-table-column>
</el-table-column>
<el-table-column label="成本(元)" width="100">
<el-table-column prop="phaseBudgetAt" label="预计" width="100" >
<el-table-column prop="budgetAt" label="预计" width="100" >
</el-table-column>
<el-table-column prop="actCostAt" label="实际" width="100" >
</el-table-column>
@ -232,23 +232,23 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
projectPhaseTreeData() {
return treeTool.translateDataToTree(this.xmPhases,"parentPhaseId","id");
},
phaseBudgetData(){
budgetData(){
if( this.xmIteration || this.xmProduct){
return {}
}
var dbData=this.totalProjectAndPhaseBudgetCost;
var projectPlanTotalCost = this.getFloatValue(dbData.planTotalCost)
var phaseBudgetAt=this.getFloatValue(dbData.phaseBudgetAt)
var budgetAt=this.getFloatValue(dbData.budgetAt)
const total={
surplusPlanCostAt: projectPlanTotalCost-phaseBudgetAt,
surplusPlanIuserAt: dbData.planIuserAt-dbData.phaseBudgetIuserAt,
surplusPlanOuserAt: dbData.planOuserAt-dbData.phaseBudgetOuserAt,
surplusPlanNouserAt: dbData.planNouserAt-dbData.phaseBudgetNouserAt,
surplusPlanCostAt: projectPlanTotalCost-budgetAt,
surplusPlanIuserAt: dbData.planIuserAt-dbData.budgetIuserAt,
surplusPlanOuserAt: dbData.planOuserAt-dbData.budgetOuserAt,
surplusPlanNouserAt: dbData.planNouserAt-dbData.budgetNouserAt,
phaseBudgetNouserAt:dbData.phaseBudgetNouserAt,
phaseBudgetIuserAt:dbData.phaseBudgetIuserAt,
phaseBudgetOuserAt:dbData.phaseBudgetOuserAt,
phaseBudgetAt: phaseBudgetAt,
budgetNouserAt:dbData.budgetNouserAt,
budgetIuserAt:dbData.budgetIuserAt,
budgetOuserAt:dbData.budgetOuserAt,
budgetAt: budgetAt,
planTotalCost: projectPlanTotalCost,
planIuserAt: dbData.planIuserAt,
@ -315,17 +315,17 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
addFormVisible: false,//xmPhase
//xmPhase
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormVisible: false,//
//xmPhase
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormInit: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
parentProjectPhase:null,
/**begin 自定义属性请在下面加 请加备注**/
@ -556,19 +556,19 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
i.projectId=this.selProject.id
i.projectName=this.selProject.name
i.branchId=this.selProject.branchId
i.phaseBudgetAt=0
i.phaseBudgetNouserAt=0
i.phaseBudgetIuserAt=0
i.phaseBudgetOuserAt=0
i.phaseBudgetWorkload=0
i.phaseBudgetStaffNu=0
i.phaseBudgetHours=160
i.phaseBudgetIuserWorkload=0
i.phaseBudgetOuserWorkload=0
i.phaseBudgetIuserPrice=this.selProject.planIuserPrice
i.phaseBudgetOuserPrice=this.selProject.planOuserPrice
i.phaseBudgetOuserCnt=0;
i.phaseBudgetIuserCnt=0;
i.budgetAt=0
i.budgetNouserAt=0
i.budgetIuserAt=0
i.budgetOuserAt=0
i.budgetWorkload=0
i.budgetStaffNu=0
i.budgetHours=160
i.budgetIuserWorkload=0
i.budgetOuserWorkload=0
i.budgetIuserPrice=this.selProject.planIuserPrice
i.budgetOuserPrice=this.selProject.planOuserPrice
i.budgetOuserCnt=0;
i.budgetIuserCnt=0;
const ctime = new Date();
var beginDate=new Date();
const endDate=new Date();
@ -855,16 +855,16 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
},
getRowSum(row){
if(row.phaseBudgetNouserAt==null || row.phaseBudgetNouserAt=='' || row.phaseBudgetNouserAt==undefined){
row.phaseBudgetNouserAt=0;
if(row.budgetNouserAt==null || row.budgetNouserAt=='' || row.budgetNouserAt==undefined){
row.budgetNouserAt=0;
}
if(row.phaseBudgetIuserAt==null || row.phaseBudgetIuserAt=='' || row.phaseBudgetIuserAt==undefined){
row.phaseBudgetIuserAt=0;
if(row.budgetIuserAt==null || row.budgetIuserAt=='' || row.budgetIuserAt==undefined){
row.budgetIuserAt=0;
}
if(row.phaseBudgetOuserAt==null || row.phaseBudgetOuserAt=='' || row.phaseBudgetOuserAt==undefined){
row.phaseBudgetOuserAt=0;
if(row.budgetOuserAt==null || row.budgetOuserAt=='' || row.budgetOuserAt==undefined){
row.budgetOuserAt=0;
}
if(row.actNouserAt==null || row.actNouserAt=='' || row.actNouserAt==undefined){
row.actNouserAt=0;
@ -877,10 +877,10 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
if(row.actOuserAt==null || row.actOuserAt=='' || row.actOuserAt==undefined){
row.actOuserAt=0;
}
var phaseBudgetAt=parseFloat(row.phaseBudgetNouserAt)+parseFloat(row.phaseBudgetIuserAt)+parseFloat(row.phaseBudgetOuserAt)
var budgetAt=parseFloat(row.budgetNouserAt)+parseFloat(row.budgetIuserAt)+parseFloat(row.budgetOuserAt)
var actCostAt=parseFloat(row.actNouserAt)+parseFloat(row.actIuserAt)+parseFloat(row.actOuserAt)
return {phaseBudgetAt:phaseBudgetAt,actCostAt:actCostAt};
return {budgetAt:budgetAt,actCostAt:actCostAt};
},
fieldChange:function(row,fieldName, nextReplace){
if (nextReplace) {
@ -889,24 +889,24 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
console.log('fieldChange--row.opType==', row.opType);
//{{formatDate(scope.row.beginDate)}}~{{formatDate(scope.row.endDate)}} <br/>
if(!row.phaseBudgetIuserPrice){
row.phaseBudgetIuserPrice=this.selProject.planIuserPrice
if(!row.budgetIuserPrice){
row.budgetIuserPrice=this.selProject.planIuserPrice
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetIuserCnt){
row.phaseBudgetIuserCnt=0
if(!row.budgetIuserCnt){
row.budgetIuserCnt=0
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetOuserPrice){
row.phaseBudgetOuserPrice=this.selProject.planOuserPrice
if(!row.budgetOuserPrice){
row.budgetOuserPrice=this.selProject.planOuserPrice
}
if(!row.phaseBudgetOuserCnt){
row.phaseBudgetOuserCnt=0
if(!row.budgetOuserCnt){
row.budgetOuserCnt=0
}
if(fieldName=='beginDate' || fieldName=='endDate'){
if(row.beginDate && row.endDate){
@ -914,27 +914,27 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
var start=new Date(row.beginDate);
var end=new Date(row.endDate);
var days=this.getDaysBetween(end,start)
row.phaseBudgetHours=this.getFloatValue(days*8).toFixed(2)
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
row.budgetHours=this.getFloatValue(days*8).toFixed(2)
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}
}else if(fieldName=='phaseBudgetHours'){
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='phaseBudgetIuserPrice' || fieldName=='phaseBudgetIuserCnt'){
row.phaseBudgetIuserWorkload=row.phaseBudgetHours * row.phaseBudgetIuserCnt
row.phaseBudgetIuserAt=row.phaseBudgetIuserWorkload * row.phaseBudgetIuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='phaseBudgetOuserPrice'||fieldName=='phaseBudgetOuserCnt'){
row.phaseBudgetOuserWorkload=row.phaseBudgetHours * row.phaseBudgetOuserCnt
row.phaseBudgetOuserAt=row.phaseBudgetOuserWorkload * row.phaseBudgetOuserPrice
row.phaseBudgetWorkload=row.phaseBudgetIuserWorkload+row.phaseBudgetOuserWorkload
}else if(fieldName=='budgetHours'){
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}else if(fieldName=='budgetIuserPrice' || fieldName=='budgetIuserCnt'){
row.budgetIuserWorkload=row.budgetHours * row.budgetIuserCnt
row.budgetIuserAt=row.budgetIuserWorkload * row.budgetIuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}else if(fieldName=='budgetOuserPrice'||fieldName=='budgetOuserCnt'){
row.budgetOuserWorkload=row.budgetHours * row.budgetOuserCnt
row.budgetOuserAt=row.budgetOuserWorkload * row.budgetOuserPrice
row.budgetWorkload=row.budgetIuserWorkload+row.budgetOuserWorkload
}
if(row.opType){
var index=this.valueChangeRows.findIndex(i=>i.id==row.id);
@ -965,15 +965,15 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
this.$notify({showClose: true, message:"没有改变任何数据,无需保存", type: 'success'});
return;
}else {
if(this.phaseBudgetData.surplusPlanIuserAt<0){
if(this.budgetData.surplusPlanIuserAt<0){
this.$notify({showClose: true, message:"内部人力预算不足,请调整", type: 'error'});
return;
}
if(this.phaseBudgetData.surplusPlanOuserAt<0){
if(this.budgetData.surplusPlanOuserAt<0){
this.$notify({showClose: true, message:"外购人力预算不足,请调整", type: 'error'});
return;
}
if(this.phaseBudgetData.surplusPlanNouserAt<0){
if(this.budgetData.surplusPlanNouserAt<0){
this.$notify({showClose: true, message:"非人力预算不足请调整",type: 'error'});
return;
}
@ -1047,8 +1047,8 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
sums[3]=''//
sums[4]=''//
var workload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var cost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var workload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var cost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
sums[4]='工作量:'+workload.toFixed(0)+'人时,预算金额:'+cost.toFixed(0)+'元,'+(cost/10000).toFixed(2)+'万元'
return sums;
},
@ -1062,12 +1062,12 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
sums[4]=''//
sums[5]=''//
sums[6]=''//
var budgetWorkload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var budgetWorkload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var phaseActWorkload=this.phaseBudgetData.phaseActWorkload
var budgetCost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var actCost=this.phaseBudgetData.actIuserAt+this.phaseBudgetData.actNouserAt+this.phaseBudgetData.actOuserAt
sums[5]='计 '+budgetWorkload+',实 '+phaseActWorkload+''
var actWorkload=this.budgetData.actWorkload
var budgetCost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
var actCost=this.budgetData.actIuserAt+this.budgetData.actNouserAt+this.budgetData.actOuserAt
sums[5]='计 '+budgetWorkload+',实 '+actWorkload+''
sums[6]='计 '+budgetCost.toFixed(0)+',实 '+actCost.toFixed(0)+''
return sums;
@ -1200,19 +1200,19 @@ import XmTaskList from '../xmTask/XmTaskList.vue';
subRow.projectId=this.selProject.id
subRow.projectName=this.selProject.name
subRow.branchId=this.selProject.branchId
subRow.phaseBudgetAt=0
subRow.phaseBudgetNouserAt=0
subRow.phaseBudgetIuserAt=0
subRow.phaseBudgetOuserAt=0
subRow.phaseBudgetWorkload=0
subRow.phaseBudgetStaffNu=0
subRow.phaseBudgetHours=160
subRow.phaseBudgetIuserWorkload=0
subRow.phaseBudgetOuserWorkload=0
subRow.phaseBudgetIuserPrice=this.selProject.planIuserPrice
subRow.phaseBudgetOuserPrice=this.selProject.planOuserPrice
subRow.phaseBudgetOuserCnt=0;
subRow.phaseBudgetIuserCnt=0;
subRow.budgetAt=0
subRow.budgetNouserAt=0
subRow.budgetIuserAt=0
subRow.budgetOuserAt=0
subRow.budgetWorkload=0
subRow.budgetStaffNu=0
subRow.budgetHours=160
subRow.budgetIuserWorkload=0
subRow.budgetOuserWorkload=0
subRow.budgetIuserPrice=this.selProject.planIuserPrice
subRow.budgetOuserPrice=this.selProject.planOuserPrice
subRow.budgetOuserCnt=0;
subRow.budgetIuserCnt=0;
const ctime = new Date();
var beginDate=new Date();
const endDate=new Date();

28
src/views/xm/core/xmPhase/XmPhaseOverview.vue

@ -127,7 +127,7 @@
<el-col :span="8">
<div>
<div style="text-align:center;">
<span style="font-size:24px;" v-text="this.xmPhase.phaseBudgetWorkload"></span>
<span style="font-size:24px;" v-text="this.xmPhase.budgetWorkload"></span>
<span style="font-size:5px;">h</span>
</div>
<div style="text-align:center;font-size:5px;">预估工时</div>
@ -136,7 +136,7 @@
<el-col :span="8">
<div>
<div style="text-align:center;">
<span style="font-size:24px;" v-text="this.xmPhase.phaseActWorkload"></span>
<span style="font-size:24px;" v-text="this.xmPhase.actWorkload"></span>
<span style="font-size:5px;">h</span>
</div>
<div style="text-align:center;font-size:5px;">登记工时</div>
@ -263,7 +263,7 @@ export default {
}
},
workloadProgress:function (){
return Math.round(this.xmPhase.phaseActWorkload/this.xmPhase.phaseBudgetWorkload*100);
return Math.round(this.xmPhase.actWorkload/this.xmPhase.budgetWorkload*100);
},
deviation:function (){
let now = new Date();
@ -271,16 +271,16 @@ export default {
let endTime = new Date(this.xmPhase.endDate);
if(now<=endTime){
let allDays=endTime-startTime;
return this.xmPhase.phaseBudgetWorkload - Math.round((now-startTime)/allDays*this.xmPhase.phaseBudgetWorkload)
return this.xmPhase.budgetWorkload - Math.round((now-startTime)/allDays*this.xmPhase.budgetWorkload)
}else{
return this.xmPhase.phaseActWorkload - this.xmPhase.phaseBudgetWorkload;
return this.xmPhase.actWorkload - this.xmPhase.budgetWorkload;
}
},
deviationRate:function (){
return Math.round(this.deviation/this.xmPhase.phaseBudgetWorkload*100);
return Math.round(this.deviation/this.xmPhase.budgetWorkload*100);
},
remainWorkload:function (){
return this.xmPhase.phaseBudgetWorkload - this.xmPhase.phaseActWorkload;
return this.xmPhase.budgetWorkload - this.xmPhase.actWorkload;
},
planProgress:function (){
let now = new Date();
@ -294,8 +294,8 @@ export default {
}
},
realProgress:function (){
if(this.xmPhase.phaseActWorkload < this.xmPhase.phaseBudgetWorkload){
return Math.round(this.xmPhase.phaseActWorkload/this.xmPhase.phaseBudgetWorkload*100)
if(this.xmPhase.actWorkload < this.xmPhase.budgetWorkload){
return Math.round(this.xmPhase.actWorkload/this.xmPhase.budgetWorkload*100)
}else{
return 100;
}
@ -350,21 +350,21 @@ export default {
}
},
data: [
{value: this.xmPhase.phaseBudgetNouserAt,
{value: this.xmPhase.budgetNouserAt,
itemStyle: {
normal:{
color: '#5470C6'
}
},
name: '非人力'},
{value: this.xmPhase.phaseBudgetIuserAt,
{value: this.xmPhase.budgetIuserAt,
itemStyle: {
normal:{
color: '#73C0DE'
}
},
name: '内部人力'},
{value: this.xmPhase.phaseBudgetOuserAt,
{value: this.xmPhase.budgetOuserAt,
itemStyle: {
normal:{
color: '#99CCFF'
@ -416,14 +416,14 @@ export default {
}
},
data: [
{value: this.xmPhase.phaseBudgetIuserWorkload,
{value: this.xmPhase.budgetIuserWorkload,
itemStyle: {
normal:{
color: '#5470C6'
}
},
name: '内部人力'},
{value: this.xmPhase.phaseBudgetOuserWorkload,
{value: this.xmPhase.budgetOuserWorkload,
itemStyle: {
normal:{
color: '#73C0DE'

20
src/views/xm/core/xmPhase/XmPhaseSelect.vue

@ -82,17 +82,17 @@
addFormVisible: false,//xmPhase
//xmPhase
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormVisible: false,//
//xmPhase
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
editFormInit: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',ctime:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',phaseBudgetIuserCnt:'',phaseBudgetOuserCnt:'',seqNo:'',phaseBudgetIuserPrice:80,phaseBudgetOuserPrice:100,phaseBudgetIuserWorkload:0,phaseBudgetOuserWorkload:0
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',taskType:'kf',planType:'m1',projectId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',ctime:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',baselineId:'',bizProcInstId:'',bizFlowState:'',budgetIuserCnt:'',budgetOuserCnt:'',seqNo:'',budgetIuserPrice:80,budgetOuserPrice:100,budgetIuserWorkload:0,budgetOuserWorkload:0
},
parentProjectPhase:null,
/**begin 自定义属性请在下面加 请加备注**/
@ -347,8 +347,8 @@
sums[3]=''//
sums[4]=''//
var workload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var cost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var workload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var cost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
sums[4]='工作量:'+workload.toFixed(0)+'人时,预算金额:'+cost.toFixed(0)+'元,'+(cost/10000).toFixed(2)+'万元'
return sums;
},
@ -362,12 +362,12 @@
sums[4]=''//
sums[5]=''//
sums[6]=''//
var budgetWorkload=this.phaseBudgetData.phaseBudgetIuserWorkload+this.phaseBudgetData.phaseBudgetOuserWorkload
var budgetWorkload=this.budgetData.budgetIuserWorkload+this.budgetData.budgetOuserWorkload
var phaseActWorkload=this.phaseBudgetData.phaseActWorkload
var budgetCost=this.phaseBudgetData.phaseBudgetNouserAt+this.phaseBudgetData.phaseBudgetIuserAt+this.phaseBudgetData.phaseBudgetOuserAt
var actCost=this.phaseBudgetData.actIuserAt+this.phaseBudgetData.actNouserAt+this.phaseBudgetData.actOuserAt
sums[5]='预算工作量:'+budgetWorkload+'人时,实际:'+phaseActWorkload+'人时'
var actWorkload=this.budgetData.actWorkload
var budgetCost=this.budgetData.budgetNouserAt+this.budgetData.budgetIuserAt+this.budgetData.budgetOuserAt
var actCost=this.budgetData.actIuserAt+this.budgetData.actNouserAt+this.budgetData.actOuserAt
sums[5]='预算工作量:'+budgetWorkload+'人时,实际:'+actWorkload+'人时'
sums[6]='预算金额:'+budgetCost.toFixed(0)+'元,'+(budgetCost/10000).toFixed(2)+'万元,实际:'+actCost.toFixed(0)+'元,'+(actCost/10000).toFixed(2)+'万元'
return sums;

50
src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateAdd.vue

@ -22,23 +22,23 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="addForm.remark" placeholder="备注" ></el-input>
</el-form-item>
<el-form-item label="预计工时" prop="phaseBudgetHours">
<el-input-number v-model="addForm.phaseBudgetHours" :precision="2" :step="8" :min="0" placeholder="工时(不包括下一级)-应该大于或等于任务中总工时"></el-input-number><el-tag>参考工时{{autoParams.phaseBudgetHours}}小时,工作日{{autoParams.weekday}}天</el-tag> <el-button @click.native="fillToField" type="success">填充</el-button>
<el-form-item label="预计工时" prop="budgetHours">
<el-input-number v-model="addForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="工时(不包括下一级)-应该大于或等于任务中总工时"></el-input-number><el-tag>参考工时{{autoParams.budgetHours}}小时,工作日{{autoParams.weekday}}天</el-tag> <el-button @click.native="fillToField" type="success">填充</el-button>
</el-form-item>
<el-form-item label="预计人数" prop="phaseBudgetStaffNu">
<el-input-number v-model="addForm.phaseBudgetStaffNu" :precision="0" :step="1" :min="0" placeholder="投入人员数(不包括下一级)-应该大于或等于任务中总人数"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetStaffNu}}</el-tag>
<el-form-item label="预计人数" prop="budgetStaffNu">
<el-input-number v-model="addForm.budgetStaffNu" :precision="0" :step="1" :min="0" placeholder="投入人员数(不包括下一级)-应该大于或等于任务中总人数"></el-input-number> <el-tag>参考{{autoParams.budgetStaffNu}}</el-tag>
</el-form-item>
<el-form-item label="非人力成本总预算" prop="phaseBudgetNouserAt">
<el-input-number v-model="addForm.phaseBudgetNouserAt" :precision="2" :step="1000" :min="0" placeholder="非人力成本总预算(不包括下一级)-应该大于或等于任务中非人力总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetNouserAt}}{{this.toFixed( autoParams.phaseBudgetNouserAt/10000)}}万元</el-tag>
<el-form-item label="非人力成本总预算" prop="budgetNouserAt">
<el-input-number v-model="addForm.budgetNouserAt" :precision="2" :step="1000" :min="0" placeholder="非人力成本总预算(不包括下一级)-应该大于或等于任务中非人力总成本"></el-input-number> <el-tag>参考{{autoParams.budgetNouserAt}}{{this.toFixed( autoParams.budgetNouserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item label="预计总工作量" prop="phaseBudgetWorkload">
<el-input-number v-model="addForm.phaseBudgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)-应该大于或者等于任务中的预算总工作量"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetWorkload}}人时{{this.toFixed(autoParams.phaseBudgetWorkload/24/20)}}人月</el-tag>
<el-form-item label="预计总工作量" prop="budgetWorkload">
<el-input-number v-model="addForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)-应该大于或者等于任务中的预算总工作量"></el-input-number> <el-tag>参考{{autoParams.budgetWorkload}}人时{{this.toFixed(autoParams.budgetWorkload/24/20)}}人月</el-tag>
</el-form-item>
<el-form-item label="内部人力成本总预算" prop="phaseBudgetIuserAt">
<el-input-number v-model="addForm.phaseBudgetIuserAt" :precision="2" :step="1000" :min="0" placeholder="内部人力成本总预算(不包括下一级)-应该大于或等于任务中内部人力总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetIuserAt}}{{this.toFixed(autoParams.phaseBudgetIuserAt/10000)}}万元</el-tag>
<el-form-item label="内部人力成本总预算" prop="budgetIuserAt">
<el-input-number v-model="addForm.budgetIuserAt" :precision="2" :step="1000" :min="0" placeholder="内部人力成本总预算(不包括下一级)-应该大于或等于任务中内部人力总成本"></el-input-number> <el-tag>参考{{autoParams.budgetIuserAt}}{{this.toFixed(autoParams.budgetIuserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item label="外购人力成本总预算" prop="phaseBudgetOuserAt">
<el-input-number v-model="addForm.phaseBudgetOuserAt" :precision="2" :step="1000" :min="0" placeholder="外购人力成本总预算(不包括下一级)-应该大于或等于任务中外购总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetOuserAt}}{{this.toFixed(autoParams.phaseBudgetOuserAt/10000)}}万元</el-tag>
<el-form-item label="外购人力成本总预算" prop="budgetOuserAt">
<el-input-number v-model="addForm.budgetOuserAt" :precision="2" :step="1000" :min="0" placeholder="外购人力成本总预算(不包括下一级)-应该大于或等于任务中外购总成本"></el-input-number> <el-tag>参考{{autoParams.budgetOuserAt}}{{this.toFixed(autoParams.budgetOuserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
@ -64,27 +64,27 @@
]),
autoParams:function(){
var defaultPlanWorkingStaffNu=this.addForm.phaseBudgetStaffNu;
var defaultPlanWorkingStaffNu=this.addForm.budgetStaffNu;
if(defaultPlanWorkingStaffNu==null || defaultPlanWorkingStaffNu=='' || defaultPlanWorkingStaffNu <=0 ){
defaultPlanWorkingStaffNu=1;
}
var defaultPlanWorkingHours=this.addForm.phaseBudgetHours
var defaultPlanWorkingHours=this.addForm.budgetHours
if(defaultPlanWorkingHours==null || defaultPlanWorkingHours=='' || defaultPlanWorkingHours<=0){
defaultPlanWorkingHours=8
}
var autoParams={
phaseBudgetHours:defaultPlanWorkingHours,
phaseBudgetStaffNu: defaultPlanWorkingStaffNu,
phaseBudgetWorkload: defaultPlanWorkingHours * defaultPlanWorkingStaffNu
budgetHours:defaultPlanWorkingHours,
budgetStaffNu: defaultPlanWorkingStaffNu,
budgetWorkload: defaultPlanWorkingHours * defaultPlanWorkingStaffNu
}
var phaseBudgetHours=defaultPlanWorkingHours;
autoParams.weekday=parseInt(phaseBudgetHours/8)
autoParams.phaseBudgetHours=this.toFixed(phaseBudgetHours)
autoParams.phaseBudgetWorkload= this.toFixed(autoParams.phaseBudgetHours*defaultPlanWorkingStaffNu)
autoParams.phaseBudgetOuserAt=this.toFixed( autoParams.phaseBudgetWorkload * 100 * 0.6)
autoParams.phaseBudgetIuserAt=this.toFixed( autoParams.phaseBudgetWorkload * 100 * 0.4)
autoParams.phaseBudgetNouserAt=autoParams.phaseBudgetWorkload * 100 * 0.2
var budgetHours=defaultPlanWorkingHours;
autoParams.weekday=parseInt(budgetHours/8)
autoParams.budgetHours=this.toFixed(budgetHours)
autoParams.budgetWorkload= this.toFixed(autoParams.budgetHours*defaultPlanWorkingStaffNu)
autoParams.budgetOuserAt=this.toFixed( autoParams.budgetWorkload * 100 * 0.6)
autoParams.budgetIuserAt=this.toFixed( autoParams.budgetWorkload * 100 * 0.4)
autoParams.budgetNouserAt=autoParams.budgetWorkload * 100 * 0.2
return autoParams
}
},
@ -126,7 +126,7 @@
},
// xm_phase_template
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',projectTypeId:'',projectTypeName:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',phaseBudgetWorkload:'',"taskType":'',planType:'m1',seqNo:'1'
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',projectTypeId:'',projectTypeName:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',budgetWorkload:'',"taskType":'',planType:'m1',seqNo:'1'
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/

50
src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateEdit.vue

@ -22,23 +22,23 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="editForm.remark" placeholder="备注" ></el-input>
</el-form-item>
<el-form-item label="预计工时" prop="phaseBudgetHours">
<el-input-number v-model="editForm.phaseBudgetHours" :precision="2" :step="8" :min="0" placeholder="工时(不包括下一级)-应该大于或等于任务中总工时"></el-input-number><el-tag>参考工时{{autoParams.phaseBudgetHours}}小时,工作日{{autoParams.weekday}}天</el-tag> <el-button @click.native="fillToField" type="success">填充</el-button>
<el-form-item label="预计工时" prop="budgetHours">
<el-input-number v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="工时(不包括下一级)-应该大于或等于任务中总工时"></el-input-number><el-tag>参考工时{{autoParams.budgetHours}}小时,工作日{{autoParams.weekday}}天</el-tag> <el-button @click.native="fillToField" type="success">填充</el-button>
</el-form-item>
<el-form-item label="预计人数" prop="phaseBudgetStaffNu">
<el-input-number v-model="editForm.phaseBudgetStaffNu" :precision="0" :step="1" :min="0" placeholder="投入人员数(不包括下一级)-应该大于或等于任务中总人数"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetStaffNu}}</el-tag>
<el-form-item label="预计人数" prop="budgetStaffNu">
<el-input-number v-model="editForm.budgetStaffNu" :precision="0" :step="1" :min="0" placeholder="投入人员数(不包括下一级)-应该大于或等于任务中总人数"></el-input-number> <el-tag>参考{{autoParams.budgetStaffNu}}</el-tag>
</el-form-item>
<el-form-item label="非人力成本总预算" prop="phaseBudgetNouserAt">
<el-input-number v-model="editForm.phaseBudgetNouserAt" :precision="2" :step="1000" :min="0" placeholder="非人力成本总预算(不包括下一级)-应该大于或等于任务中非人力总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetNouserAt}}{{this.toFixed( autoParams.phaseBudgetNouserAt/10000)}}万元</el-tag>
<el-form-item label="非人力成本总预算" prop="budgetNouserAt">
<el-input-number v-model="editForm.budgetNouserAt" :precision="2" :step="1000" :min="0" placeholder="非人力成本总预算(不包括下一级)-应该大于或等于任务中非人力总成本"></el-input-number> <el-tag>参考{{autoParams.budgetNouserAt}}{{this.toFixed( autoParams.budgetNouserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item label="预计总工作量" prop="phaseBudgetWorkload">
<el-input-number v-model="editForm.phaseBudgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)-应该大于或者等于任务中的预算总工作量"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetWorkload}}人时{{this.toFixed(autoParams.phaseBudgetWorkload/24/20)}}人月</el-tag>
<el-form-item label="预计总工作量" prop="budgetWorkload">
<el-input-number v-model="editForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)-应该大于或者等于任务中的预算总工作量"></el-input-number> <el-tag>参考{{autoParams.budgetWorkload}}人时{{this.toFixed(autoParams.budgetWorkload/24/20)}}人月</el-tag>
</el-form-item>
<el-form-item label="内部人力成本总预算" prop="phaseBudgetIuserAt">
<el-input-number v-model="editForm.phaseBudgetIuserAt" :precision="2" :step="1000" :min="0" placeholder="内部人力成本总预算(不包括下一级)-应该大于或等于任务中内部人力总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetIuserAt}}{{this.toFixed(autoParams.phaseBudgetIuserAt/10000)}}万元</el-tag>
<el-form-item label="内部人力成本总预算" prop="budgetIuserAt">
<el-input-number v-model="editForm.budgetIuserAt" :precision="2" :step="1000" :min="0" placeholder="内部人力成本总预算(不包括下一级)-应该大于或等于任务中内部人力总成本"></el-input-number> <el-tag>参考{{autoParams.budgetIuserAt}}{{this.toFixed(autoParams.budgetIuserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item label="外购人力成本总预算" prop="phaseBudgetOuserAt">
<el-input-number v-model="editForm.phaseBudgetOuserAt" :precision="2" :step="1000" :min="0" placeholder="外购人力成本总预算(不包括下一级)-应该大于或等于任务中外购总成本"></el-input-number> <el-tag>参考{{autoParams.phaseBudgetOuserAt}}{{this.toFixed(autoParams.phaseBudgetOuserAt/10000)}}万元</el-tag>
<el-form-item label="外购人力成本总预算" prop="budgetOuserAt">
<el-input-number v-model="editForm.budgetOuserAt" :precision="2" :step="1000" :min="0" placeholder="外购人力成本总预算(不包括下一级)-应该大于或等于任务中外购总成本"></el-input-number> <el-tag>参考{{autoParams.budgetOuserAt}}{{this.toFixed(autoParams.budgetOuserAt/10000)}}万元</el-tag>
</el-form-item>
<el-form-item>
<el-col :span="24" :offset="8">
@ -64,27 +64,27 @@
]),
autoParams:function(){
var defaultPlanWorkingStaffNu=this.editForm.phaseBudgetStaffNu;
var defaultPlanWorkingStaffNu=this.editForm.budgetStaffNu;
if(defaultPlanWorkingStaffNu==null || defaultPlanWorkingStaffNu=='' || defaultPlanWorkingStaffNu <=0 ){
defaultPlanWorkingStaffNu=1;
}
var defaultPlanWorkingHours=this.editForm.phaseBudgetHours
var defaultPlanWorkingHours=this.editForm.budgetHours
if(defaultPlanWorkingHours==null || defaultPlanWorkingHours=='' || defaultPlanWorkingHours<=0){
defaultPlanWorkingHours=8
}
var autoParams={
phaseBudgetHours:defaultPlanWorkingHours,
phaseBudgetStaffNu: defaultPlanWorkingStaffNu,
phaseBudgetWorkload: defaultPlanWorkingHours * defaultPlanWorkingStaffNu
budgetHours:defaultPlanWorkingHours,
budgetStaffNu: defaultPlanWorkingStaffNu,
budgetWorkload: defaultPlanWorkingHours * defaultPlanWorkingStaffNu
}
var phaseBudgetHours=defaultPlanWorkingHours;
autoParams.weekday=parseInt(phaseBudgetHours/8)
autoParams.phaseBudgetHours=this.toFixed(phaseBudgetHours)
autoParams.phaseBudgetWorkload= this.toFixed(autoParams.phaseBudgetHours*defaultPlanWorkingStaffNu)
autoParams.phaseBudgetOuserAt=this.toFixed( autoParams.phaseBudgetWorkload * 100 * 0.6)
autoParams.phaseBudgetIuserAt=this.toFixed( autoParams.phaseBudgetWorkload * 100 * 0.4)
autoParams.phaseBudgetNouserAt=autoParams.phaseBudgetWorkload * 100 * 0.2
var budgetHours=defaultPlanWorkingHours;
autoParams.weekday=parseInt(budgetHours/8)
autoParams.budgetHours=this.toFixed(budgetHours)
autoParams.budgetWorkload= this.toFixed(autoParams.budgetHours*defaultPlanWorkingStaffNu)
autoParams.budgetOuserAt=this.toFixed( autoParams.budgetWorkload * 100 * 0.6)
autoParams.budgetIuserAt=this.toFixed( autoParams.budgetWorkload * 100 * 0.4)
autoParams.budgetNouserAt=autoParams.budgetWorkload * 100 * 0.2
return autoParams
}
},
@ -122,7 +122,7 @@
},
// xm_phase_template
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',projectTypeId:'',projectTypeName:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',phaseBudgetWorkload:'',"taskType":'',planType:'m1'
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',projectTypeId:'',projectTypeName:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',budgetWorkload:'',"taskType":'',planType:'m1'
}
/**begin 在下面加自定义属性,记得补上面的一个逗号**/

18
src/views/xm/core/xmPhaseTemplate/XmPhaseTemplateMng.vue

@ -29,15 +29,15 @@
</el-table-column>
<el-table-column prop="remark" label="备注" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column label="预计工作量(人时)" min-width="80" show-overflow-tooltip>
<el-table-column prop="phaseBudgetHours" label="工时" min-width="80" ></el-table-column>
<el-table-column prop="phaseBudgetStaffNu" label="投入人员数" min-width="80" ></el-table-column>
<el-table-column prop="phaseBudgetWorkload" label="总工作量" min-width="80" ></el-table-column>
<el-table-column prop="budgetHours" label="工时" min-width="80" ></el-table-column>
<el-table-column prop="budgetStaffNu" label="投入人员数" min-width="80" ></el-table-column>
<el-table-column prop="budgetWorkload" label="总工作量" min-width="80" ></el-table-column>
</el-table-column>
<el-table-column label="成本预算(元)" min-width="80" show-overflow-tooltip>
<el-table-column prop="phaseBudgetAt" label="总预算" min-width="80" ></el-table-column>
<el-table-column prop="phaseBudgetNouserAt" label="非人力" min-width="80" ></el-table-column>
<el-table-column prop="phaseBudgetIuserAt" label="内部" min-width="80" ></el-table-column>
<el-table-column prop="phaseBudgetOuserAt" label="外购" min-width="80" ></el-table-column>
<el-table-column prop="budgetAt" label="总预算" min-width="80" ></el-table-column>
<el-table-column prop="budgetNouserAt" label="非人力" min-width="80" ></el-table-column>
<el-table-column prop="budgetIuserAt" label="内部" min-width="80" ></el-table-column>
<el-table-column prop="budgetOuserAt" label="外购" min-width="80" ></el-table-column>
</el-table-column>
<el-table-column label="操作" width="260" fixed="right" v-if="!isSelect" >
<template slot-scope="scope">
@ -134,13 +134,13 @@
addFormVisible: false,//xmPhaseTemplate
//xmPhaseTemplate
addForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',xmType:'',projectTypeName:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',phaseBudgetWorkload:''
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',xmType:'',projectTypeName:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',budgetWorkload:''
},
editFormVisible: false,//
//xmPhaseTemplate
editForm: {
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',phaseBudgetHours:'',phaseBudgetStaffNu:'',xmType:'',projectTypeName:'',phaseBudgetNouserAt:'',phaseBudgetIuserAt:'',phaseBudgetOuserAt:'',phaseBudgetWorkload:''
id:'',name:'',remark:'',parentPhaseId:'',branchId:'',beginDate:'',endDate:'',budgetHours:'',budgetStaffNu:'',xmType:'',projectTypeName:'',budgetNouserAt:'',budgetIuserAt:'',budgetOuserAt:'',budgetWorkload:''
},
parentPhaseTemplate:null,
projectTemplateVisible:false,

2
src/views/xm/core/xmProduct/XmProductInfo.vue

@ -292,7 +292,7 @@ import XmProjectForLink from '../xmProject/XmProjectForLink.vue';
pageNum = this.$refs.xmTaskMng.pageInfo.pageNum;
} else if (this.infotype === '计划') {
header = ['序号', '计划名称', '开始时间', '结束时间', '进度(%)', '状态', '计划人数', '实际人数', '计划工期', '实际工期', '计划工作量(人时)', '实际工作量(人时)', '计划非人力成本(元)', '实际非人力成本(元)', '计划内购人力成本(元)', '实际内购人力成本(元)', '计划外购人力成本(元)', '实际外购人力成本(元)', '计划成本合计(元)', '实际成本合计(元)', '审批状态', '备注'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'phaseBudgetOuserCnt', 'actStaffNu', 'phaseBudgetHours', 'actHours', 'phaseBudgetWorkload', 'phaseActWorkload', 'phaseBudgetNouserAt', 'actNouserAt', 'phaseBudgetIuserAt', 'actIuserAt', 'phaseBudgetOuserAt', 'actOuserAt', 'phaseBudgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'budgetOuserCnt', 'actStaffNu', 'budgetHours', 'actHours', 'budgetWorkload', 'actWorkload', 'budgetNouserAt', 'actNouserAt', 'budgetIuserAt', 'actIuserAt', 'budgetOuserAt', 'actOuserAt', 'budgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
list = this.$refs.xmPhaseMng.projectPhaseTreeData;
pageNum = this.$refs.xmPhaseMng.pageInfo.pageNum;

2
src/views/xm/core/xmProject/XmProjectInfo.vue

@ -289,7 +289,7 @@
pageNum = this.$refs.xmTaskMng.pageInfo.pageNum;
} else if (this.infotype === '计划') {
header = ['序号', '计划名称', '开始时间', '结束时间', '进度(%)', '状态', '计划人数', '实际人数', '计划工期', '实际工期', '计划工作量(人时)', '实际工作量(人时)', '计划非人力成本(元)', '实际非人力成本(元)', '计划内购人力成本(元)', '实际内购人力成本(元)', '计划外购人力成本(元)', '实际外购人力成本(元)', '计划成本合计(元)', '实际成本合计(元)', '审批状态', '备注'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'phaseBudgetOuserCnt', 'actStaffNu', 'phaseBudgetHours', 'actHours', 'phaseBudgetWorkload', 'phaseActWorkload', 'phaseBudgetNouserAt', 'actNouserAt', 'phaseBudgetIuserAt', 'actIuserAt', 'phaseBudgetOuserAt', 'actOuserAt', 'phaseBudgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'budgetOuserCnt', 'actStaffNu', 'budgetHours', 'actHours', 'budgetWorkload', 'actWorkload', 'budgetNouserAt', 'actNouserAt', 'budgetIuserAt', 'actIuserAt', 'budgetOuserAt', 'actOuserAt', 'budgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
list = this.$refs.xmPhaseMng.projectPhaseTreeData;
pageNum = this.$refs.xmPhaseMng.pageInfo.pageNum;

8
src/views/xm/core/xmTask/XmTaskAdd.vue

@ -383,12 +383,12 @@
this.addForm.budgetWorkload=weekday * 8
var price=80;
if(this.addForm.taskOut=='1'){
if(this.projectPhase.phaseBudgetOuserPrice){
price=this.projectPhase.phaseBudgetOuserPrice
if(this.projectPhase.budgetOuserPrice){
price=this.projectPhase.budgetOuserPrice
}
}else{
if(this.projectPhase.phaseBudgetIuserPrice){
price=this.projectPhase.phaseBudgetIuserPrice
if(this.projectPhase.budgetIuserPrice){
price=this.projectPhase.budgetIuserPrice
}
}
this.addForm.budgetCost=this.addForm.budgetWorkload * price

16
src/views/xm/core/xmTask/XmTaskEdit.vue

@ -458,12 +458,12 @@
this.editForm.budgetWorkload=weekday * 8
var price=80;
if(this.editForm.taskOut=='1'){
if(this.projectPhase.phaseBudgetOuserPrice){
price=this.projectPhase.phaseBudgetOuserPrice
if(this.projectPhase.budgetOuserPrice){
price=this.projectPhase.budgetOuserPrice
}
}else{
if(this.projectPhase.phaseBudgetIuserPrice){
price=this.projectPhase.phaseBudgetIuserPrice
if(this.projectPhase.budgetIuserPrice){
price=this.projectPhase.budgetIuserPrice
}
}
this.editForm.budgetCost=this.editForm.budgetWorkload * price
@ -471,14 +471,14 @@
onBudgetWorkloadChange(){
var price=80;
if(this.editForm.taskOut=='1'){
if( this.projectPhase && this.projectPhase.phaseBudgetOuserPrice){
price=this.projectPhase.phaseBudgetOuserPrice
if( this.projectPhase && this.projectPhase.budgetOuserPrice){
price=this.projectPhase.budgetOuserPrice
}else if( this.xmProject && this.xmProject.planOuserPrice){
price=this.xmProject.planOuserPrice
}
}else{
if( this.projectPhase && this.projectPhase.phaseBudgetIuserPrice){
price=this.projectPhase.phaseBudgetIuserPrice
if( this.projectPhase && this.projectPhase.budgetIuserPrice){
price=this.projectPhase.budgetIuserPrice
}else if( this.xmProject && this.xmProject.planIuserPrice){
price=this.xmProject.planIuserPrice
}

Loading…
Cancel
Save