3 changed files with 271 additions and 82 deletions
-
82src/views/xm/core/xmProject/XmProjectEdit.vue
-
10src/views/xm/core/xmProject/XmProjectOverviewComplex.vue
-
261src/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)">总预算超出 <el-input type="number" v-model="editForm.earlyAmt" placeholder="预警额度" style="width:180px;" @change="editXmProjectSomeFields(editForm,'earlyAmt',$event)"></el-input> 元将进入预警清单</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> |
||||
|
预算金额超出 <el-input type="number" v-model="editForm.maxTaskAmt" style="width:180px;" @change="editXmProjectSomeFields(editForm,'maxTaskAmt',$event)"></el-input> 元的任务将被禁止保存 |
||||
|
</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-不控制,1任务指派及crud必须检查用户的上下级关系 |
||||
|
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> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue