Browse Source

优化

master
陈裕财 4 years ago
parent
commit
6cdf4706f6
  1. 4
      src/api/xm/core/xmProject.js
  2. 73
      src/views/xm/core/xmProject/XmProjectAdd.vue
  3. 9
      src/views/xm/core/xmProject/XmProjectEdit.vue
  4. 48
      src/views/xm/core/xmProject/XmProjectMng.vue
  5. 30
      src/views/xm/core/xmProject/XmProjectTplMng.vue

4
src/api/xm/core/xmProject.js

@ -38,3 +38,7 @@ export const editBudget = params => { return axios.post(`${base}/xm/core/xmProje
export const copyTo = params => { return axios.post(`${base}/xm/core/xmProject/copyTo`, params); }; export const copyTo = params => { return axios.post(`${base}/xm/core/xmProject/copyTo`, params); };
export const createProjectCode = params => { return axios.post(`${base}/xm/core/xmProject/createProjectCode`, params); };

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

@ -2,31 +2,44 @@
<section class="page-container padding border"> <section class="page-container padding border">
<el-row class="page-main "> <el-row class="page-main ">
<!--编辑界面 XmProject xm_project--> <!--编辑界面 XmProject xm_project-->
<el-form :model="addForm" :rules="addFormRules" ref="addForm">
<el-form-item label="项目编号|名称" prop="name">
<el-row>
<el-input v-model="addForm.code" style="width:20%;" placeholder="项目编号,不可为空" ></el-input>
<el-input style="width:50%;" v-model="addForm.name" placeholder="项目名称" ></el-input>
</el-row>
</el-form-item>
<el-form-item label="项目类型" prop="xmType">
<el-radio-group v-model="addForm.xmType">
<el-radio v-for="(i,index) in options['projectType']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="紧急程度" prop="urgent">
<el-radio-group v-model="addForm.urgent">
<el-radio v-for="(i,index) in options['urgencyLevel']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="优先程度" prop="priority">
<el-radio-group v-model="addForm.priority">
<el-radio v-for="(i,index) in options['priority']" :label="i.optionValue" :key="index">{{i.optionName}}</el-radio>
</el-radio-group>
<el-form :model="addForm" label-width="150px" :rules="addFormRules" ref="addForm">
<el-form-item label="项目代号" prop="code">
<el-input v-model="addForm.code" placeholder="项目代号,不可为空" >
<template slot="append">
<el-button type="text" @click="createProjectCode">自动生成</el-button>
</template>
</el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="addForm.name" placeholder="项目名称" ></el-input>
</el-form-item>
<el-form-item label="项目属性" prop="xmType">
<el-select v-model="addForm.xmType">
<el-option v-for="(i,index) in options['projectType']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
<el-select v-model="addForm.urgent">
<el-option v-for="(i,index) in options['urgencyLevel']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
<el-select v-model="addForm.priority">
<el-option v-for="(i,index) in options['priority']" :label="i.optionName" :value="i.optionValue" :key="index"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="预算控制" prop="priority">
<el-checkbox v-model="addForm.budgetCtrl" true-label="1" false-label="0" >严格控制预算</el-checkbox> ->->
</el-form-item>
<el-form-item label="预算控制">
<el-form-item prop="budgetCtrl">
<el-checkbox v-model="addForm.budgetCtrl" true-label="1" false-label="0" >总预算控制</el-checkbox>
<font style="font-size:12px;" color="red">项目计划总预算不能大于项目总预算</font>
</el-form-item>
<el-form-item label="" prop="phaseBudgetCtrl">
<el-checkbox v-model="addForm.phaseBudgetCtrl" true-label="1" false-label="0" >项目计划预算控制</el-checkbox>
<font style="font-size:12px;" color="red">下级计划总预算不能大于上级计划总预算每条计划的预算金额必须大于其关联任务的预算合计</font>
</el-form-item>
<el-form-item label="" prop="phaseActCtrl">
<el-checkbox v-model="addForm.phaseActCtrl" true-label="1" false-label="0" >实际金额控制</el-checkbox>
<font style="font-size:12px;" color="red">每条计划实际金额不能大于预算金额;每条计划的预算金额必须大于其关联的任务的实际金额合计</font>
</el-form-item>
</el-form-item>
<el-form-item label="项目预估" > <el-form-item label="项目预估" >
<el-tabs> <el-tabs>
<el-tab-pane label="工作量及人力成本" name="planWorkload"> <el-tab-pane label="工作量及人力成本" name="planWorkload">
@ -139,7 +152,7 @@
import {sn} from '@/common/js/sequence';// import {sn} from '@/common/js/sequence';//
import { listOption } from '@/api/mdp/meta/itemOption';// import { listOption } from '@/api/mdp/meta/itemOption';//
import { addXmProject } from '@/api/xm/core/xmProject';
import { addXmProject,createProjectCode } from '@/api/xm/core/xmProject';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getGroups } from '@/api/xm/core/xmProjectGroup'; import { getGroups } from '@/api/xm/core/xmProjectGroup';
@ -425,7 +438,15 @@
fillBudgetMarginRateToField:function(){ fillBudgetMarginRateToField:function(){
this.addForm.budgetMarginRate=this.toFixed(this.autoParams.budgetMarginRate,4) this.addForm.budgetMarginRate=this.toFixed(this.autoParams.budgetMarginRate,4)
}, },
createProjectCode(){
createProjectCode({}).then(res=>{
var tips=res.data.tips;
if(tips.isOk){
this.addForm.code=res.data.data
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
})
}
/**end 在上面加自定义方法**/ /**end 在上面加自定义方法**/
},//end method },//end method
components: { components: {

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

@ -28,14 +28,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="总预算控制" prop="budgetCtrl"> <el-form-item label="总预算控制" prop="budgetCtrl">
<el-checkbox v-model="editForm.budgetCtrl" true-label="1" false-label="0" >控制总预算</el-checkbox> <font color="red">&nbsp;计划总预算不能大于项目总预算</font>
<el-checkbox v-model="editForm.budgetCtrl" true-label="1" false-label="0" ></el-checkbox>
<font style="font-size:12px;" color="red">项目计划总预算不能大于项目总预算</font>
</el-form-item> </el-form-item>
<el-form-item label="计划明细预算控制" prop="phaseBudgetCtrl"> <el-form-item label="计划明细预算控制" prop="phaseBudgetCtrl">
<el-checkbox v-model="editForm.phaseBudgetCtrl" true-label="1" false-label="0" >计划明细预算控制</el-checkbox><font color="red">&nbsp; 计划中下级总预算不能大于上级预算计划明细预算大于任务预算汇总</font>
<el-checkbox v-model="editForm.phaseBudgetCtrl" true-label="1" false-label="0" >项目计划中下级计划总预算不能大于上级计划总预算每条计划的预算金额必须大于其关联任务的预算合计</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="计划实际金额控制" prop="phaseActCtrl">
<el-checkbox v-model="editForm.phaseActCtrl" true-label="1" false-label="0" >计划实际金额控制</el-checkbox> <font color="red">&nbsp;计划中实际金额不能大于预算金额任务实际金额不能大于计划预算金额</font>
<el-form-item label="实际金额控制" prop="phaseActCtrl">
<el-checkbox v-model="editForm.phaseActCtrl" true-label="1" false-label="0" >项目计划中每条计划实际金额不能大于预算金额;每条计划的预算金额必须大于其关联的任务的实际金额合计</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="工期及成本预估" > <el-form-item label="工期及成本预估" >
<el-row> <el-row>

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

@ -5,10 +5,11 @@
<el-row> <el-row>
<xm-project-tpl-mng @copy="searchXmProjects" :show-type="'simple'" ref="xmProjectTplMngRef"></xm-project-tpl-mng> <xm-project-tpl-mng @copy="searchXmProjects" :show-type="'simple'" ref="xmProjectTplMngRef"></xm-project-tpl-mng>
</el-row> </el-row>
</el-col>
<el-col :span="templateVisible?18:24" class="border">
<el-row class="padding-left">
<el-menu active-text-color="#00abfc" :default-active="menukey" mode="horizontal" @select="handleSelect">
</el-col>
<el-col :span="templateVisible?18:24" class="border">
<el-row class="padding-left">
<el-menu active-text-color="#00abfc" :default-active="menukey" mode="horizontal" @select="handleSelect">
<el-menu-item index="all">全部</el-menu-item> <el-menu-item index="all">全部</el-menu-item>
<el-menu-item index="compete">我参与</el-menu-item> <el-menu-item index="compete">我参与</el-menu-item>
<el-menu-item index="leader">我管理</el-menu-item> <el-menu-item index="leader">我管理</el-menu-item>
@ -30,6 +31,7 @@
<el-menu-item index="7-2">选项2</el-menu-item> <el-menu-item index="7-2">选项2</el-menu-item>
<el-menu-item index="7-3">选项3</el-menu-item> <el-menu-item index="7-3">选项3</el-menu-item>
</el-submenu> --> </el-submenu> -->
<el-popover <el-popover
placement="top-start" placement="top-start"
title="更多查询条件或操作" title="更多查询条件或操作"
@ -73,7 +75,7 @@
<el-button type="text" class="right-btn" slot="reference" icon="el-icon-d-arrow-right">更多</el-button> <el-button type="text" class="right-btn" slot="reference" icon="el-icon-d-arrow-right">更多</el-button>
</el-popover> </el-popover>
<el-button type="primary" @click="showAdd" icon="el-icon-plus"></el-button> <el-button type="primary" @click="showAdd" icon="el-icon-plus"></el-button>
</el-menu>
</el-menu>
</el-row> </el-row>
<el-row class="page-main"> <el-row class="page-main">
@ -213,8 +215,12 @@
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input v-model="xmProjectCopy.name" placeholder="新的项目名称"></el-input> <el-input v-model="xmProjectCopy.name" placeholder="新的项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目编码(留空则后台自动生成)">
<el-input v-model="xmProjectCopy.code" placeholder="新的项目编码"></el-input>
<el-form-item label="项目代号(留空则后台自动生成)">
<el-input v-model="xmProjectCopy.code" placeholder="新的项目代号">
<template slot="append">
<el-button type="text" @click="createProjectCode">自动生成</el-button>
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="目标"> <el-form-item label="目标">
<el-radio v-model="xmProjectCopy.isTpl" label="1">复制为新的模板</el-radio> <el-radio v-model="xmProjectCopy.isTpl" label="1">复制为新的模板</el-radio>
@ -223,7 +229,8 @@
<el-form-item label="附加任务"> <el-form-item label="附加任务">
<el-checkbox v-model="xmProjectCopy.copyPhase" true-label="1" false-label="0">拷贝计划</el-checkbox> <el-checkbox v-model="xmProjectCopy.copyPhase" true-label="1" false-label="0">拷贝计划</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyTask" true-label="1" false-label="0">拷贝任务</el-checkbox> <el-checkbox v-model="xmProjectCopy.copyTask" true-label="1" false-label="0">拷贝任务</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroup" true-label="1" false-label="0">拷贝项目组成员</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroup" true-label="1" false-label="0">拷贝项目组织架构</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroupUser" true-label="1" false-label="0">拷贝项目组成员</el-checkbox>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -248,7 +255,7 @@
//import Sticky from '@/components/Sticky' // header //import Sticky from '@/components/Sticky' // header
import config from "@/common/config"; // import config from "@/common/config"; //
//import { listOption } from '@/api/mdp/meta/itemOption';// //import { listOption } from '@/api/mdp/meta/itemOption';//
import { listXmProject, editStatus, delXmProject, batchDelXmProject,copyTo } from '@/api/xm/core/xmProject';
import { listXmProject, editStatus, delXmProject, batchDelXmProject,copyTo,createProjectCode } from '@/api/xm/core/xmProject';
import { addXmMyFocus , delXmMyFocus } from '@/api/xm/core/xmMyFocus'; import { addXmMyFocus , delXmMyFocus } from '@/api/xm/core/xmMyFocus';
import XmProjectAdd from './XmProjectAdd';// import XmProjectAdd from './XmProjectAdd';//
import XmProjectEdit from './XmProjectEdit';// import XmProjectEdit from './XmProjectEdit';//
@ -336,10 +343,10 @@
dateRanger: [ ], dateRanger: [ ],
pickerOptions: util.pickerOptions('datarange'), pickerOptions: util.pickerOptions('datarange'),
xmProjectCopy:{ xmProjectCopy:{
id:'',name:'',code:'',isTpl:'',copyPhase:'1',copyTask:'1',copyGrup:'0'
id:'',name:'',code:'',isTpl:'',copyPhase:'1',copyTask:'1',copyGroup:'1',copyGroupUser:'0'
}, },
copyToVisible:false, copyToVisible:false,
templateVisible:false,
templateVisible:true,
/**end 自定义属性请在上面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/
} }
},//end data },//end data
@ -411,13 +418,7 @@
console.log(res.data); console.log(res.data);
this.pageInfo.total = res.data.total; this.pageInfo.total = res.data.total;
this.pageInfo.count=false; this.pageInfo.count=false;
this.xmProjects = res.data.data;
if(this.xmProjects==null || this.xmProjects.length==0){
this.templateVisible=true
}else{
this.templateVisible=false;
}
this.xmProjects = res.data.data;
}else{ }else{
this.$notify({showClose: true, message: tips.msg, type: 'error' }); this.$notify({showClose: true, message: tips.msg, type: 'error' });
} }
@ -725,7 +726,16 @@
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' }); this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
}) })
},
},
createProjectCode(){
createProjectCode({}).then(res=>{
var tips=res.data.tips;
if(tips.isOk){
this.xmProjectCopy.code=res.data.data
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
})
}
/**end 自定义函数请在上面加**/ /**end 自定义函数请在上面加**/
},//end methods },//end methods

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

@ -7,7 +7,7 @@
</el-row> </el-row>
<el-row v-if="showType=='simple'"> <el-row v-if="showType=='simple'">
<el-col :span="24"> <el-col :span="24">
<el-checkbox v-model="filters.isMy" false-label="0" true-label="1">我的模板</el-checkbox>
<el-checkbox v-model="filters.isMy" false-label="0" true-label="1">我的模板</el-checkbox> <font style="font-size:10px;" color="red">通过复制快速创建新的项目</font>
</el-col> </el-col>
<el-col :span="16"><el-input v-model="filters.key" placeholder="模板名字"></el-input> <el-col :span="16"><el-input v-model="filters.key" placeholder="模板名字"></el-input>
</el-col> </el-col>
@ -26,8 +26,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="" width="100" fixed="right"> <el-table-column label="" width="100" fixed="right">
<template slot-scope="scope">
<el-button type="text" title="通过复制创建新的项目" @click="onCopyToBtnClick(scope.row)" :disabled="load.add" v-loading="load.add">复制</el-button>
<template slot-scope="scope">
<el-button type="text" title="通过复制创建新的项目" @click="onCopyToBtnClick(scope.row)" :disabled="load.add" v-loading="load.add">复制</el-button>
<el-button type="text" title="删除该模板" @click="handleDel(scope.row)" :disabled="load.del" v-loading="load.del">删除</el-button> <el-button type="text" title="删除该模板" @click="handleDel(scope.row)" :disabled="load.del" v-loading="load.del">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -50,8 +50,12 @@
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input v-model="xmProjectCopy.name" placeholder="新的项目名称"></el-input> <el-input v-model="xmProjectCopy.name" placeholder="新的项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目编码(留空则后台自动生成)">
<el-input v-model="xmProjectCopy.code" placeholder="新的项目编码"></el-input>
<el-form-item label="项目代号(留空则后台自动生成)">
<el-input v-model="xmProjectCopy.code" placeholder="新的项目代号">
<template slot="append">
<el-button type="text" @click="createProjectCode">自动生成</el-button>
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="目标"> <el-form-item label="目标">
<el-radio v-model="xmProjectCopy.isTpl" label="1">复制为新的模板</el-radio> <el-radio v-model="xmProjectCopy.isTpl" label="1">复制为新的模板</el-radio>
@ -60,7 +64,8 @@
<el-form-item label="附加任务"> <el-form-item label="附加任务">
<el-checkbox v-model="xmProjectCopy.copyPhase" true-label="1" false-label="0">拷贝计划</el-checkbox> <el-checkbox v-model="xmProjectCopy.copyPhase" true-label="1" false-label="0">拷贝计划</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyTask" true-label="1" false-label="0">拷贝任务</el-checkbox> <el-checkbox v-model="xmProjectCopy.copyTask" true-label="1" false-label="0">拷贝任务</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroup" true-label="1" false-label="0">拷贝项目组成员</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroup" true-label="1" false-label="0">拷贝项目组织架构</el-checkbox>
<el-checkbox v-model="xmProjectCopy.copyGroupUser" true-label="1" false-label="0">拷贝项目组成员</el-checkbox>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -78,7 +83,7 @@
//import Sticky from '@/components/Sticky' // header //import Sticky from '@/components/Sticky' // header
import config from "@/common/config"; // import config from "@/common/config"; //
//import { listOption } from '@/api/mdp/meta/itemOption';// //import { listOption } from '@/api/mdp/meta/itemOption';//
import { listXmProject, editStatus, delXmProject, batchDelXmProject,copyTo } from '@/api/xm/core/xmProject';
import { listXmProject, editStatus, delXmProject, batchDelXmProject,copyTo,createProjectCode} from '@/api/xm/core/xmProject';
import { addXmMyFocus , delXmMyFocus } from '@/api/xm/core/xmMyFocus'; import { addXmMyFocus , delXmMyFocus } from '@/api/xm/core/xmMyFocus';
import XmProjectEdit from './XmProjectEdit';// import XmProjectEdit from './XmProjectEdit';//
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -156,7 +161,7 @@
dateRanger: [ ], dateRanger: [ ],
pickerOptions: util.pickerOptions('datarange'), pickerOptions: util.pickerOptions('datarange'),
xmProjectCopy:{ xmProjectCopy:{
id:'',name:'',code:'',isTpl:'',copyPhase:'1',copyTask:'1',copyGrup:'0'
id:'',name:'',code:'',isTpl:'',copyPhase:'1',copyTask:'1',copyGroup:'1',copyGroupUser:'0'
}, },
copyToVisible:false, copyToVisible:false,
/**end 自定义属性请在上面加 请加备注**/ /**end 自定义属性请在上面加 请加备注**/
@ -536,6 +541,15 @@
this.filters.productId='' this.filters.productId=''
this.filters.productName='' this.filters.productName=''
this.getXmProjects() this.getXmProjects()
},
createProjectCode(){
createProjectCode({}).then(res=>{
var tips=res.data.tips;
if(tips.isOk){
this.xmProjectCopy.code=res.data.data
}
this.$notify({showClose: true, message: tips.msg, type: tips.isOk?'success':'error' });
})
} }
/**end 自定义函数请在上面加**/ /**end 自定义函数请在上面加**/

Loading…
Cancel
Save