mirror of
https://gitee.com/maimengcloud/xm-ui-web.git
synced 2025-12-30 10:12:26 +00:00
项目变更工作流优化
This commit is contained in:
@@ -1,5 +1,104 @@
|
||||
<template>
|
||||
<el-table :data="tableDatas">
|
||||
<el-card>
|
||||
<template #header>
|
||||
<el-space :wrap="false">
|
||||
<el-avatar style="background-color:green;"><icon icon="fa-solid:project-diagram"/></el-avatar>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-text type="info" size="small">编号:{{ editForm.id }}</el-text>
|
||||
<el-text type="info" size="small"> 代号:{{ editForm.code }}</el-text>
|
||||
<el-tooltip content="项目代号用于签订合同等甲乙方共享的场景;项目编号为内部编号,用于内部流转,编号生成规则:项目代号+四位随机码">
|
||||
<icon icon="ep:info-filled" />
|
||||
</el-tooltip>
|
||||
<el-text type="info"> 流程状态:<mdp-select itemCode="bizFlowState" v-model="editForm.bizFlowState" showStyle="tag" disabled/></el-text>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-text size="large"> {{ editForm.name }}</el-text>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-space>
|
||||
</template>
|
||||
<el-descriptions :column="3" size="small" border>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<user />
|
||||
</el-icon>
|
||||
项目经理
|
||||
</div>
|
||||
</template>
|
||||
{{ editForm.pmUsername || editForm.pmUserid }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<iphone />
|
||||
</el-icon>
|
||||
项目状态
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select width="100%" size="small" itemCode="projectStatus" v-model="editForm.status" showStyle="tag"
|
||||
:disabled="true" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<location />
|
||||
</el-icon>
|
||||
项目类型
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select width="100%" showStyle="tag" itemCode="projectType" v-model="editForm.xmType"
|
||||
@change="editSomeFields(editForm, 'projectType', $event)" :disabled="true" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<tickets />
|
||||
</el-icon>
|
||||
当前阶段
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select width="100%" :clearable="false" v-if="editForm.xmType" show-style="tag" size="small" label="当前阶段"
|
||||
:itemCode="'projectPhasePlans' + editForm.xmType" v-model="editForm.currPhase"
|
||||
@change="editSomeFields(editForm, 'currPhase', $event)" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<Timer />
|
||||
</el-icon>
|
||||
时间周期
|
||||
</div>
|
||||
</template>
|
||||
<el-space wrap>
|
||||
{{ $mdp.formatDate(editForm.startTime,'Y-M-D') }}~{{ $mdp.formatDate(editForm.endTime,'Y-M-D') }}
|
||||
|
||||
</el-space>
|
||||
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
所属部门
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select-dept showStyle="tag" width="100%" v-model="editForm.deptid" placeholder="归属部门" :displayLoad="true"
|
||||
@change2="editSomeFields(editForm, 'deptid', $event)" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-table :data="tableDatas" v-adaptive>
|
||||
<el-table-column type="index"/>
|
||||
<el-table-column prop="name" label="名称" width="200px"/>
|
||||
<el-table-column prop="ovalue" label="原值" min-width="120px">
|
||||
@@ -16,15 +115,15 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="nvalue" label="新值" min-width="120px">
|
||||
<template #default="{row}">
|
||||
|
||||
<mdp-input width="100%" v-if="row.item_type=='1'" v-model="row.nvalue"/>
|
||||
<mdp-input width="100%" v-else-if="row.item_type=='2'" type="number" v-model="row.nvalue"/>
|
||||
<mdp-date width="100%" v-else-if="row.item_type=='3'" v-model="row.nvalue"/>
|
||||
<mdp-select width="100%" v-else-if="row.item_type=='4'" :itemCode="row.itemCode" v-model="row.nvalue"/>
|
||||
<mdp-input width="100%" v-else-if="row.item_type=='8'" type="textarea" rows="4" v-model="row.nvalue"/>
|
||||
<mdp-select-user width="100%" v-else-if="row.item_type=='16'" v-model="row.nvalue"/>
|
||||
<mdp-select-dept width="100%" v-else-if="row.item_type=='17'" v-model="row.nvalue"/>
|
||||
<mdp-input width="100%" v-else v-model="row.nvalue"/>
|
||||
|
||||
<mdp-input width="100%" v-if="row.item_type=='1'" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-input width="100%" v-else-if="row.item_type=='2'" type="number" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-date width="100%" v-else-if="row.item_type=='3'" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-select width="100%" v-else-if="row.item_type=='4'" :itemCode="row.itemCode" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-input width="100%" v-else-if="row.item_type=='8'" type="textarea" rows="4" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-select-user width="100%" v-else-if="row.item_type=='16'" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-select-dept width="100%" v-else-if="row.item_type=='17'" v-model="row.nvalue" :disabled="nvalueDisabled" :class="{'red-border':true}"/>
|
||||
<mdp-input width="100%" v-else v-model="row.nvalue" :class="{'red-border':true}"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="填写说明" min-width="120px">
|
||||
@@ -33,6 +132,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="footer padding-right"><el-button @click="sendToProcessApprova()" icon="finished" type="warning">变更提审</el-button></div>
|
||||
|
||||
</template>
|
||||
|
||||
@@ -41,16 +141,12 @@ import util from '@/components/mdp-ui/js/util';//全局公共库
|
||||
import { sn } from '@/components/mdp-ui/js/sequence';//全局公共库
|
||||
|
||||
import config from "@/api/mdp_pub/mdp_config"; //全局公共库
|
||||
import { addXmProject, editXmProject, createProjectCode, editXmProjectSomeFields } from '@/api/xm/core/xmProject';
|
||||
|
||||
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { useXmStore2, useXmStore} from '@/store/modules/xm'
|
||||
|
||||
|
||||
import { MdpFormMixin } from '@/components/mdp-ui/mixin/MdpFormMixin';
|
||||
export default {
|
||||
mixins: [MdpFormMixin],
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapState(useUserStore, [
|
||||
'userInfo', 'roles'
|
||||
@@ -59,109 +155,63 @@ export default {
|
||||
...mapState(useXmStore, [
|
||||
'projectInfo'
|
||||
]),
|
||||
nvalueDisabled(){
|
||||
return this.extVars?.id
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currOpType: 'add',
|
||||
return {
|
||||
load: { list: false, add: false, del: false, edit: false },//查询中...
|
||||
editFormRules: {
|
||||
name: [{
|
||||
required: true, message: '项目名称不可为空', trigger: 'change'
|
||||
},
|
||||
{ min: 2, max: 50, message: '名称长度在2-50个字符', trigger: 'change' }
|
||||
],
|
||||
id: [{
|
||||
required: true, message: '项目编号不可为空', trigger: 'change'
|
||||
}],
|
||||
code: [{
|
||||
required: true, message: '项目代号不可为空', trigger: 'change'
|
||||
},
|
||||
{ min: 5, max: 40, message: '项目代号长度在5-40个字符', trigger: 'change' }
|
||||
],
|
||||
xmType: [{
|
||||
required: true, message: '项目类型不可为空', trigger: 'change'
|
||||
}],
|
||||
deptid: [{
|
||||
required: true, message: '部门不可为空', trigger: 'change'
|
||||
}],
|
||||
admUserid: [{
|
||||
required: true, message: '项目总控不能为空', trigger: 'change'
|
||||
}],
|
||||
pmUserid: [{
|
||||
required: true, message: '项目经理不能为空', trigger: 'change'
|
||||
}],
|
||||
description: [
|
||||
{ min: 0, max: 250, message: '项目描述长度在0-250', trigger: 'change' }
|
||||
],
|
||||
setupRemark: [
|
||||
{ min: 0, max: 250, message: '立项说明长度在0-250', trigger: 'change' }
|
||||
],
|
||||
planWorkingHours: [
|
||||
{ required: true, message: '此项必填', trigger: 'change' }
|
||||
],
|
||||
startTime: [
|
||||
{ required: true, message: '此项必填', trigger: 'change' }
|
||||
],
|
||||
endTime: [
|
||||
{ required: true, message: '此项必填', trigger: 'change' }
|
||||
],
|
||||
tsrc: [
|
||||
{ required: true, message: '此项必填', trigger: 'change' }
|
||||
],
|
||||
gain: [
|
||||
{ required: true, message: '此项必填', trigger: 'change' }
|
||||
],
|
||||
target: [
|
||||
{ min: 0, max: 250, message: '目标说明长度在0-250', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
//编辑界面数据 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: ''
|
||||
},
|
||||
apis: {
|
||||
add: addXmProject,
|
||||
edit: editXmProject,
|
||||
editSomeFields: editXmProjectSomeFields
|
||||
} ,
|
||||
|
||||
xmProjectFields:[],
|
||||
tableDatas:[],
|
||||
editForm:{},
|
||||
extVars:{},
|
||||
}//end return
|
||||
},//end data
|
||||
methods: {
|
||||
initTalbeDatas(){
|
||||
debugger
|
||||
let qxFields=this.projectInfo.flowFields
|
||||
if(!qxFields){
|
||||
this.tableDatas=[]
|
||||
return;
|
||||
}
|
||||
let qxFieldList=qxFields.split(",")
|
||||
let tds=[]
|
||||
this.xmProjectFields.forEach((k)=>{
|
||||
let extVals=JSON.parse(k.extVals?.length>0?k.extVals:'[]')
|
||||
let row={id:k.id,name:k.name,ovalue:this.editForm[k.id],nvalue:null}
|
||||
let row={id:k.id,name:k.name,ovalue:this.editForm[k.id],nvalue:this.editForm[k.id]}
|
||||
if(this.extVars.id){
|
||||
row.nvalue=this.extVars[k.id]
|
||||
}
|
||||
extVals.forEach(k=>{
|
||||
row[k.id]=k.value
|
||||
})
|
||||
tds.push(row)
|
||||
if(qxFieldList.some(f=>f==k.id)){
|
||||
tds.push(row)
|
||||
}
|
||||
|
||||
})
|
||||
this.tableDatas=tds
|
||||
},
|
||||
sendToProcessApprova: function () {
|
||||
let row=this.editForm
|
||||
let bizKey="xm_project_start_approva"
|
||||
let bizKey="xm_project_comm_change_approva"
|
||||
// 传过来的参数格式
|
||||
if (row.bizFlowState == '1') {
|
||||
this.$notify.error("审核中,不允许重复发审");
|
||||
return;
|
||||
}
|
||||
if(row.status>'2'){
|
||||
this.$notify.error("已立项,不允许重新发起立项申请");
|
||||
return;
|
||||
}
|
||||
|
||||
let extVars = { projectId: row.id }
|
||||
let jsonExtVars = JSON.stringify(extVars);
|
||||
// if(row.status<='1'){
|
||||
// this.$notify.error("未立项前的项目不需要变更");
|
||||
// return;
|
||||
// }
|
||||
// if(row.status>='8'){
|
||||
// this.$notify.error("已关闭项目不允许变更");
|
||||
// return;
|
||||
// }
|
||||
|
||||
var currDomain = window.location.protocol + "//" + window.location.host;
|
||||
var fullPath = this.$route.fullPath;
|
||||
@@ -173,8 +223,7 @@ export default {
|
||||
resUrl: '',
|
||||
bizId: row.id,
|
||||
bizPid: row.id,
|
||||
mainContext: '',
|
||||
extVars: extVars,
|
||||
mainContext: '',
|
||||
flowVars: {
|
||||
subscribeTaskEvent: 'TASK_COMPLETED,TASK_CREATED',
|
||||
data: {
|
||||
@@ -185,95 +234,41 @@ export default {
|
||||
}
|
||||
|
||||
//立项审核
|
||||
params.mainTitle = '关于项目【' + row.name + "】立项的审批申请";
|
||||
params.mainContext = `<p><ol>
|
||||
<li>项目名称:${row.name}</li>
|
||||
<li>项目编号:${row.id}</li>
|
||||
<li>开始日期:${row.startTime} 结束日期:${row.endTime}</li>
|
||||
<li>总工期:${row.planWorkingHours}小时</li>
|
||||
<li>需要人员:${row.planIuserCnt+row.planOuserCnt}人</li>
|
||||
<li>项目目标:${row.target||''}</li>
|
||||
<li>项目总控:${row.admUsername}</li>
|
||||
<li>项目经理:${row.pmUsername}</li>
|
||||
<li>项目预算:${row.planTotalCost||'0'}元</li>
|
||||
<li>合同金额:${row.contractAmt||'0'}元</li>
|
||||
<li>预计毛利率:${row.budgetMarginRate||'-'}%</li>
|
||||
<li>立项说明:${row.setupRemark||''}</li>
|
||||
<li>项目说明:${row.description||''}</li>
|
||||
</ol></p>`;
|
||||
params.mainTitle = '关于项目【' + row.name + "】变更的审批申请";
|
||||
let newRow={id:row.id}
|
||||
let tds=this.tableDatas.filter(k=>{
|
||||
if(row[k.id]==k.nvalue){
|
||||
return false;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
})
|
||||
if(tds.length==0){
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: "没有更改数据,无须提交", type: 'error' })
|
||||
return;
|
||||
}
|
||||
tds.forEach(n=>{
|
||||
newRow[n.id]=n.nvalue
|
||||
params.mainContext=params.mainContext+`<li>${n.name}: ${n.ovalue} - > ${n.nvalue}</li>`
|
||||
})
|
||||
newRow.branchId=row.branchId
|
||||
params.mainContext=`<p><ol>${params.mainContext}</ol></p>`
|
||||
params.restUrl = "/"+config.getXmCtx() + "/xm/core/xmProject/processApprova";
|
||||
params.flowVars.data = row
|
||||
params.flowVars.data = newRow
|
||||
params.bizUrl=params.bizUrl+'&extVars='+JSON.stringify(newRow)
|
||||
//this.html2canvas(document.querySelector(".editForm"),row,params);
|
||||
this.$router.push({ name: 'bizStartProc', query: { paramsId: this.$mdp.setCacheParams(params) } });
|
||||
},
|
||||
|
||||
|
||||
|
||||
editSomeFieldsCheck(row, fieldName, $event, params) {
|
||||
if(this.projectInfo.bizFlowState=='1'){
|
||||
|
||||
this.$nextTick(()=>{
|
||||
this.editForm={...this.dataBak}
|
||||
})
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: "审批中不允许修改", type: 'error' })
|
||||
return ;
|
||||
}
|
||||
if (fieldName == "admUserid") {
|
||||
params["admUserid"] = $event.userid;
|
||||
params["admUsername"] = $event.username;
|
||||
} else if (fieldName == "assUserid") {
|
||||
params["assUserid"] = $event.userid;
|
||||
params["assUsername"] = $event.username;
|
||||
} else if (fieldName == "pmUserid") {
|
||||
params["pmUserid"] = $event.userid;
|
||||
params["pmUsername"] = $event.username;
|
||||
} else if (fieldName == 'deptid') {
|
||||
params["deptid"] = $event.deptid;
|
||||
params["deptidPath"] = $event.idPath;
|
||||
} else {
|
||||
params[fieldName] = $event
|
||||
}
|
||||
if (fieldName == 'description') {
|
||||
this.$refs.editForm.validateField('description', err => {
|
||||
if (!err) {
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: "表单验证不通过", type: 'error' })
|
||||
return;
|
||||
}
|
||||
})
|
||||
} else if (fieldName == 'name') {
|
||||
this.$refs.editForm.validateField('name', err => {
|
||||
if (!err) {
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: '表单验证不通过', type: 'error' })
|
||||
return;
|
||||
}
|
||||
})
|
||||
} else if (fieldName == 'target') {
|
||||
this.$refs.editForm.validateField('target', err => {
|
||||
if (!err) {
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: '表单验证不通过', type: 'error' })
|
||||
return;
|
||||
}
|
||||
})
|
||||
}else if (fieldName == 'setupRemark') {
|
||||
this.$refs.editForm.validateField('setupRemark', err => {
|
||||
if (!err) {
|
||||
this.$notify({ position: 'bottom-left', showClose: true, message: '表单验证不通过', type: 'error' })
|
||||
return;
|
||||
}
|
||||
})
|
||||
}
|
||||
return true;
|
||||
},
|
||||
afterEditSomeFields(res, isOk, params, row) {
|
||||
debugger
|
||||
if (!isOk) {
|
||||
this.initQxCode()
|
||||
} else {
|
||||
useXmStore2().setProjectInfo(row)
|
||||
}
|
||||
},
|
||||
initCurrData(){
|
||||
initCurrData(){
|
||||
this.editForm={...this.projectInfo}
|
||||
if(this.$route.query.extVars){
|
||||
this.extVars=JSON.parse(this.$route.query.extVars)
|
||||
}else{
|
||||
this.extVars={}
|
||||
}
|
||||
|
||||
this.$mdp.getDictOptions('xm_project_fields').then(res=>
|
||||
{
|
||||
this.xmProjectFields=res
|
||||
@@ -283,11 +278,9 @@ export default {
|
||||
}
|
||||
/**end 在上面加自定义方法**/
|
||||
},//end method
|
||||
components: {
|
||||
|
||||
},
|
||||
mounted(){
|
||||
this.initCurrData();
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped />
|
||||
</script>
|
||||
@@ -194,9 +194,9 @@
|
||||
<el-form-item label="起止时间" prop="startTime">
|
||||
<el-space wrap>
|
||||
<mdp-date-range v-model="editForm" startKey="startTime" endKey="endTime" type="daterange" range-separator="至"
|
||||
start-placeholder="计划开始" end-placeholder="计划完成" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
start-placeholder="计划开始" end-placeholder="计划完成" value-format="YYYY-MM-DD HH:mm:ss" @change="editSomeFields(editForm, 'startTime', $event)"/>
|
||||
<el-input style="width:150px;" type="number" v-model="editForm.planWorkingHours" :precision="2" :step="8" :min="0"
|
||||
placeholder="预计工时" />小时
|
||||
placeholder="预计工时" @change="editSomeFields(editForm, 'planWorkingHours', $event)"/>小时
|
||||
<el-text>参考工时{{ autoParams.weekday * 8 }}小时,工作日{{ autoParams.weekday }}天</el-text>
|
||||
</el-space>
|
||||
|
||||
@@ -206,17 +206,17 @@
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="项目目标" name="target">
|
||||
<el-form-item label="" prop="target" style="width:100%;" label-width="0px">
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.target" placeholder="项目目标" />
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.target" placeholder="项目目标" @change="editSomeFields(editForm, 'target', $event)"/>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="立项说明" name="setupRemark" >
|
||||
<el-form-item label="" prop="setupRemark" style="width:100%;" label-width="0px">
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.setupRemark" placeholder="立项说明" />
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.setupRemark" placeholder="立项说明" @change="editSomeFields(editForm, 'setupRemark', $event)"/>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="项目说明" name="desc">
|
||||
<el-form-item label="" prop="description" style="width:100%;" label-width="0px">
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.description" placeholder="项目描述" />
|
||||
<el-input type="textarea" :rows="10" v-model="editForm.description" placeholder="项目描述" @change="editSomeFields(editForm, 'description', $event)"/>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="概算" name="budget">
|
||||
@@ -232,11 +232,11 @@
|
||||
<el-row :gutter="30" style="height:10px;">
|
||||
<el-col :span="3">内购</el-col>
|
||||
<el-col :span="4"><el-input style="width:100%;" type="number" v-model="editForm.planIuserCnt" :precision="0"
|
||||
:step="1" :min="0" placeholder="内购人数" />
|
||||
:step="1" :min="0" placeholder="内购人数" @change="editSomeFields(editForm, 'planIuserCnt', $event)"/>
|
||||
</el-col>
|
||||
<el-col :span="6">{{ autoParams.planIuserWorkload }}h</el-col>
|
||||
<el-col :span="3"><el-input style="width:100%;" type="number" v-model="editForm.planIuserPrice" :precision="0"
|
||||
:step="1" :min="0" placeholder="内购单价" /> </el-col>
|
||||
:step="1" :min="0" placeholder="内购单价" @change="editSomeFields(editForm, 'planIuserPrice', $event)"/> </el-col>
|
||||
<el-col :span="8">{{ this.toFixed(autoParams.planIuserAt) }}元 <el-text type="info">{{ this.toFixed(autoParams.planIuserAt / 10000) }}
|
||||
万元</el-text></el-col>
|
||||
</el-row>
|
||||
@@ -244,11 +244,11 @@
|
||||
<el-row :gutter="30" style="height:10px;">
|
||||
<el-col :span="3">外购</el-col>
|
||||
<el-col :span="4"><el-input style="width:100%;" type="number" v-model="editForm.planOuserCnt" :precision="0"
|
||||
:step="1" :min="0" placeholder="外购人数" />
|
||||
:step="1" :min="0" placeholder="外购人数" @change="editSomeFields(editForm, 'planOuserCnt', $event)"/>
|
||||
</el-col>
|
||||
<el-col :span="6">{{ autoParams.planOuserWorkload }}h</el-col>
|
||||
<el-col :span="3"><el-input style="width:100%;" type="number" v-model="editForm.planOuserPrice" :precision="0"
|
||||
:step="1" :min="0" placeholder="外购单价" /> </el-col>
|
||||
:step="1" :min="0" placeholder="外购单价" @change="editSomeFields(editForm, 'planOuserPrice', $event)"/> </el-col>
|
||||
<el-col :span="8">{{ autoParams.planOuserAt }} 元 <el-text type="info">{{ autoParams.planOuserAt / 10000 }}万元</el-text></el-col>
|
||||
|
||||
</el-row>
|
||||
@@ -267,22 +267,22 @@
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
内购人力(元): <el-input style="width:150px;" type="number" v-model="editForm.planIuserAt" :precision="2" :step="1000"
|
||||
:min="0" placeholder="内部人力成本总预算" ><template #suffix>元</template></el-input> <el-text >
|
||||
:min="0" placeholder="内部人力成本总预算" @change="editSomeFields(editForm, 'planIuserAt', $event)"><template #suffix>元</template></el-input> <el-text >
|
||||
参考值:{{ this.toFixed(autoParams.planIuserAt / 10000) }}万元</el-text>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
外购人力(元): <el-input style="width:150px;" type="number" v-model="editForm.planOuserAt" :precision="2" :step="1000"
|
||||
:min="0" placeholder="外购人力成本总预算" ><template #suffix>元</template></el-input><el-text>参考值:{{ this.toFixed(autoParams.planOuserAt / 10000) }}万元</el-text>
|
||||
:min="0" placeholder="外购人力成本总预算" @change="editSomeFields(editForm, 'planOuserAt', $event)"><template #suffix>元</template></el-input><el-text>参考值:{{ this.toFixed(autoParams.planOuserAt / 10000) }}万元</el-text>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
其它成本(元):<el-input style="width:150px;" type="number" v-model="editForm.planNouserAt" :precision="2" :step="1000"
|
||||
:min="0" placeholder="人力成本总预算" ><template #suffix>元</template></el-input><el-text> {{ this.toFixed(editForm.planNouserAt / 10000) }}万元</el-text>
|
||||
:min="0" placeholder="人力成本总预算" @change="editSomeFields(editForm, 'planNouserAt', $event)"><template #suffix>元</template></el-input><el-text> {{ this.toFixed(editForm.planNouserAt / 10000) }}万元</el-text>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider />
|
||||
<el-row>
|
||||
总计: <el-input style="width:150px;" type="number" v-model="editForm.planTotalCost" :precision="2" :step="1000"
|
||||
:min="0" placeholder="总成本预算"><template #suffix>元</template></el-input> <el-text type="info">
|
||||
:min="0" placeholder="总成本预算" @change="editSomeFields(editForm, 'planTotalCost', $event)"><template #suffix>元</template></el-input> <el-text type="info">
|
||||
参考值:{{ this.toFixed(autoParams.planTotalCost / 10000) }}万元</el-text>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
@@ -294,13 +294,13 @@
|
||||
<el-form-item label="税率">
|
||||
<el-row>
|
||||
<el-input style="width:150px;" type="number" v-model="editForm.taxRate" :precision="2" :step="5" :min="0"
|
||||
:max="100" placeholder="税率" /> %
|
||||
:max="100" placeholder="税率" @change="editSomeFields(editForm, 'xmType', $event)"/> %
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="考核标准毛利率">
|
||||
<el-row>
|
||||
<el-input style="width:150px;" type="number" v-model="editForm.budgetMarginRate" :precision="2" :step="1"
|
||||
:min="0" :max="100" placeholder="毛利率" /> %
|
||||
:min="0" :max="100" placeholder="毛利率" @change="editSomeFields(editForm, 'budgetMarginRate', $event)"/> %
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="建议合同总额">
|
||||
@@ -310,7 +310,7 @@
|
||||
<el-form-item label="实际合同总额">
|
||||
<el-row>
|
||||
<el-input style="width:150px;" type="number" v-model="editForm.contractAmt" :precision="2" :step="1000"
|
||||
:min="0" placeholder="合同总金额" />
|
||||
:min="0" placeholder="合同总金额" @change="editSomeFields(editForm, 'contractAmt', $event)"/>
|
||||
<el-text> {{ this.toFixed(editForm.contractAmt / 10000) }}万元 毛利率{{ this.toFixed(currentBudgetMarginRate)
|
||||
}}%</el-text>
|
||||
</el-row>
|
||||
@@ -1137,14 +1137,14 @@ export default {
|
||||
},
|
||||
|
||||
|
||||
editSomeFieldsCheck(row, fieldName, $event, params) {
|
||||
let field=this.xmProjectfields.find(k=>k.id==fieldName)
|
||||
if(field?.id){
|
||||
|
||||
|
||||
editSomeFieldsCheck(row, fieldName, $event, params) {
|
||||
let flowFields=this.editForm.flowFields
|
||||
|
||||
if(flowFields && this.currOpType!='add' && flowFields.indexOf(fieldName)>0){
|
||||
|
||||
setTimeout(() => {
|
||||
this.editForm={...this.dataBak}
|
||||
this.$notify.error( field.name+"的修改需要审核,请发起项目变更流程" )
|
||||
this.$notify.error( "该字段的修改需要审核,如需要修改,请发起项目变更流程进行修改" )
|
||||
}, 1);
|
||||
return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user