Browse Source

优化

master
陈裕财 3 years ago
parent
commit
92bba025c9
  1. 80
      src/views/xm/core/xmProject/XmProjectEdit.vue
  2. 10
      src/views/xm/core/xmProject/XmProjectOverviewComplex.vue
  3. 261
      src/views/xm/core/xmProject/XmProjectSetting.vue

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

@ -64,84 +64,6 @@
<el-button v-loading="load.edit" type="primary" @click.native=" editXmProjectSomeFields(editForm,'description',editForm.description)" :disabled="load.edit==true">保存描述</el-button> <el-button v-loading="load.edit" type="primary" @click.native=" editXmProjectSomeFields(editForm,'description',editForm.description)" :disabled="load.edit==true">保存描述</el-button>
</el-row> </el-row>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="控制开关" name="2">
<el-form-item label="优先级" prop="priority">
<el-select v-model="editForm.wtype" @change="editXmProjectSomeFields(editForm,'priority',$event)">
<el-option v-for="(item,index) in dicts['priority']" :key="index" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="报工方式" prop="wtype">
<el-select v-model="editForm.wtype" @change="editXmProjectSomeFields(editForm,'wtype',$event)">
<el-option label="无须报工" value="0" ></el-option>
<el-option label="每日报工" value="1" ></el-option>
<el-option label="工期内任意日报工" value="2" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="总预算控制" prop="budgetCtrl">
<el-checkbox v-model="editForm.budgetCtrl" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'budgetCtrl',$event)">项目计划总预算大于项目总预算后将无法添加新的计划任务进行项目预算变更后方可继续添加计划任务</el-checkbox>
</el-form-item>
<el-form-item label="总预算超额预警" prop="budgetEarly">
<el-checkbox v-model="editForm.budgetEarly" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'budgetEarly',$event)">总预算超出&nbsp;<el-input type="number" v-model="editForm.earlyAmt" placeholder="预警额度" style="width:180px;" @change="editXmProjectSomeFields(editForm,'earlyAmt',$event)"></el-input> &nbsp;元将进入预警清单</el-checkbox>
</el-form-item>
<el-form-item label="实际金额控制" prop="phaseActCtrl">
<el-checkbox v-model="editForm.phaseActCtrl" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'phaseActCtrl',$event)">每条计划实际金额不能大于预算金额; 任务的实际金额合计不能大于与任务关联的上级计划的预算</el-checkbox>
</el-form-item>
<el-form-item label="任务开关">
<el-row>
预算金额超出&nbsp;<el-input type="number" v-model="editForm.maxTaskAmt" style="width:180px;" @change="editXmProjectSomeFields(editForm,'maxTaskAmt',$event)"></el-input> &nbsp;元的任务将被禁止保存
</el-row>
<el-row>
<el-checkbox v-model="editForm.menuLink" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'menuLink',$event)">任务是否必须严格关联用户故事</el-checkbox>
<el-checkbox v-model="editForm.phaseLink" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'phaseLink',$event)">任务是否必须严格关联计划</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="团队相关:小组crud、加减人、小组组长管理等">
<el-row>
<el-radio-group v-model="qxCode.groupScope" @change="editXmProjectSomeFields(editForm,'groupScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.groupTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'groupTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="测试相关:缺陷crud">
<el-row>
<el-radio-group v-model="qxCode.testScope" @change="editXmProjectSomeFields(editForm,'testScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.testTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'testTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="任务相关:计划crud、任务crud、任务指派、报工等">
<el-row>
<el-radio-group v-model="qxCode.taskScope" @change="editXmProjectSomeFields(editForm,'taskScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.taskTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'taskTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
</el-tab-pane>
<el-tab-pane label="工期" name="3"> <el-tab-pane label="工期" name="3">
<el-row> <el-row>
<span v-if="opType!=='add'" style="float:right;"> <span v-if="opType!=='add'" style="float:right;">
@ -974,8 +896,6 @@
} else if (fieldName == "pmUserid") { } else if (fieldName == "pmUserid") {
params["pmUserid"] = $event[0].userid; params["pmUserid"] = $event[0].userid;
params["pmUsername"] = $event[0].username; params["pmUsername"] = $event[0].username;
}else if (fieldName == "groupScope"||fieldName == "groupTransmit"||fieldName == "testScope"||fieldName=="testTransmit"||fieldName == "taskScope"||fieldName=="taskTransmit") {
params["qxCode"] = [this.qxCode.groupScope,this.qxCode.groupTransmit,this.qxCode.testScope,this.qxCode.testTransmit,this.qxCode.taskScope,this.qxCode.taskTransmit].join(",")
} else{ } else{
params[fieldName]=$event params[fieldName]=$event
} }

