Browse Source

优化

master
陈裕财 4 years ago
parent
commit
da81f86057
  1. 86
      src/views/xm/core/xmProject/XmProjectAdd.vue
  2. 77
      src/views/xm/core/xmProject/XmProjectEdit.vue
  3. 19
      src/views/xm/core/xmProject/XmProjectMng.vue
  4. 16
      src/views/xm/core/xmProject/XmProjectTplMng.vue

86
src/views/xm/core/xmProject/XmProjectAdd.vue

@ -1,6 +1,6 @@
<template>
<section class="page-container padding border">
<el-row class="page-main ">
<el-row class="page-main " :style="{overflowX:'auto',height:maxTableHeight+'px'}" ref="table">
<!--编辑界面 XmProject xm_project-->
<el-form :model="addForm" label-width="150px" :rules="addFormRules" ref="addForm">
<el-form-item label="项目代号" prop="code">
@ -40,6 +40,26 @@
</el-form-item>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="总控" prop="admUserid">
<el-input readonly v-model="addForm.admUsername" @click.native="showUserVisible('admUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目经理" prop="pmUserid">
<el-input readonly v-model="addForm.pmUsername" @click.native="showUserVisible('pmUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="副经理、助理" prop="assUserid">
<el-input readonly v-model="addForm.assUsername" @click.native="showUserVisible('assUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="项目预估" >
<el-tabs>
<el-tab-pane label="工作量及人力成本" name="planWorkload">
@ -137,12 +157,8 @@
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.add" type="primary" @click.native="addSubmit" :disabled="load.add==true">提交</el-button>
</el-row>
<el-drawer
append-to-body
title="项目分组"
:visible.sync="groupSelectVisible"
width="80%">
<xm-project-group-formwork :sel-groups="xmProjectGroups" @select-confirm="onGroupSelected"></xm-project-group-formwork>
<el-drawer append-to-body title="选择员工" :visible.sync="userSelectVisible" size="60%">
<users-select isSingleUser=true @confirm="onUserSelected" ref="usersSelect"></users-select>
</el-drawer>
</section>
</template>
@ -155,7 +171,7 @@
import { addXmProject,createProjectCode } from '@/api/xm/core/xmProject';
import { mapGetters } from 'vuex';
import { getGroups } from '@/api/xm/core/xmProjectGroup';
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
export default {
computed: {
@ -297,25 +313,31 @@
load:{ list: false, add: false, del: false, edit: false },//...
addFormRules: {
name: [{
required: true, message: '项目名称不可为空' , trigger: 'blur'
required: true, message: '项目名称不可为空' , trigger: 'change'
}],
code: [{
required: true, message: '项目号不可为空', trigger: 'blur'
required: true, message: '项目号不可为空', trigger: 'change'
}],
xmType: [{
required: true, message: '项目类型不可为空', trigger: 'blur'
required: true, message: '项目类型不可为空', trigger: 'change'
}],
urgent: [{
required: true, message: '紧急程度不可为空', trigger: 'blur'
required: true, message: '紧急程度不可为空', trigger: 'change'
}],
priority: [{
required: true, message: '优先程度不可为空', trigger: 'blur'
required: true, message: '优先程度不可为空', trigger: 'change'
}],
admUserid: [{
required: true, message: '项目总控不能为空', trigger: 'change'
}],
pmUserid: [{
required: true, message: '项目经理不能为空', trigger: 'change'
}],
},
// XmProject xm_project
addForm: {
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:0,bizProcInstId:'',bizFlowState:'',taxRate:0.06,planNouserAt:0,planInnerUserAt:0,planOutUserAt:0,locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:0,totalReceivables:0,budgetMarginRate:0.13,contractAmt:0,planInnerUserPrice:85,planOutUserPrice:100,planOutUserCnt:1,planInnerUserCnt:1,planWorkingHours:0,planInnerUserWorkload:0,planOutUserWorkload:0,budgetCtrl:'0',
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:0,bizProcInstId:'',bizFlowState:'',taxRate:0.06,planNouserAt:0,planInnerUserAt:0,planOutUserAt:0,locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:0,totalReceivables:0,budgetMarginRate:0.13,contractAmt:0,planInnerUserPrice:85,planOutUserPrice:100,planOutUserCnt:1,planInnerUserCnt:1,planWorkingHours:0,planInnerUserWorkload:0,planOutUserWorkload:0,budgetCtrl:'0',admUserid:'',admUsername:'',pmUserid:'',pmUsername:'',assUserid:'',assUsername:''
},
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
xmProjectGroups:[],
@ -325,6 +347,10 @@
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
dateRanger: [ ],
pickerOptions: util.pickerOptions('datarange'),
currUserType:'',
userSelectVisible:false,
maxTableHeight:300,
/**end 在上面加自定义属性**/
}//end return
},//end data
@ -380,6 +406,8 @@
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.add=false);
});
}else{
this.$notify({showClose: true, message: "表单检查不通过,请修改后提交", type:'error'});
}
});
},
@ -446,14 +474,40 @@
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
})
},
showUserVisible(userType){
this.currUserType=userType
this.userSelectVisible=true;
},
//
onUserSelected: function(users) {
this.userSelectVisible = false;
var user={userid:'',username:''};
if(users && users.length>0){
user=users[0]
}
if(this.currUserType=='admUserid'){
this.addForm.admUserid=user.userid
this.addForm.admUsername=user.username
}else if(this.currUserType=='assUserid'){
this.addForm.assUserid=user.userid
this.addForm.assUsername=user.username
}else if(this.currUserType=='pmUserid'){
this.addForm.pmUserid=user.userid
this.addForm.pmUsername=user.username
}
this.currUserType="";
},
/**end 在上面加自定义方法**/
},//end method
components: {
// 'xm-project-add':XmProjectEdit
UsersSelect,
},
mounted() {
this.addForm.id=sn();
this.maxTableHeight=util.calcTableMaxHeight(this.$refs.table.$el);
listOption([{categoryId:'all',itemCode:'projectType'},{categoryId:'all',itemCode:'urgencyLevel'},{categoryId:'all',itemCode:'priority'},{categoryId:'all',itemCode:'projectStatus'}] ).then(res=>{
if(res.data.tips.isOk){
this.options['projectType']=res.data.data.projectType

77
src/views/xm/core/xmProject/XmProjectEdit.vue

@ -40,6 +40,26 @@
</el-form-item>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="总控" prop="admUserid">
<el-input readonly v-model="editForm.admUsername" @click.native="showUserVisible('admUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目经理" prop="pmUserid">
<el-input readonly v-model="editForm.pmUsername" @click.native="showUserVisible('pmUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="副经理、助理" prop="assUserid">
<el-input readonly v-model="editForm.assUsername" @click.native="showUserVisible('assUserid')"></el-input>
<font style="font-size:12px;" color="red"></font>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="工期及成本预估" >
<el-row>
<el-date-picker
@ -134,6 +154,11 @@
<el-button icon="el-icon-video-play" type="primary" @click="handleCommand({type:'sendToProcessApprova',data:editForm,bizKey:'xm_project_restart_approva'})">项目重新启动申请</el-button>
</el-row>
<el-drawer append-to-body title="选择员工" :visible.sync="userSelectVisible" size="60%">
<users-select isSingleUser=true @confirm="onUserSelected" ref="usersSelect"></users-select>
</el-drawer>
</section>
</template>
@ -150,6 +175,8 @@
import { getGroups } from '@/api/xm/core/xmProjectGroup';
import html2canvas from 'html2canvas'
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
export default {
computed: {
...mapGetters([
@ -296,27 +323,27 @@
if(this.selProject.planWorkingHours!=this.editForm.planWorkingHours){
var distance=this.selProject.planWorkingHours-this.editForm.planWorkingHours
var operType=distance>0?"-":"+";
this.changeTips.push("预计总工期: "+ this.selProject.planWorkingHours+" > " +this.editForm.planWorkingHours+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance)+"</strong>小时");
this.changeTips.push("预计总工期: "+ this.selProject.planWorkingHours+" > " +this.editForm.planWorkingHours+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance).toFixed(2)+"</strong>小时");
}
if(this.selProject.planTotalCost!=this.editForm.planTotalCost){
var distance=this.selProject.planTotalCost-this.editForm.planTotalCost
var operType=distance>0?"-":"+";
this.changeTips.push("预计总成本: "+ this.selProject.planTotalCost+" > " +this.editForm.planTotalCost+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance)+"</strong>元");
this.changeTips.push("预计总成本: "+ this.selProject.planTotalCost+" > " +this.editForm.planTotalCost+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance).toFixed(2)+"</strong>元");
}
if(this.selProject.budgetMarginRate!=this.editForm.budgetMarginRate){
var distance=this.selProject.budgetMarginRate-this.editForm.budgetMarginRate
var operType=distance>0?"-":"+";
this.changeTips.push("毛利率: "+ this.selProject.budgetMarginRate+" > " +this.editForm.budgetMarginRate+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance)+"</strong>%");
this.changeTips.push("毛利率: "+ this.selProject.budgetMarginRate+" > " +this.editForm.budgetMarginRate+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance).toFixed(2)+"</strong>%");
}
if(this.selProject.totalReceivables!=this.editForm.totalReceivables){
var distance=this.selProject.totalReceivables-this.editForm.totalReceivables
var operType=distance>0?"-":"+";
this.changeTips.push("预计总收款: "+ this.selProject.totalReceivables+" > " +this.editForm.totalReceivables+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance)+"</strong>元");
this.changeTips.push("预计总收款: "+ this.selProject.totalReceivables+" > " +this.editForm.totalReceivables+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance).toFixed(2)+"</strong>元");
}
if(this.selProject.contractAmt!=this.editForm.contractAmt){
var distance=this.selProject.contractAmt-this.editForm.contractAmt
var operType=distance>0?"-":"+";
this.changeTips.push("合同金额: "+ this.selProject.contractAmt+" > " +this.editForm.contractAmt+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance)+"</strong>元");
this.changeTips.push("合同金额: "+ this.selProject.contractAmt+" > " +this.editForm.contractAmt+"&nbsp;&nbsp;&nbsp;<strong>"+operType+Math.abs(distance).toFixed(2)+"</strong>元");
}
if(this.changeTips.length==0){
@ -353,7 +380,7 @@
}],
code: [{
required: true, message: '项目号不可为空', trigger: 'blur'
required: true, message: '项目号不可为空', trigger: 'blur'
}],
xmType: [{
required: true, message: '项目类型不可为空', trigger: 'blur'
@ -364,10 +391,16 @@
priority: [{
required: true, message: '优先程度不可为空', trigger: 'blur'
}],
admUserid: [{
required: true, message: '项目总控不能为空', trigger: 'change'
}],
pmUserid: [{
required: true, message: '项目经理不能为空', trigger: 'change'
}],
},
// XmProject xm_project
editForm: {
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:0,bizProcInstId:'',bizFlowState:'',taxRate:0.06,planNouserAt:0,planInnerUserAt:0,planOutUserAt:0,locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:0,totalReceivables:0,budgetMarginRate:0.13,contractAmt:0,planInnerUserPrice:85,planOutUserPrice:100,planOutUserCnt:1,planInnerUserCnt:1,planWorkingHours:0,planInnerUserWorkload:0,planOutUserWorkload:0,budgetCtrl:'0',
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:0,bizProcInstId:'',bizFlowState:'',taxRate:0.06,planNouserAt:0,planInnerUserAt:0,planOutUserAt:0,locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:0,totalReceivables:0,budgetMarginRate:0.13,contractAmt:0,planInnerUserPrice:85,planOutUserPrice:100,planOutUserCnt:1,planInnerUserCnt:1,planWorkingHours:0,planInnerUserWorkload:0,planOutUserWorkload:0,budgetCtrl:'0',admUserid:'',admUsername:'',pmUserid:'',pmUsername:'',assUserid:'',assUsername:''
},
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
xmProjectGroups:[],
@ -381,6 +414,7 @@
activateName:'planWorkload',
changeTips:[],//
maxTableHeight:300,
currUserType:'',
/**end 在上面加自定义属性**/
}//end return
},//end data
@ -440,6 +474,8 @@
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err =>this.load.edit=false);
});
}else{
this.$notify({showClose: true, message: "表单检查不通过,请修改后提交", type:'error'});
}
});
},
@ -672,11 +708,36 @@
btns[i].style.display=''
}
}
},
showUserVisible(userType){
this.currUserType=userType
this.userSelectVisible=true;
},
//
onUserSelected: function(users) {
this.userSelectVisible = false;
var user={userid:'',username:''};
if(users && users.length>0){
user=users[0]
}
if(this.currUserType=='admUserid'){
this.editForm.admUserid=user.userid
this.editForm.admUsername=user.username
}else if(this.currUserType=='assUserid'){
this.editForm.assUserid=user.userid
this.editForm.assUsername=user.username
}else if(this.currUserType=='pmUserid'){
this.editForm.pmUserid=user.userid
this.editForm.pmUsername=user.username
}
this.currUserType="";
},
/**end 在上面加自定义方法**/
},//end method
components: { html2canvas
components: { html2canvas,UsersSelect,
// 'xm-project-add':XmProjectEdit
},
mounted() {

19
src/views/xm/core/xmProject/XmProjectMng.vue

@ -193,10 +193,10 @@
</el-col>
</el-row>
<el-drawer title="项目新增" :visible.sync="addFormVisible" :with-header="false" size="50%" :close-on-click-modal="false" append-to-body>
<el-drawer title="项目新增" :visible.sync="addFormVisible" :with-header="false" size="60%" :close-on-click-modal="false" append-to-body>
<xm-project-add :sel-project="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-project-add>
</el-drawer>
<el-drawer title="项目编辑" :visible.sync="editFormVisible" :with-header="false" size="50%" :close-on-click-modal="false" append-to-body>
<el-drawer title="项目编辑" :visible.sync="editFormVisible" :with-header="false" size="60%" :close-on-click-modal="false" append-to-body>
<xm-project-edit :sel-project="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-project-edit>
</el-drawer>
<el-drawer :title="selectProject==null?'项目明细':selectProject.name" center :fullscreen="true" :visible.sync="showInfo" size="50%" :close-on-click-modal="false" append-to-body>
@ -486,9 +486,11 @@
},
//xmProject
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.$prompt('将同步删除计划、组织、任务等,慎重起见,请输入项目代号:'+row.code, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
if(value==row.code){
this.load.del=true;
let params = { id: row.id };
delXmProject(params).then((res) => {
@ -500,7 +502,14 @@
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
}else{
this.$notify({showClose: true, message: "项目代号不正确", type: 'error' });
}
}).catch(() => {
return;
});
},
//xmProject
batchDel: function () {

16
src/views/xm/core/xmProject/XmProjectTplMng.vue

@ -302,11 +302,12 @@
selsChange: function (sels) {
this.sels = sels;
},
//xmProject
handleDel: function (row,index) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.$prompt('将同步删除计划、组织、任务等,慎重起见,请输入项目代号:'+row.code, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
if(value==row.code){
this.load.del=true;
let params = { id: row.id };
delXmProject(params).then((res) => {
@ -318,7 +319,14 @@
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}).catch( err => this.load.del=false );
}else{
this.$notify({showClose: true, message: "项目代号不正确", type: 'error' });
}
}).catch(() => {
return;
});
},
//xmProject
batchDel: function () {

Loading…
Cancel
Save