项目变更工作流优化

This commit is contained in:
陈裕财
2025-04-13 19:38:05 +08:00
parent 62c803d5cd
commit 28d44a20b8
2 changed files with 198 additions and 205 deletions

View File

@@ -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">&nbsp;&nbsp;代号{{ editForm.code }}</el-text>
<el-tooltip content="项目代号用于签订合同等甲乙方共享的场景;项目编号为内部编号,用于内部流转,编号生成规则:项目代号+四位随机码">
<icon icon="ep:info-filled" />
</el-tooltip>
<el-text type="info">&nbsp;&nbsp;流程状态<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>

View File

@@ -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)"/>小时
&nbsp;&nbsp;<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>&nbsp;{{ this.toFixed(editForm.planNouserAt / 10000) }}万元</el-text>
:min="0" placeholder="人力成本总预算" @change="editSomeFields(editForm, 'planNouserAt', $event)"><template #suffix></template></el-input><el-text>&nbsp;{{ 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> &nbsp;<el-text type="info">
:min="0" placeholder="总成本预算" @change="editSomeFields(editForm, 'planTotalCost', $event)"><template #suffix></template></el-input> &nbsp;<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="税率" /> &nbsp;%
:max="100" placeholder="税率" @change="editSomeFields(editForm, 'xmType', $event)"/> &nbsp;%
</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="毛利率" />&nbsp;%
:min="0" :max="100" placeholder="毛利率" @change="editSomeFields(editForm, 'budgetMarginRate', $event)"/>&nbsp;%
</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>&nbsp;{{ this.toFixed(editForm.contractAmt / 10000) }}万元 &nbsp; 毛利率{{ 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;