10
src/views/xm/core/xmProject/XmProjectOverviewComplex.vue

@ -130,6 +130,13 @@
> >
<xm-project-overview v-if="showPanelName=='overview' && projectInfo && projectInfo.id" :sel-project="projectInfo"></xm-project-overview> <xm-project-overview v-if="showPanelName=='overview' && projectInfo && projectInfo.id" :sel-project="projectInfo"></xm-project-overview>
</el-tab-pane>
<el-tab-pane
label="项目设置"
name="setting"
>
<xm-project-setting v-if="showPanelName=='setting'" :sel-project="projectInfo" @edit-fields="onEditFields" ref="detail"></xm-project-setting>
</el-tab-pane> </el-tab-pane>
<el-tab-pane <el-tab-pane
label="项目详情" label="项目详情"
@ -190,6 +197,7 @@ import util from "@/common/js/util"; // 全局公共库
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import XmProjectOverview from './XmProjectOverview.vue'; import XmProjectOverview from './XmProjectOverview.vue';
import XmProjectDetail from './XmProjectDetail.vue'; import XmProjectDetail from './XmProjectDetail.vue';
import XmProjectSetting from './XmProjectSetting.vue';
import XmProductProjectLinkMng from '../xmProductProjectLink/XmProductProjectLinkMng.vue'; import XmProductProjectLinkMng from '../xmProductProjectLink/XmProductProjectLinkMng.vue';
import TaskMng from '@/views/mdp/workflow/ru/task/TaskMng'; import TaskMng from '@/views/mdp/workflow/ru/task/TaskMng';
@ -200,7 +208,7 @@ import { listXmProject} from '@/api/xm/core/xmProject';
import { initDicts,getDefOptions,editXmProjectSomeFields } from "@/api/xm/core/xmProject"; import { initDicts,getDefOptions,editXmProjectSomeFields } from "@/api/xm/core/xmProject";
export default { export default {
components: { XmProjectOverview, XmProjectDetail, XmProductProjectLinkMng ,TaskMng,ProcinstMng},
components: { XmProjectOverview, XmProjectDetail, XmProductProjectLinkMng ,TaskMng,ProcinstMng,XmProjectSetting},
computed: { computed: {
...mapGetters(["userInfo","projectInfo"]), ...mapGetters(["userInfo","projectInfo"]),
calcProjectStatusStep() { calcProjectStatusStep() {

261
src/views/xm/core/xmProject/XmProjectSetting.vue

@ -0,0 +1,261 @@
<template>
<section class="padding border">
<el-row>
<el-form :model="editForm" label-width="120px" label-position="top" :rules="editFormRules" ref="editForm" class="editForm">
<el-row><h3>{{ editForm.name }}</h3> </el-row>
<el-row class="label-font-color padding-bottom">
项目代号: {{editForm.code}} <el-divider direction="vertical"></el-divider> 项目编号: {{editForm.id}} <el-tooltip content="项目代号用于签订合同等甲乙方共享的场景;项目编号为内部编号,用于内部流转,编号生成规则:项目代号+四位随机码 "><i class="el-icon-question"></i></el-tooltip>
</el-row>
<el-form-item label="报工方式" prop="wtype">
<el-select v-model="editForm.wtype" @change="editXmProjectSomeFields(editForm,'wtype',$event)">
<el-option label="无须报工" value="0" ></el-option>
<el-option label="每日报工" value="1" ></el-option>
<el-option label="工期内任意日报工" value="2" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="总预算控制" prop="budgetCtrl">
<el-checkbox v-model="editForm.budgetCtrl" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'budgetCtrl',$event)">项目计划总预算大于项目总预算后将无法添加新的计划任务进行项目预算变更后方可继续添加计划任务</el-checkbox>
</el-form-item>
<el-form-item label="总预算超额预警" prop="budgetEarly">
<el-checkbox v-model="editForm.budgetEarly" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'budgetEarly',$event)">总预算超出&nbsp;<el-input type="number" v-model="editForm.earlyAmt" placeholder="预警额度" style="width:180px;" @change="editXmProjectSomeFields(editForm,'earlyAmt',$event)"></el-input> &nbsp;元将进入预警清单</el-checkbox>
</el-form-item>
<el-form-item label="实际金额控制" prop="phaseActCtrl">
<el-checkbox v-model="editForm.phaseActCtrl" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'phaseActCtrl',$event)">每条计划实际金额不能大于预算金额; 任务的实际金额合计不能大于与任务关联的上级计划的预算</el-checkbox>
</el-form-item>
<el-form-item label="任务开关">
<el-row>
预算金额超出&nbsp;<el-input type="number" v-model="editForm.maxTaskAmt" style="width:180px;" @change="editXmProjectSomeFields(editForm,'maxTaskAmt',$event)"></el-input> &nbsp;元的任务将被禁止保存
</el-row>
<el-row>
<el-checkbox v-model="editForm.menuLink" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'menuLink',$event)">任务是否必须严格关联用户故事</el-checkbox>
<el-checkbox v-model="editForm.phaseLink" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'phaseLink',$event)">任务是否必须严格关联计划</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="团队相关:小组crud、加减人、小组组长管理等">
<el-row>
<el-radio-group v-model="qxCode.groupScope" @change="editXmProjectSomeFields(editForm,'groupScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.groupTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'groupTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="测试相关:缺陷crud">
<el-row>
<el-radio-group v-model="qxCode.testScope" @change="editXmProjectSomeFields(editForm,'testScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.testTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'testTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
<el-form-item label="任务相关:计划crud、任务crud、任务指派、报工等">
<el-row>
<el-radio-group v-model="qxCode.taskScope" @change="editXmProjectSomeFields(editForm,'taskScope',$event)">
<el-radio label="0">不限制允许任何人</el-radio>
<el-radio label="1">同机构下的人员</el-radio>
<el-radio label="2">同项目内人员</el-radio>
<el-radio label="3">同项目下同小组内人员</el-radio>
</el-radio-group>
</el-row>
<el-row>
<el-checkbox v-model="qxCode.taskTransmit" :true-label="'1'" :false-label="'0'" @change="editXmProjectSomeFields(editForm,'taskTransmit',$event)">是否检查用户的上下级关系</el-checkbox>
</el-row>
<!--0-代表不限制,1-同组织2-同项目组默认3-同小组-->
</el-form-item>
</el-form>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from "@/common/config"; //
import { initDicts,createProjectCode,editXmProjectSomeFields } from '@/api/xm/core/xmProject';
import { mapGetters } from 'vuex';
import store from '@/store'
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
props:['selProject','visible'],
watch: {
'visible':function(visible) {
if(visible==true){
this.initData();
this.initQxCode()
}
},
selProject:{
handler(newValue, oldValue) {
this.initData();
},
deep:true
},
},
data() {
return {
filters: {
ids: [],
},
dicts: {
"projectType":[], "priority":[], "projectStatus":[],'xmType':[],'workType':[]
},// params=[{categoryId:'0001',itemCode:'sex'}] {'sex':[{optionValue:'1',optionName:'',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'',seqOrder:'2',fp:'',isDefault:'0'}]}
load:{ list: false, add: false, del: false, edit: false },//...
editFormRules: {
},
// XmProject xm_project
editForm: {
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:'',bizProcInstId:'',bizFlowState:'',planNouserAt:'',planIuserAt:'',planOuserAt:'',locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:'0',totalReceivables:'0',budgetMarginRate:13,contractAmt:0,planIuserPrice:85,planOuserPrice:100,planOuserCnt:0,planIuserCnt:0,planWorkingHours:0,taxRate:3,planIuserWorkload:0,planOuserWorkload:0,fromTplId:'',budgetCtrl:'0',deptid:'',showOut:'0',isTpl:'0',pmUserid:'',pmUsername:'',assUserid:'',assUsername:'',admUserid:'',admUsername:'',budgetEarly:'',phaseActCtrl:'',del:'0',ltime:'',ostatus:'0',workType:'',wtype:'',earlyAmt:0,maxTaskAmt:0,menuLink:'0',phaseLink:'0',tplType:'',qxCode:''
},
editFormBak: {
id:'',code:'',name:'',xmType:'',startTime:'',endTime:'',urgent:'',priority:'',description:'',createUserid:'',createUsername:'',createTime:'',assess:'',assessRemarks:'',status:'',branchId:'',planTotalCost:'',bizProcInstId:'',bizFlowState:'',planNouserAt:'',planIuserAt:'',planOuserAt:'',locked:'',baseTime:'',baseRemark:'',baselineId:'',planWorkload:'0',totalReceivables:'0',budgetMarginRate:13,contractAmt:0,planIuserPrice:85,planOuserPrice:100,planOuserCnt:0,planIuserCnt:0,planWorkingHours:0,taxRate:3,planIuserWorkload:0,planOuserWorkload:0,fromTplId:'',budgetCtrl:'0',deptid:'',showOut:'0',isTpl:'0',pmUserid:'',pmUsername:'',assUserid:'',assUsername:'',admUserid:'',admUsername:'',budgetEarly:'',phaseActCtrl:'',del:'0',ltime:'',ostatus:'0',workType:'',wtype:'',earlyAmt:0,maxTaskAmt:0,menuLink:'0',phaseLink:'0',tplType:'',qxCode:''
},
/**begin 在下面加自定义属性,记得补上面的一个逗号**/
maxTableHeight:300,
/**
权限码0,1,2,3,4,5,67,8,9逗号分割
共10位,不定长暂时只启用前2个位
第0位代表计划及任务指派及crud权限
0-代表不限制,1-同组织2-同项目组默认3-同小组
第1位代表计划及任务指派及crud时是否检查上下级关系0-默认1
*/
qxCode:{
taskScope:'2',//0-,1-2-3-
taskTransmit:'0',//0-1crud
testScope:'',
testTransmit:'',
groupScope:'',
groupTransmit:''
},
/**end 在上面加自定义属性**/
}//end return
},//end data
methods: {
//
//
initQxCode(){
var qxCode=this.editForm.qxCode
if(!qxCode){
this.qxCode.groupScope="2"
this.qxCode.groupTransmit="1"
this.qxCode.testScope="2"
this.qxCode.testTransmit="1"
this.qxCode.taskScope="2"
this.qxCode.taskTransmit="1"
}else{
var qxCodes=qxCode.split(",")
if(qxCodes.length>=6){
this.qxCode.groupScope=qxCodes[0]
this.qxCode.groupTransmit=qxCodes[1]
this.qxCode.testScope=qxCodes[2]
this.qxCode.testTransmit=qxCodes[3]
this.qxCode.taskScope=qxCodes[4]
this.qxCode.taskTransmit=qxCodes[5]
}else{
this.qxCode.groupScope='2'
this.qxCode.groupTransmit='1'
this.qxCode.testScope="2"
this.qxCode.testTransmit="1"
this.qxCode.taskScope="2"
this.qxCode.taskTransmit="1"
}
}
},
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$refs['editForm'].resetFields();
this.$emit('cancel');
},
createProjectCode(){
createProjectCode({}).then(res=>{
var tips=res.data.tips;
if(tips.isOk){
this.$set(this.editForm,'code',res.data.data)
}
this.$notify({position:'bottom-left',showClose:true,message: tips.msg, type: tips.isOk?'success':'error' });
})
},
initData(){
this.editForm=Object.assign(this.editForm,this.selProject)
this.editFormBak={...this.editForm}
},
editXmProjectSomeFields(row,fieldName,$event){
if(this.opType=='add'){
return;
}
var func=(params)=>{
editXmProjectSomeFields(params).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
Object.assign(row,params)
Object.assign(this.selProject,row)
this.$emit('edit-fields',row)
store.dispatch("setProjectInfo",this.selProject)
this.editFormBak=Object.assign({},row)
}else{
Object.assign(this.editForm,this.editFormBak)
this.initQxCode();
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
}
})
}
var params={ids:[row.id]};
if (fieldName == "groupScope"||fieldName == "groupTransmit"||fieldName == "testScope"||fieldName=="testTransmit"||fieldName == "taskScope"||fieldName=="taskTransmit") {
params["qxCode"] = [this.qxCode.groupScope,this.qxCode.groupTransmit,this.qxCode.testScope,this.qxCode.testTransmit,this.qxCode.taskScope,this.qxCode.taskTransmit].join(",")
} else{
params[fieldName]=$event
}
func(params)
},
/**end 在上面加自定义方法**/
},//end method
components: {
// 'xm-project-add':XmProjectEdit
},
mounted() {
this.$nextTick(()=>{
initDicts(this)
this.initData();
this.initQxCode()
})
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save