[update] 外部标准流程查看详情

This commit is contained in:
lideqin
2024-07-25 16:51:37 +08:00
parent 9e9ab35597
commit 8877654419
16 changed files with 860 additions and 432 deletions
@@ -531,25 +531,22 @@ export default {
) )
}, },
// 保存快照 // 保存快照
saveParamJsonStr () { saveParamJsonStr (callback) {
// 流程信息表单 // 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue()) const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息 // 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue()) const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
// 人员信息的数据, 处理成对象
const personnelObj = this.$refs.personnelInfo.getDataObj()
const params = { ...processInfoForm, ...approvalInfoForm } const params = { ...processInfoForm, ...approvalInfoForm }
params.infoJsonStr = JSON.stringify({ params.infoJsonStr = JSON.stringify(this.dealSaveJsonData())
processInfo: processInfoForm,
approvalInfo: approvalInfoForm,
userInfoMap: personnelObj,
dataSource: this.dataSource
})
params.taskId = this.$route.query.taskId params.taskId = this.$route.query.taskId
params.prcType = ProcessType.NO_MATCH_TRACKING.value params.prcType = ProcessType.NO_MATCH_TRACKING.value
saveSnapShot(params).then(res => { saveSnapShot(params).then(async res => {
if (!res.success) { if (res.success) {
console.log(res.message) callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
} }
}) })
}, },
@@ -710,21 +707,34 @@ export default {
} else { } else {
submitFunc = submitNoMatchTrackingProcess submitFunc = submitNoMatchTrackingProcess
} }
submitFunc(formData).then(async res => { if (this.currentNode === NoMatchTrackingNodes.initial.value && (!this.$route.query.processInstanceId || this.$route.query.draftId)) {
if (res.success) { submitFunc(formData).then(res => {
this.$message.success(res.message) if (res.success) {
if (!(this.currentNode === NoMatchTrackingNodes.initial.value && (!this.$route.query.processInstanceId || this.$route.query.draftId))) { this.$message.success(res.message)
// 保存快照 this.goBack()
await this.saveParamJsonStr() } else {
this.$message.warning(res.message)
this.disabledBtnClick = false
} }
this.goBack() }).finally(() => {
} else { this.loading = false
this.$message.warning(res.message) })
this.disabledBtnClick = false } else {
} // 保存快照后提交
}).finally(() => { this.saveParamJsonStr(() => {
this.loading = false submitFunc(formData).then(res => {
}) if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
}
}, },
/** /**
* 同意 * 同意
@@ -744,18 +754,19 @@ export default {
return return
} }
this.loading = true this.loading = true
agreeNoMatchTrackingProcess(formData).then(async res => { // 保存快照
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeNoMatchTrackingProcess(formData).then(res => {
// 保存快照 if (res.success) {
await this.saveParamJsonStr() this.$message.success(res.message)
this.goBack() this.goBack()
} else { } else {
this.$message.warning(res.message) this.$message.warning(res.message)
this.disabledBtnClick = false this.disabledBtnClick = false
} }
}).finally(() => { }).finally(() => {
this.loading = false this.loading = false
})
}) })
}, },
/** /**
@@ -774,18 +785,19 @@ export default {
return return
} }
this.loading = true this.loading = true
rejectNoMatchTrackingProcess(formData).then(async res => { // 保存快照
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectNoMatchTrackingProcess(formData).then(res => {
// 保存快照 if (res.success) {
await this.saveParamJsonStr() this.$message.success(res.message)
this.goBack() this.goBack()
} else { } else {
this.$message.warning(res.message) this.$message.warning(res.message)
this.disabledBtnClick = false this.disabledBtnClick = false
} }
}).finally(() => { }).finally(() => {
this.loading = false this.loading = false
})
}) })
}, },
handleDesignEngineerNameChange (name) { handleDesignEngineerNameChange (name) {
@@ -1,7 +1,7 @@
<template> <template>
<internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading"> <internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading">
<!-- 标题右侧tab --> <!-- 标题右侧tab -->
<template v-slot:titleRightCustom> <template v-slot:titleRightCustom v-if="!isLook">
<div class="table-operator-tab"> <div class="table-operator-tab">
<!--基础信息--> <!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''" <a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@@ -31,7 +31,7 @@
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')">
<a-input :placeholder="$t('pleaseEnter') + $t('processName')" <a-input :placeholder="$t('pleaseEnter') + $t('processName')"
:maxLength="50" :maxLength="50"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
v-decorator="['processName', validatorRules.processName]" /> v-decorator="['processName', validatorRules.processName]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -44,7 +44,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-decorator="['processDueDate']" v-decorator="['processDueDate']"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
style="width: 100%" /> style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -83,7 +83,7 @@
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
:rows="4" :rows="4"
v-decorator="['processDescription']" /> v-decorator="['processDescription']" />
</a-form-item> </a-form-item>
@@ -95,6 +95,7 @@
v-if="comp" v-if="comp"
ref="projectStandardTable" ref="projectStandardTable"
:project-id="projectId" :project-id="projectId"
:disabled="isLook"
:echo-data-source="currentStep === 1 ? projectDataSource : standardDataSource" /> :echo-data-source="currentStep === 1 ? projectDataSource : standardDataSource" />
</keep-alive> </keep-alive>
@@ -103,11 +104,11 @@
<div class="process-part-title">{{ middlePartTitle }}</div> <div class="process-part-title">{{ middlePartTitle }}</div>
<div class="table-operator" v-if="!showExpandTable"> <div class="table-operator" v-if="!showExpandTable">
<!--批量选择人员--> <!--批量选择人员-->
<a-button type="primary" ghost @click="batchSelector"> <a-button type="primary" ghost @click="batchSelector" :disabled="isLook">
{{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }} {{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }}
</a-button> </a-button>
<!--批量删除--> <!--批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel" v-if="isInit"> <a-button type="primary" icon="delete" ghost @click="batchDel" v-if="isInit" :disabled="isLook">
{{ $t('batchDelete') }} {{ $t('batchDelete') }}
</a-button> </a-button>
</div> </div>
@@ -145,6 +146,7 @@
:value="record.responsibleUnitLeaders" :value="record.responsibleUnitLeaders"
:placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.responsibleUnitHead')" :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.responsibleUnitHead')"
type="checkbox" type="checkbox"
:disabled="isLook"
@listChange="value => handleUserChange(value, record, index, 'responsibleUnitLeaders')" /> @listChange="value => handleUserChange(value, record, index, 'responsibleUnitLeaders')" />
<div class="table-text" v-else>{{ global.emptyLine }}</div> <div class="table-text" v-else>{{ global.emptyLine }}</div>
</template> </template>
@@ -162,6 +164,7 @@
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.moduleOwner')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.moduleOwner')"
type="checkbox" type="checkbox"
v-if="!record.notInvolved && record.canAssignFlag + '' === '1'" v-if="!record.notInvolved && record.canAssignFlag + '' === '1'"
:disabled="isLook"
@listChange="value => handleUserChange(value, record, index, 'moduleOwners')" /> @listChange="value => handleUserChange(value, record, index, 'moduleOwners')" />
<div v-else>{{ global.emptyLine }}</div> <div v-else>{{ global.emptyLine }}</div>
</template> </template>
@@ -179,18 +182,19 @@
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')"
type="radio" type="radio"
v-if="!record.notInvolved && record.canAssignFlag + '' === '1'" v-if="!record.notInvolved && record.canAssignFlag + '' === '1'"
:disabled="isLook"
@listChange="value => handleUserChange(value, record, index, 'designEngineers')" /> @listChange="value => handleUserChange(value, record, index, 'designEngineers')" />
<div v-else>{{ global.emptyLine }}</div> <div v-else>{{ global.emptyLine }}</div>
</template> </template>
<!--操作删除--> <!--操作删除-->
<template v-slot:action="{text, record}"> <template v-slot:action="{text, record}">
<a @click="handleDelete(record.tableRowKey)">{{ $t('delete') }}</a> <a @click="handleDelete(record.tableRowKey)" :disabled="isLook">{{ $t('delete') }}</a>
</template> </template>
<!--操作不涉及/不涉及原因--> <!--操作不涉及/不涉及原因-->
<template v-slot:notInvolved="{text, record}"> <template v-slot:notInvolved="{text, record}">
<a @click="handleUninvolved(record)" :disabled="record.canAssignFlag + '' !== '1'"> <a @click="handleUninvolved(record)" :disabled="record.canAssignFlag + '' !== '1' || isLook">
{{ {{
!record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved') !record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
}} }}
@@ -204,7 +208,7 @@
:columns="columns" :columns="columns"
:data-source="dataSource" :data-source="dataSource"
:pagination="ipagination" :pagination="ipagination"
:all-disabled="expandTableDisabled" :all-disabled="expandTableDisabled || isLook"
form-is-depend="evaluationFeedback" form-is-depend="evaluationFeedback"
:extra-form="extraForm" :extra-form="extraForm"
:scroll="{x: '100%'}" :scroll="{x: '100%'}"
@@ -232,7 +236,7 @@
:placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.evaluationFeedback')" :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.evaluationFeedback')"
:value="record.evaluationFeedback" :value="record.evaluationFeedback"
dict-code="assess_results" dict-code="assess_results"
:disabled="!!record.notInvolved" :disabled="!!record.notInvolved || isLook"
@change="value => handleEvaluationFeedBackChange(value, record, index)" /> @change="value => handleEvaluationFeedBackChange(value, record, index)" />
<template v-else> <template v-else>
@@ -255,6 +259,7 @@
:label="$t('workCenter.projectComplianceEvaluationProcess.ccPerson')"> :label="$t('workCenter.projectComplianceEvaluationProcess.ccPerson')">
<user-selection :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.ccPerson')" <user-selection :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.ccPerson')"
type="checkbox" type="checkbox"
:disabled="isLook"
:name-str="dispatchInfo.carbonCopyPersonnels_dictText" :name-str="dispatchInfo.carbonCopyPersonnels_dictText"
v-decorator="['carbonCopyPersonnels', validatorRules.carbonCopyPersonnels]" v-decorator="['carbonCopyPersonnels', validatorRules.carbonCopyPersonnels]"
@nameChange="handleCarbonCopyNameChange" /> @nameChange="handleCarbonCopyNameChange" />
@@ -274,11 +279,12 @@
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:rows="4" :rows="4"
:disabled="isLook"
v-decorator="['handleText', validatorRules.handleText]" /> v-decorator="['handleText', validatorRules.handleText]" />
</a-form-item> </a-form-item>
<!--附件--> <!--附件-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')"> <a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
<j-upload v-decorator="['handleFile']" return-id multiple /> <j-upload v-decorator="['handleFile']" return-id multiple :disabled="isLook" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
@@ -294,7 +300,7 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="detail-page-bottom-operate-box"> <div v-if="!isLook" class="detail-page-bottom-operate-box">
<!--转办--> <!--转办-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo"> <a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo">
{{ $t('turnTo') }} {{ $t('turnTo') }}
@@ -324,6 +330,16 @@
{{ $t('reject') }} {{ $t('reject') }}
</a-button> </a-button>
</div> </div>
<div v-else class="detail-page-bottom-operate-box">
<!--上一步-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('pre')" @click="handleLastStep">
{{ $t('workCenter.projectComplianceEvaluationProcess.lastStep') }}
</a-button>
<!--下一步-->
<a-button type="primary" :loading="loading" icon="arrow-down" v-if="btnList.includes('next')" @click="handleNextStep">
{{ $t('workCenter.projectComplianceEvaluationProcess.nextStep') }}
</a-button>
</div>
<!--选人--> <!--选人-->
<user-select-modal :type="userSelectType" ref="userSelectModal" @listChange="handleBatchSelectorOk" @change="continueTransfer" /> <user-select-modal :type="userSelectType" ref="userSelectModal" @listChange="handleBatchSelectorOk" @change="continueTransfer" />
@@ -344,7 +360,8 @@ import {
EvaluationResultType, EvaluationResultType,
ProcessKey, ProcessKey,
ProjectComplianceEvaluationProcessNode, ProjectComplianceEvaluationProcessNode,
StandardSource StandardSource,
ProcessType
} from '../../../enums/commonEnums' } from '../../../enums/commonEnums'
import JTable from '../../../components/jero/JTable' import JTable from '../../../components/jero/JTable'
import ProjectTable from './components/ProjectTable' import ProjectTable from './components/ProjectTable'
@@ -360,7 +377,9 @@ import {
queryProjectComplianceEvaluation, queryProjectComplianceEvaluation,
processTransfer, processTransfer,
agreeProjectComplianceEvaluation, agreeProjectComplianceEvaluation,
rejectProjectComplianceEvaluation rejectProjectComplianceEvaluation,
saveSnapShot,
getLookData
} from '../../../api/workCenter' } from '../../../api/workCenter'
import SplitClauseDetail from '../../documentTool/documentSplit/modules/SplitClauseDetail' import SplitClauseDetail from '../../documentTool/documentSplit/modules/SplitClauseDetail'
import moment from 'moment' import moment from 'moment'
@@ -640,7 +659,8 @@ export default {
}, },
businessId: null, businessId: null,
isTransfer: false, // 是否转办选人 isTransfer: false, // 是否转办选人
tableLoading: false tableLoading: false,
isLook: false // 是否是查看
} }
}, },
computed: { computed: {
@@ -897,28 +917,47 @@ export default {
} }
}, },
created () { created () {
if (this.$route.query.processInstanceId || this.$route.query.draftId) { if (this.$route.query.isLook + '' === '1') {
this.currentNode = this.$route.query.nodeId || ProjectComplianceEvaluationProcessNode.initiate.value // 是查看
this.isLook = true
// 设置当前节点
this.currentNode = this.$route.query.nodeId
// 人员信息全部不可选
this.initPersonInfoData(false)
// 查询数据
this.initProcessInfo() this.initProcessInfo()
} else { } else {
this.currentNode = ProjectComplianceEvaluationProcessNode.initiate.value if (this.$route.query.processInstanceId || this.$route.query.draftId) {
this.currentNode = this.$route.query.nodeId || ProjectComplianceEvaluationProcessNode.initiate.value
this.initProcessInfo()
} else {
this.currentNode = ProjectComplianceEvaluationProcessNode.initiate.value
}
this.getPersonInfoStructure(ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value, () => {
this.initPersonInfoData(this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value)
})
} }
this.getPersonInfoStructure(ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value, () => {
this.initPersonInfoData(this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value)
})
}, },
methods: { methods: {
/** /**
* 获取流程数据 * 获取流程数据
*/ */
initProcessInfo () { initProcessInfo () {
const params = { let params = {}
draftId: this.$route.query.draftId, let func
processInstanceId: this.$route.query.draftId ? null : this.$route.query.processInstanceId, if (this.isLook) {
taskId: this.$route.query.taskId params.snapshotId = this.$route.query.snapshotId
func = getLookData
} else {
params = {
draftId: this.$route.query.draftId,
processInstanceId: this.$route.query.draftId ? null : this.$route.query.processInstanceId,
taskId: this.$route.query.taskId
}
func = queryProjectComplianceEvaluation
} }
this.loading = true this.loading = true
queryProjectComplianceEvaluation(params).then(res => { func(params).then(res => {
if (res.success) { if (res.success) {
const { result = {} } = res const { result = {} } = res
this.approvalInfo = Object.assign({}, result.basicTaskInfoDTO) this.approvalInfo = Object.assign({}, result.basicTaskInfoDTO)
@@ -1399,6 +1438,26 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 保存快照
saveParamJsonStr (callback) {
// 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
const params = { ...processInfoForm, ...approvalInfoForm }
params.infoJsonStr = JSON.stringify(this.dealSaveJsonData())
params.taskId = this.$route.query.taskId
params.prcType = ProcessType.PROJECT_COMPLIANCE_EVALUATION.value
saveSnapShot(params).then(async res => {
if (res.success) {
callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
}
})
},
/** /**
* 提交 * 提交
*/ */
@@ -1422,20 +1481,34 @@ export default {
formData.infoJsonStr = JSON.stringify(saveJsonObj) formData.infoJsonStr = JSON.stringify(saveJsonObj)
} }
submitFunc = initiateProjectComplianceEvaluation submitFunc = initiateProjectComplianceEvaluation
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
} else { } else {
submitFunc = submitProjectComplianceEvaluation submitFunc = submitProjectComplianceEvaluation
// 保存快照后提交
this.saveParamJsonStr(() => {
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
} }
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
}, },
/** /**
* 转办 * 转办
@@ -1487,16 +1560,19 @@ export default {
return return
} }
this.loading = true this.loading = true
agreeProjectComplianceEvaluation(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeProjectComplianceEvaluation(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -1514,16 +1590,19 @@ export default {
return return
} }
this.loading = true this.loading = true
rejectProjectComplianceEvaluation(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectProjectComplianceEvaluation(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
handleTableChange (pagination) { handleTableChange (pagination) {
@@ -3,9 +3,9 @@
<div class="process-part-title">{{ $t('project') }}</div> <div class="process-part-title">{{ $t('project') }}</div>
<div class="table-operator"> <div class="table-operator">
<!-- 新增--> <!-- 新增-->
<a-button icon="plus" type="primary" @click="handleAdd">{{ $t('newlyAdded') }}</a-button> <a-button icon="plus" type="primary" @click="handleAdd" :disabled="disabled">{{ $t('newlyAdded') }}</a-button>
<!-- 批量删除--> <!-- 批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel">{{ $t('delete') }}</a-button> <a-button type="primary" icon="delete" ghost @click="batchDel" :disabled="disabled">{{ $t('delete') }}</a-button>
</div> </div>
<div> <div>
<j-table <j-table
@@ -41,6 +41,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -3,9 +3,9 @@
<div class="process-part-title">{{ $t('workCenter.projectComplianceEvaluationProcess.rDComplianceList') }}</div> <div class="process-part-title">{{ $t('workCenter.projectComplianceEvaluationProcess.rDComplianceList') }}</div>
<div class="table-operator"> <div class="table-operator">
<!-- 新增--> <!-- 新增-->
<a-button icon="plus" type="primary" @click="handleAdd">{{ $t('newlyAdded') }}</a-button> <a-button icon="plus" type="primary" @click="handleAdd" :disabled="disabled">{{ $t('newlyAdded') }}</a-button>
<!-- 批量删除--> <!-- 批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel">{{ $t('delete') }}</a-button> <a-button type="primary" icon="delete" ghost @click="batchDel" :disabled="disabled">{{ $t('delete') }}</a-button>
</div> </div>
<div> <div>
<j-table <j-table
@@ -25,6 +25,7 @@
<a-select :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.salvageListSource')" <a-select :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.salvageListSource')"
:value="record.decompositionOrderSource" :value="record.decompositionOrderSource"
style="width: 100%" style="width: 100%"
:disabled="disabled"
@change="value => handleSourceChange(value, record, index)"> @change="value => handleSourceChange(value, record, index)">
<a-select-option v-for="item in record.dictOptions" :key="item.value" :value="item.value" :disabled="item.disabled"> <a-select-option v-for="item in record.dictOptions" :key="item.value" :value="item.value" :disabled="item.disabled">
{{ item.text }} {{ item.text }}
@@ -60,6 +61,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -1,7 +1,7 @@
<template> <template>
<internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading"> <internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading">
<!-- 标题右侧tab --> <!-- 标题右侧tab -->
<template v-slot:titleRightCustom> <template v-slot:titleRightCustom v-if="!isLook">
<div class="table-operator-tab"> <div class="table-operator-tab">
<!--基础信息--> <!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''" <a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@@ -38,7 +38,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-decorator="['processDueDate']" v-decorator="['processDueDate']"
:disabled="!isInitial" :disabled="!isInitial || isLook"
style="width: 100%" /> style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -48,7 +48,7 @@
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:disabled="!isInitial" :disabled="!isInitial || isLook"
:rows="4" :rows="4"
v-decorator="['processDescription']" /> v-decorator="['processDescription']" />
</a-form-item> </a-form-item>
@@ -69,37 +69,40 @@
<initial-basic-service-info ref="standardList" <initial-basic-service-info ref="standardList"
:selected-standard="selectedStandard" :selected-standard="selectedStandard"
@source:change="handleSourceChange" @source:change="handleSourceChange"
@standard:change="handleStandardChange" /> @standard:change="handleStandardChange"
:disabled="isLook"/>
<!--业务分派信息--> <!--业务分派信息-->
<initial-assign-table ref="termList" <initial-assign-table ref="termList"
:selected-spilt-info-id="selectedSpiltInfoId" :selected-spilt-info-id="selectedSpiltInfoId"
:selected-standard="selectedStandard" :selected-standard="selectedStandard"
:display-data-source="dispatchDataSource" /> :display-data-source="dispatchDataSource"
:disabled="isLook"/>
</template> </template>
<!--部所主管级领导下发--> <!--部所主管级领导下发-->
<depart-leader-issue-table v-if="isDepartLeaderIssue" ref="termList" :display-data-source="dispatchDataSource" /> <depart-leader-issue-table v-if="isDepartLeaderIssue" ref="termList" :display-data-source="dispatchDataSource" :disabled="isLook" />
<!--模块责任人分发--> <!--模块责任人分发-->
<module-owner-issue-table v-if="isModuleOwnerIssue" ref="termList" :display-data-source="dispatchDataSource" /> <module-owner-issue-table v-if="isModuleOwnerIssue" ref="termList" :display-data-source="dispatchDataSource" :disabled="isLook" />
<!--设计工程师评估--> <!--设计工程师评估-->
<design-engineer-assess v-if="isDesignEngineerAssess" <design-engineer-assess v-if="isDesignEngineerAssess"
ref="asyncTermList" ref="asyncTermList"
:display-data-source="dispatchDataSource" :display-data-source="dispatchDataSource"
:pre-node-user="preNodeUser" /> :pre-node-user="preNodeUser"
:disabled="isLook"/>
<!--模块负责人评审--> <!--模块负责人评审-->
<module-owner-approve-table v-if="isModuleOwnerApprove" ref="termList" :display-data-source="dispatchDataSource" /> <module-owner-approve-table v-if="isModuleOwnerApprove" ref="termList" :display-data-source="dispatchDataSource" />
<!--部所主管级领导审批--> <!--部所主管级领导审批-->
<depart-leader-approve-table v-if="isDepartLeaderApprove" ref="termList" :display-data-source="dispatchDataSource" /> <depart-leader-approve-table v-if="isDepartLeaderApprove" ref="termList" :display-data-source="dispatchDataSource" :disabled="isLook" />
<!--法规工程师审批--> <!--法规工程师审批-->
<regulatory-engineer-approval v-if="isRegulatoryEngineerApproval" ref="termList" :display-data-source="dispatchDataSource" /> <regulatory-engineer-approval v-if="isRegulatoryEngineerApproval" ref="termList" :display-data-source="dispatchDataSource" :disabled="isLook" />
<!--设计工程师补充立项项目号--> <!--设计工程师补充立项项目号-->
<design-engineer-write-project v-if="isDesignEngineerWriteProject" ref="termList" :display-data-source="dispatchDataSource" /> <design-engineer-write-project v-if="isDesignEngineerWriteProject" ref="termList" :display-data-source="dispatchDataSource" :disabled="isLook" />
<!--流程审批信息--> <!--流程审批信息-->
<div class="process-part-title">{{ $t('processApprovalInformation') }}</div> <div class="process-part-title">{{ $t('processApprovalInformation') }}</div>
@@ -110,11 +113,12 @@
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:rows="4" :rows="4"
:disabled="isLook"
v-decorator="['handleText', validatorRules.handleText]" /> v-decorator="['handleText', validatorRules.handleText]" />
</a-form-item> </a-form-item>
<!--附件--> <!--附件-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')"> <a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
<j-upload v-decorator="['handleFile']" return-id multiple /> <j-upload v-decorator="['handleFile']" return-id multiple :disabled="isLook" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
@@ -132,7 +136,7 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="detail-page-bottom-operate-box"> <div v-if="!isLook" class="detail-page-bottom-operate-box">
<!--转办 审批节点存在--> <!--转办 审批节点存在-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo"> <a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo">
{{ $t('turnTo') }} {{ $t('turnTo') }}
@@ -165,7 +169,7 @@ import PersonnelInfo from '../../../components/PersonnelInfo'
import InternalDetailPage from '../../../components/InternalDetailPage' import InternalDetailPage from '../../../components/InternalDetailPage'
import ProcessDetailList from '../../../components/ProcessDetailList' import ProcessDetailList from '../../../components/ProcessDetailList'
import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin' import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin'
import { ProcessKey, StandardComplianceNodes, StandardSource } from '../../../enums/commonEnums' import { ProcessKey, StandardComplianceNodes, StandardSource, ProcessType } from '../../../enums/commonEnums'
import InitialBasicServiceInfo from './components/InitialBasicServiceInfo' import InitialBasicServiceInfo from './components/InitialBasicServiceInfo'
import InitialAssignTable from './components/InitialAssignTable' import InitialAssignTable from './components/InitialAssignTable'
import DepartLeaderIssueTable from './components/DepartLeaderIssueTable' import DepartLeaderIssueTable from './components/DepartLeaderIssueTable'
@@ -182,7 +186,9 @@ import {
queryStandardCompliance, queryStandardCompliance,
processTransfer, processTransfer,
agreeStandardCompliance, agreeStandardCompliance,
rejectStandardCompliance rejectStandardCompliance,
saveSnapShot,
getLookData
} from '../../../api/workCenter' } from '../../../api/workCenter'
import UserSelectModal from '../../../components/selection/UserSelectModal' import UserSelectModal from '../../../components/selection/UserSelectModal'
@@ -245,7 +251,8 @@ export default {
dispatchDataSource: [], // 业务分派信息的数据 dispatchDataSource: [], // 业务分派信息的数据
currentNodePrefix: null, // 判断节点的前缀 currentNodePrefix: null, // 判断节点的前缀
preNodeUser: null, // 上一节点处理人 preNodeUser: null, // 上一节点处理人
disabledBtnClick: false disabledBtnClick: false,
isLook: false // 是否是查看
} }
}, },
computed: { computed: {
@@ -287,29 +294,48 @@ export default {
} }
}, },
created () { created () {
this.getPersonInfoStructure(ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value, () => { if (this.$route.query.isLook + '' === '1') {
if (this.$route.query.processInstanceId || this.$route.query.draftId) { // 是查看
this.currentNode = this.$route.query.nodeId || StandardComplianceNodes.initial.value this.isLook = true
this.initProcessData() // 设置当前节点
this.currentNode = this.$route.query.nodeId
// 人员信息全部不可选
this.initPersonInfoData(false)
// 查询数据
this.initProcessData()
} else {
this.getPersonInfoStructure(ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value, () => {
if (this.$route.query.processInstanceId || this.$route.query.draftId) {
this.currentNode = this.$route.query.nodeId || StandardComplianceNodes.initial.value
this.initProcessData()
} else { } else {
this.currentNode = StandardComplianceNodes.initial.value this.currentNode = StandardComplianceNodes.initial.value
} }
const key = StandardComplianceNodes.keyOfValueByLike(this.currentNode) const key = StandardComplianceNodes.keyOfValueByLike(this.currentNode)
this.btnList = StandardComplianceNodes[key].btn || [] this.btnList = StandardComplianceNodes[key].btn || []
this.currentNodePrefix = StandardComplianceNodes[key].value this.currentNodePrefix = StandardComplianceNodes[key].value
this.initPersonInfoData() this.initPersonInfoData()
}) })
}
}, },
methods: { methods: {
initProcessData () { initProcessData () {
this.loading = true this.loading = true
const params = { let params = {}
taskId: this.$route.query.taskId, let func
processInstanceId: this.$route.query.processInstanceId, if (this.isLook) {
draftId: this.$route.query.draftId params.snapshotId = this.$route.query.snapshotId
func = getLookData
} else {
params = {
taskId: this.$route.query.taskId,
processInstanceId: this.$route.query.processInstanceId,
draftId: this.$route.query.draftId
}
func = queryStandardCompliance
} }
queryStandardCompliance(params).then(res => { func(params).then(res => {
if (res.success) { if (res.success) {
let { result = {} } = res let { result = {} } = res
if (result.infoJsonStr) { if (result.infoJsonStr) {
@@ -507,6 +533,27 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 保存快照
async saveParamJsonStr (callback) {
// 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
const params = { ...processInfoForm, ...approvalInfoForm }
const saveForm = await this.dealSaveFormData()
params.infoJsonStr = JSON.stringify(saveForm)
params.taskId = this.$route.query.taskId
params.prcType = ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value
saveSnapShot(params).then(async res => {
if (res.success) {
callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
}
})
},
/** /**
* 提交 * 提交
*/ */
@@ -531,17 +578,34 @@ export default {
submitFunc = submitStandardCompliance submitFunc = submitStandardCompliance
} }
this.loading = true this.loading = true
submitFunc(formData).then(res => { if (this.currentNode.indexOf(StandardComplianceNodes.initial.value) === 0) {
if (res.success) { submitFunc(formData).then(res => {
this.$message.success(res.message) if (res.success) {
this.goBack() this.$message.success(res.message)
} else { this.goBack()
this.$message.warning(res.message) } else {
this.disabledBtnClick = false this.$message.warning(res.message)
} this.disabledBtnClick = false
}).finally(() => { }
this.loading = false }).finally(() => {
}) this.loading = false
})
} else {
// 保存快照后提交
this.saveParamJsonStr(() => {
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
}
}, },
/** /**
* 同意 * 同意
@@ -562,16 +626,19 @@ export default {
return return
} }
this.loading = true this.loading = true
agreeStandardCompliance(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeStandardCompliance(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -590,16 +657,19 @@ export default {
return return
} }
this.loading = true this.loading = true
rejectStandardCompliance(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectStandardCompliance(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
toStandardDetail () { toStandardDetail () {
@@ -15,7 +15,7 @@
<!--是否立项--> <!--是否立项-->
<template v-slot:projectApprovalFlag="{text,record,index}"> <template v-slot:projectApprovalFlag="{text,record,index}">
<j-dict-select-tag v-model="record.projectApprovalFlag" dict-code="yn" style="width: 100%" /> <j-dict-select-tag v-model="record.projectApprovalFlag" dict-code="yn" :disabled="disabled" style="width: 100%" />
</template> </template>
<!--条文内容--> <!--条文内容-->
@@ -54,6 +54,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -4,7 +4,7 @@
<div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div> <div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div>
<div class="table-operator"> <div class="table-operator">
<!--批量选择人员--> <!--批量选择人员-->
<a-button type="primary" @click="handleSelectPerson"> <a-button type="primary" @click="handleSelectPerson" :disabled="disabled">
{{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }} {{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }}
</a-button> </a-button>
</div> </div>
@@ -31,6 +31,7 @@
v-model="record.moduleOwner" v-model="record.moduleOwner"
:name-str="record.moduleOwner_dictText" :name-str="record.moduleOwner_dictText"
v-if="!record.notInvolved" v-if="!record.notInvolved"
:disabled="disabled"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.moduleOwner')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.moduleOwner')"
@nameChange="nameStr => record.moduleOwner_dictText = nameStr" /> @nameChange="nameStr => record.moduleOwner_dictText = nameStr" />
<div v-else>{{ global.emptyLine }}</div> <div v-else>{{ global.emptyLine }}</div>
@@ -47,7 +48,7 @@
<!--操作--> <!--操作-->
<template v-slot:action="{text,record,index}"> <template v-slot:action="{text,record,index}">
<div class="action-span-cell"> <div class="action-span-cell">
<a @click="handleUninvolved(record, index)"> <a :disabled="disabled" @click="handleUninvolved(record, index)">
{{ {{
!record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved') !record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
}} }}
@@ -84,6 +85,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -47,6 +47,7 @@
:options="resultOptions" :options="resultOptions"
style="width: 100%" style="width: 100%"
:value="record.assessResults" :value="record.assessResults"
:disabled="disabled"
@change="value => handleEvaluationResultChange(value, record, record.dataSourceIndex)" /> @change="value => handleEvaluationResultChange(value, record, record.dataSourceIndex)" />
</template> </template>
@@ -62,6 +63,7 @@
prop="isRelate"> prop="isRelate">
<j-dict-select-tag v-model="record.isRelate" <j-dict-select-tag v-model="record.isRelate"
dict-code="yn" dict-code="yn"
:disabled="disabled"
type="radio" /> type="radio" />
</a-form-model-item> </a-form-model-item>
<!--不符合车型系列--> <!--不符合车型系列-->
@@ -71,6 +73,7 @@
prop="modelSeries" prop="modelSeries"
v-if="record.isRelate === yesValue"> v-if="record.isRelate === yesValue">
<j-multi-select-tag v-model="record.modelSeries" <j-multi-select-tag v-model="record.modelSeries"
:disabled="disabled"
dict-code="model_series" /> dict-code="model_series" />
</a-form-model-item> </a-form-model-item>
</template> </template>
@@ -80,7 +83,7 @@
:labelCol="{span: 4}" :labelCol="{span: 4}"
:wrapperCol="{span: 18}" :wrapperCol="{span: 18}"
prop="description"> prop="description">
<a-input type="textarea" :maxLength="500" v-model="record.description" /> <a-input type="textarea" :maxLength="500" :disabled="disabled" v-model="record.description" />
</a-form-model-item> </a-form-model-item>
<!--佐证材料--> <!--佐证材料-->
<a-form-model-item :label="$t('projectLibrary.specialProjectLibrary.supportingMaterial')" <a-form-model-item :label="$t('projectLibrary.specialProjectLibrary.supportingMaterial')"
@@ -90,6 +93,7 @@
<j-upload return-id <j-upload return-id
multiple multiple
v-model="record.fileId" v-model="record.fileId"
:disabled="disabled"
file-type="pdf,doc,docx,pptx,ppt,jpg,jpeg,png,xls,xlsx,bmp" /> file-type="pdf,doc,docx,pptx,ppt,jpg,jpeg,png,xls,xlsx,bmp" />
</a-form-model-item> </a-form-model-item>
</template> </template>
@@ -127,6 +131,11 @@ export default {
type: String, type: String,
required: false, required: false,
default: '' default: ''
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -15,7 +15,7 @@
<!--操作--> <!--操作-->
<template v-slot:action="{text, record, index}"> <template v-slot:action="{text, record, index}">
<a @click="handleEdit(record)">{{ $t('edit') }}</a> <a @click="handleEdit(record)" :disabled="disabled">{{ $t('edit') }}</a>
</template> </template>
</j-table> </j-table>
</div> </div>
@@ -42,6 +42,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -4,11 +4,11 @@
<div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div> <div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div>
<div class="table-operator"> <div class="table-operator">
<!--批量选择人员--> <!--批量选择人员-->
<a-button type="primary" @click="handleSelectPerson"> <a-button type="primary" @click="handleSelectPerson" :disabled="disabled">
{{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }} {{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }}
</a-button> </a-button>
<!--批量删除--> <!--批量删除-->
<a-button type="primary" ghost @click="batchDelete"> <a-button type="primary" ghost @click="batchDelete" :disabled="disabled">
{{ $t('batchDelete') }} {{ $t('batchDelete') }}
</a-button> </a-button>
</div> </div>
@@ -37,6 +37,7 @@
v-model="record.responsibleUnitLeader" v-model="record.responsibleUnitLeader"
:name-str="record.responsibleUnitLeader_dictText" :name-str="record.responsibleUnitLeader_dictText"
type="checkbox" type="checkbox"
:disabled="disabled"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.responsibleUnitContactPerson')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.responsibleUnitContactPerson')"
@nameChange="nameStr => record.responsibleUnitLeader_dictText = nameStr" /> @nameChange="nameStr => record.responsibleUnitLeader_dictText = nameStr" />
</template> </template>
@@ -52,7 +53,7 @@
<!--操作--> <!--操作-->
<template v-slot:action="{text,record,index}"> <template v-slot:action="{text,record,index}">
<div class="action-span-cell"> <div class="action-span-cell">
<a :disabled="index === 0 && dataSource.length === 1" @click="handleDelete(record.rowKey)">{{ $t('delete') }}</a> <a :disabled="index === 0 && dataSource.length === 1 || disabled" @click="handleDelete(record.rowKey)">{{ $t('delete') }}</a>
</div> </div>
</template> </template>
</j-table> </j-table>
@@ -97,6 +98,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
watch: { watch: {
@@ -4,11 +4,11 @@
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div> <div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
<div class="table-operator"> <div class="table-operator">
<!--添加标准--> <!--添加标准-->
<a-button type="primary" @click="handleAdd"> <a-button type="primary" @click="handleAdd" :disabled="disabled">
{{ $t('workCenter.standardCompliance.addStandard') }} {{ $t('workCenter.standardCompliance.addStandard') }}
</a-button> </a-button>
<!--删除--> <!--删除-->
<a-button type="primary" ghost @click="handleDelete"> <a-button type="primary" ghost @click="handleDelete" :disabled="disabled">
{{ $t('delete') }} {{ $t('delete') }}
</a-button> </a-button>
</div> </div>
@@ -36,6 +36,7 @@
v-model="record.decompositionOrderSource" v-model="record.decompositionOrderSource"
:getPopupContainer="triggerNode=> triggerNode.parentNode" :getPopupContainer="triggerNode=> triggerNode.parentNode"
style="width: 100%" style="width: 100%"
:disabled="disabled"
@change="value => handleSourceChange(value, record)"> @change="value => handleSourceChange(value, record)">
<a-select-option v-for="item in record.decompositionOrderSourceVOList" <a-select-option v-for="item in record.decompositionOrderSourceVOList"
:key="item.value" :key="item.value"
@@ -71,6 +72,11 @@ export default {
default: () => { default: () => {
return {} return {}
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
watch: { watch: {
@@ -4,7 +4,7 @@
<div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div> <div class="process-part-title">{{ $t('workCenter.dispatchInformation') }}</div>
<div class="table-operator"> <div class="table-operator">
<!--批量选择人员--> <!--批量选择人员-->
<a-button type="primary" @click="handleSelectPerson"> <a-button type="primary" @click="handleSelectPerson" :disabled="disabled">
{{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }} {{ $t('workCenter.projectComplianceEvaluationProcess.batchSelector') }}
</a-button> </a-button>
</div> </div>
@@ -32,6 +32,7 @@
:name-str="record.designEngineer_dictText" :name-str="record.designEngineer_dictText"
v-if="!record.notInvolved" v-if="!record.notInvolved"
type="checkbox" type="checkbox"
:disabled="disabled"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')"
@nameChange="nameStr => record.designEngineer_dictText = nameStr" /> @nameChange="nameStr => record.designEngineer_dictText = nameStr" />
<div v-else>{{ global.emptyLine }}</div> <div v-else>{{ global.emptyLine }}</div>
@@ -48,7 +49,7 @@
<!--操作--> <!--操作-->
<template v-slot:action="{text,record}"> <template v-slot:action="{text,record}">
<div class="action-span-cell"> <div class="action-span-cell">
<a @click="handleUninvolved(record)">{{ <a :disabled="disabled" @click="handleUninvolved(record)">{{
!record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved') !record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
}}</a> }}</a>
</div> </div>
@@ -83,6 +84,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -5,11 +5,11 @@
<div> <div>
<div class="table-operator"> <div class="table-operator">
<!--批量选择设计工程师--> <!--批量选择设计工程师-->
<a-button type="primary" @click="handleSelectPerson('designEngineer')"> <a-button type="primary" @click="handleSelectPerson('designEngineer')" :disabled="disabled">
{{ $t('workCenter.standardCompliance.batchSelectDesignEngineer') }} {{ $t('workCenter.standardCompliance.batchSelectDesignEngineer') }}
</a-button> </a-button>
<!--批量选择抄送人员--> <!--批量选择抄送人员-->
<a-button type="primary" @click="handleSelectPerson('carbonCopyPersonnels')"> <a-button type="primary" @click="handleSelectPerson('carbonCopyPersonnels')" :disabled="disabled">
{{ $t('workCenter.standardCompliance.batchSelectCCPersonnel') }} {{ $t('workCenter.standardCompliance.batchSelectCCPersonnel') }}
</a-button> </a-button>
</div> </div>
@@ -45,7 +45,7 @@
<!--是否立项--> <!--是否立项-->
<template v-slot:projectApprovalFlag="{text,record}"> <template v-slot:projectApprovalFlag="{text,record}">
<j-dict-select-tag v-model="record.projectApprovalFlag" dict-code="yn" style="width: 100%" /> <j-dict-select-tag v-model="record.projectApprovalFlag" dict-code="yn" :disabled="disabled" style="width: 100%" />
</template> </template>
<!--设计工程师--> <!--设计工程师-->
@@ -58,6 +58,7 @@
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')"
style="width: 100%" style="width: 100%"
type="radio" type="radio"
:disabled="disabled"
@nameChange="nameStr => record.designEngineer_dictText = nameStr" /> @nameChange="nameStr => record.designEngineer_dictText = nameStr" />
<div v-else>{{ global.emptyLine }}</div> <div v-else>{{ global.emptyLine }}</div>
</template> </template>
@@ -70,6 +71,7 @@
:placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.ccPerson')" :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.ccPerson')"
style="width: 100%" style="width: 100%"
type="checkbox" type="checkbox"
:disabled="disabled"
@nameChange="nameStr => record.carbonCopyPersonnels_dictText = nameStr" /> @nameChange="nameStr => record.carbonCopyPersonnels_dictText = nameStr" />
<!--<div>{{ global.emptyLine }}</div>--> <!--<div>{{ global.emptyLine }}</div>-->
</template> </template>
@@ -127,6 +129,11 @@ export default {
default: () => { default: () => {
return [] return []
} }
},
disabled: {
type: Boolean,
required: false,
default: false
} }
}, },
data () { data () {
@@ -1,7 +1,7 @@
<template> <template>
<internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading"> <internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading">
<!-- 标题右侧tab --> <!-- 标题右侧tab -->
<template v-slot:titleRightCustom> <template v-slot:titleRightCustom v-if="!isLook">
<div class="table-operator-tab"> <div class="table-operator-tab">
<!--基础信息--> <!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''" <a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@@ -38,7 +38,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-decorator="['processDueDate']" v-decorator="['processDueDate']"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
style="width: 100%" /> style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -48,7 +48,7 @@
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
:rows="4" :rows="4"
v-decorator="['processDescription']" /> v-decorator="['processDescription']" />
</a-form-item> </a-form-item>
@@ -62,7 +62,7 @@
<!--标准编号--> <!--标准编号-->
<a-form-item :label="$t('standardNumber')"> <a-form-item :label="$t('standardNumber')">
<standard-selection v-decorator="['standardNumber', validatorRules.standardNumber]" <standard-selection v-decorator="['standardNumber', validatorRules.standardNumber]"
:disabled="basicServiceInfoDisabled" :disabled="basicServiceInfoDisabled || isLook"
:placeholder="$t('pleaseSelect') + $t('standardNumber')" :placeholder="$t('pleaseSelect') + $t('standardNumber')"
:can-selected-source="[StandardSource.DOMESTIC.value]" :can-selected-source="[StandardSource.DOMESTIC.value]"
type="radio" type="radio"
@@ -99,7 +99,7 @@
<div class="form-flex-item custom-flex-form-item"> <div class="form-flex-item custom-flex-form-item">
<!--相关文件--> <!--相关文件-->
<a-form-item :label="$t('workCenter.standardConsultationProcess.relevantDocument')"> <a-form-item :label="$t('workCenter.standardConsultationProcess.relevantDocument')">
<j-upload multiple return-id v-decorator="['relatedFile', validatorRules.relatedFile]" :disabled="basicServiceInfoDisabled" /> <j-upload multiple return-id v-decorator="['relatedFile', validatorRules.relatedFile]" :disabled="basicServiceInfoDisabled || isLook" />
</a-form-item> </a-form-item>
</div> </div>
<div class="form-flex-item custom-flex-form-item"> <div class="form-flex-item custom-flex-form-item">
@@ -108,7 +108,7 @@
<j-date show-type="day" <j-date show-type="day"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.endDate')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.endDate')"
v-decorator="['consultationDueDate', validatorRules.consultationDueDate]" v-decorator="['consultationDueDate', validatorRules.consultationDueDate]"
:disabled="basicServiceInfoDisabled" :disabled="basicServiceInfoDisabled || isLook"
:disabled-date="consultationDueDateDisabledDate" /> :disabled-date="consultationDueDateDisabledDate" />
</a-form-item> </a-form-item>
</div> </div>
@@ -128,6 +128,7 @@
type="select" type="select"
dict-code="sender_type" dict-code="sender_type"
:triggerChange="false" :triggerChange="false"
:disabled="isLook"
@change="handleSenderTypeChange" /> @change="handleSenderTypeChange" />
</a-form-item> </a-form-item>
</div> </div>
@@ -139,6 +140,7 @@
<user-selection v-decorator="['moduleOwnerId', validatorRules.moduleOwnerId]" <user-selection v-decorator="['moduleOwnerId', validatorRules.moduleOwnerId]"
:name-str="dispatchInfo.moduleOwnerId_dictText" :name-str="dispatchInfo.moduleOwnerId_dictText"
type="checkbox" type="checkbox"
:disabled="isLook"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.moduleOwner')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.moduleOwner')"
@nameChange="handleModuleOwnerNameChange" /> @nameChange="handleModuleOwnerNameChange" />
</a-form-item> </a-form-item>
@@ -151,6 +153,7 @@
<user-selection v-decorator="['designEngineerId', validatorRules.designEngineerId]" <user-selection v-decorator="['designEngineerId', validatorRules.designEngineerId]"
:name-str="dispatchInfo.designEngineerId_dictText" :name-str="dispatchInfo.designEngineerId_dictText"
type="checkbox" type="checkbox"
:disabled="isLook"
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')" :placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')"
@nameChange="handleDesignEngineerNameChange" /> @nameChange="handleDesignEngineerNameChange" />
</a-form-item> </a-form-item>
@@ -166,9 +169,9 @@
<template v-if="currentNode.indexOf(ConsultationProcess.designEngineerFillIn.value) === 0"> <template v-if="currentNode.indexOf(ConsultationProcess.designEngineerFillIn.value) === 0">
<div class="table-operator"> <div class="table-operator">
<!-- 新增--> <!-- 新增-->
<a-button icon="plus" type="primary" @click="handleAdd">{{ $t('newlyAdded') }}</a-button> <a-button icon="plus" type="primary" :disabled="isLook" @click="handleAdd">{{ $t('newlyAdded') }}</a-button>
<!-- 批量删除--> <!-- 批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel">{{ $t('delete') }}</a-button> <a-button type="primary" icon="delete" ghost :disabled="isLook" @click="batchDel">{{ $t('delete') }}</a-button>
</div> </div>
<div> <div>
<j-table <j-table
@@ -190,7 +193,7 @@
<!-- 操作栏 --> <!-- 操作栏 -->
<div slot="action" slot-scope="{record, index}" class="action-span-cell"> <div slot="action" slot-scope="{record, index}" class="action-span-cell">
<a @click="handleEdit(record, index)" class="table-ope-btn">{{ $t('edit') }}</a> <a @click="handleEdit(record, index)" class="table-ope-btn" :disabled="isLook">{{ $t('edit') }}</a>
</div> </div>
</j-table> </j-table>
@@ -201,7 +204,7 @@
<template v-if="showAuditTable"> <template v-if="showAuditTable">
<div class="table-operator"> <div class="table-operator">
<!--批量操作汇总节点才有的按钮--> <!--批量操作汇总节点才有的按钮-->
<a-button type="primary" icon="delete" ghost @click="batchOperate" v-if="isSummaryNode"> <a-button type="primary" icon="delete" ghost @click="batchOperate" v-if="isSummaryNode" :disabled="isLook">
{{ $t('batchOperation') }} {{ $t('batchOperation') }}
</a-button> </a-button>
</div> </div>
@@ -215,7 +218,7 @@
:locale="tableLocale" :locale="tableLocale"
:class="{'empty-no-opinion': tableEmptyShowNoOpinion}" :class="{'empty-no-opinion': tableEmptyShowNoOpinion}"
:extra-form="collectExtraForm" :extra-form="collectExtraForm"
:all-disabled="disabledConsultationList" :all-disabled="disabledConsultationList || isLook"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"> :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
<!--表头插槽 start--> <!--表头插槽 start-->
@@ -238,6 +241,7 @@
:triggerChange="false" :triggerChange="false"
class="opinion-select" class="opinion-select"
dict-code="consultation_opinion" dict-code="consultation_opinion"
:disabled="isLook"
:placeholder="$t('pleaseSelect') + $t('workCenter.esInspectionPlan.opinion')" :placeholder="$t('pleaseSelect') + $t('workCenter.esInspectionPlan.opinion')"
@change="value => {handleOpinionChange(value, index, record)}" /> @change="value => {handleOpinionChange(value, index, record)}" />
</template> </template>
@@ -254,11 +258,12 @@
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:rows="4" :rows="4"
:disabled="isLook"
v-decorator="['handleText', validatorRules.handleText]" /> v-decorator="['handleText', validatorRules.handleText]" />
</a-form-item> </a-form-item>
<!--附件--> <!--附件-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')"> <a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
<j-upload v-decorator="['handleFile']" return-id multiple /> <j-upload v-decorator="['handleFile']" return-id multiple :disabled="isLook" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
@@ -275,7 +280,7 @@
</process-detail-list> </process-detail-list>
</div> </div>
<div class="detail-page-bottom-operate-box"> <div v-if="!isLook" class="detail-page-bottom-operate-box">
<!--转办 审批节点存在--> <!--转办 审批节点存在-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo"> <a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo">
{{ $t('turnTo') }} {{ $t('turnTo') }}
@@ -314,7 +319,7 @@
<script> <script>
import InternalDetailPage from '../../../components/InternalDetailPage.vue' import InternalDetailPage from '../../../components/InternalDetailPage.vue'
import StandardSelection from '../../../components/selection/StandardSelection.vue' import StandardSelection from '../../../components/selection/StandardSelection.vue'
import { ConsultationProcess, SenderType, ProcessKey, StandardSource } from '../../../enums/commonEnums' import { ConsultationProcess, SenderType, ProcessKey, StandardSource, ProcessType } from '../../../enums/commonEnums'
import UserSelection from '../../../components/selection/UserSelection' import UserSelection from '../../../components/selection/UserSelection'
import JTable from '../../../components/jero/JTable' import JTable from '../../../components/jero/JTable'
import ConsultationModal from './modules/ConsultationModal' import ConsultationModal from './modules/ConsultationModal'
@@ -332,7 +337,9 @@ import {
submitConsultationProcess, submitConsultationProcess,
transferConsultationProcess, transferConsultationProcess,
agreeConsultationProcess, agreeConsultationProcess,
rejectConsultationProcess rejectConsultationProcess,
saveSnapShot,
getLookData
} from '../../../api/workCenter' } from '../../../api/workCenter'
import UserSelectModal from '../../../components/selection/UserSelectModal' import UserSelectModal from '../../../components/selection/UserSelectModal'
import { getFileInfo } from '../../../api/api' import { getFileInfo } from '../../../api/api'
@@ -755,7 +762,8 @@ export default {
tableEmptyShowNoOpinion: false, // 表格暂无数据文本在汇总节点显示无意见 tableEmptyShowNoOpinion: false, // 表格暂无数据文本在汇总节点显示无意见
tableLocale: { tableLocale: {
emptyText: <a-empty image={Empty.PRESENTED_IMAGE_SIMPLE}><span slot="description"> {this.$t('noData')} </span></a-empty> emptyText: <a-empty image={Empty.PRESENTED_IMAGE_SIMPLE}><span slot="description"> {this.$t('noData')} </span></a-empty>
} },
isLook: false // 是否是查看
} }
}, },
computed: { computed: {
@@ -831,36 +839,55 @@ export default {
} }
}, },
created () { created () {
// 获取人员信息数据 if (this.$route.query.isLook + '' === '1') {
this.getPersonInfoStructure(this.processKey, () => { // 是查看
// 有流程id或者草稿id点进来的 this.isLook = true
if (this.$route.query.processInstanceId || this.$route.query.draftId) { // 设置当前节点
this.currentNode = this.$route.query.nodeId || ConsultationProcess.initiate.value this.currentNode = this.$route.query.nodeId
this.initPersonInfoData(this.currentNode.indexOf(ConsultationProcess.initiate.value) === 0) // 人员信息全部不可选
this.initProcessDetailData() this.initPersonInfoData(false)
} else { // 查询数据
this.currentNode = ConsultationProcess.initiate.value this.initProcessDetailData()
this.initPersonInfoData(this.currentNode.indexOf(ConsultationProcess.initiate.value) === 0) } else {
} // 获取人员信息数据
// 找不到这个节点默认使用审批节点页面及按钮,发起除外 this.getPersonInfoStructure(this.processKey, () => {
this.nodeEnumsKey = this.currentNode ? ConsultationProcess.keyOfValueByLike(this.currentNode) || 'regulatoryEngineerApproval' : 'initiate' // 有流程id或者草稿id点进来的
this.currentNodePrefix = ConsultationProcess[this.nodeEnumsKey].value if (this.$route.query.processInstanceId || this.$route.query.draftId) {
this.btnList = ConsultationProcess[this.nodeEnumsKey].btn this.currentNode = this.$route.query.nodeId || ConsultationProcess.initiate.value
}) this.initPersonInfoData(this.currentNode.indexOf(ConsultationProcess.initiate.value) === 0)
this.initProcessDetailData()
} else {
this.currentNode = ConsultationProcess.initiate.value
this.initPersonInfoData(this.currentNode.indexOf(ConsultationProcess.initiate.value) === 0)
}
// 找不到这个节点默认使用审批节点页面及按钮,发起除外
this.nodeEnumsKey = this.currentNode ? ConsultationProcess.keyOfValueByLike(this.currentNode) || 'regulatoryEngineerApproval' : 'initiate'
this.currentNodePrefix = ConsultationProcess[this.nodeEnumsKey].value
this.btnList = ConsultationProcess[this.nodeEnumsKey].btn
})
}
}, },
methods: { methods: {
initProcessDetailData () { initProcessDetailData () {
this.loading = true this.loading = true
const params = { let params = {}
taskId: this.$route.query.taskId, let func
projectId: this.$route.query.projectId if (this.isLook) {
} params.snapshotId = this.$route.query.snapshotId
if (this.$route.query.draftId) { func = getLookData
params.draftId = this.$route.query.draftId
} else { } else {
params.processInstanceId = this.$route.query.processInstanceId params = {
taskId: this.$route.query.taskId,
projectId: this.$route.query.projectId
}
if (this.$route.query.draftId) {
params.draftId = this.$route.query.draftId
} else {
params.processInstanceId = this.$route.query.processInstanceId
}
func = queryConsultationProcessDetail
} }
queryConsultationProcessDetail(params).then(async res => { func(params).then(async res => {
if (res.success) { if (res.success) {
let result = res.result || {} let result = res.result || {}
// 草稿有数据需要从草稿里取 // 草稿有数据需要从草稿里取
@@ -1193,6 +1220,27 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 保存快照
async saveParamJsonStr (callback) {
// 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
const params = { ...processInfoForm, ...approvalInfoForm }
const saveForm = await this.dealFormData(true)
params.infoJsonStr = JSON.stringify(saveForm)
params.taskId = this.$route.query.taskId
params.prcType = ProcessType.CONSULTATION.value
saveSnapShot(params).then(async res => {
if (res.success) {
callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
}
})
},
/** /**
* 提交 * 提交
*/ */
@@ -1214,20 +1262,34 @@ export default {
if (saveForm) { if (saveForm) {
formData.infoJsonStr = JSON.stringify(saveForm) formData.infoJsonStr = JSON.stringify(saveForm)
} }
func(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
} else { } else {
func = submitConsultationProcess func = submitConsultationProcess
// 保存快照后提交
this.saveParamJsonStr(() => {
func(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
} }
func(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
}, },
/** /**
* 同意 * 同意
@@ -1248,16 +1310,19 @@ export default {
} }
this.loading = true this.loading = true
formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空
agreeConsultationProcess(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeConsultationProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -1276,16 +1341,19 @@ export default {
} }
this.loading = true this.loading = true
formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空
rejectConsultationProcess(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectConsultationProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -1,7 +1,7 @@
<template> <template>
<internal-detail-page :title="pageTitle" :content-padding="0" :loading="loading"> <internal-detail-page :title="pageTitle" :content-padding="0" :loading="loading">
<!-- 标题右侧tab --> <!-- 标题右侧tab -->
<template v-slot:titleRightCustom> <template v-slot:titleRightCustom v-if="!isLook">
<div class="table-operator-tab"> <div class="table-operator-tab">
<!--基础信息--> <!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''" <a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@@ -37,7 +37,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-decorator="['processDueDate']" v-decorator="['processDueDate']"
:disabled="disabled" :disabled="disabled || isLook"
style="width: 100%" /> style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -47,7 +47,7 @@
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:disabled="disabled" :disabled="disabled || isLook"
:rows="4" :rows="4"
v-decorator="['processDescription']" /> v-decorator="['processDescription']" />
</a-form-item> </a-form-item>
@@ -78,7 +78,7 @@
<a-form-model-item class="item-model" prop="source"> <a-form-model-item class="item-model" prop="source">
<j-dict-select-tag class="box-input" <j-dict-select-tag class="box-input"
v-model="formInline.source" v-model="formInline.source"
:disabled="disabled || disabledFieldList.includes('source') || isFromList" :disabled="disabled || disabledFieldList.includes('source') || isFromList || isLook"
:placeholder="$t('pleaseSelect')+$t('standardSelect.source')" :placeholder="$t('pleaseSelect')+$t('standardSelect.source')"
:type="'select'" :type="'select'"
:triggerChange="false" :triggerChange="false"
@@ -95,7 +95,7 @@
<a-form-model-item class="item-model" prop="operateType"> <a-form-model-item class="item-model" prop="operateType">
<j-dict-select-tag class="box-input" <j-dict-select-tag class="box-input"
v-model="formInline.operateType" v-model="formInline.operateType"
:disabled="disabled || disabledFieldList.includes('operateType') || isFromList" :disabled="disabled || disabledFieldList.includes('operateType') || isFromList || isLook"
:placeholder="$t('pleaseSelect')+$t('log.operationType')" :placeholder="$t('pleaseSelect')+$t('log.operationType')"
:type="'select'" :type="'select'"
:triggerChange="false" :triggerChange="false"
@@ -123,7 +123,7 @@
:name-str="formInline.standard_number_temp" :name-str="formInline.standard_number_temp"
:source="formInline.source" :source="formInline.source"
:disabledSourceSearch="true" :disabledSourceSearch="true"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
type="radio" type="radio"
select-only select-only
:placeholder="$t('pleaseEnter')+item.dbFieldTxt" :placeholder="$t('pleaseEnter')+item.dbFieldTxt"
@@ -132,7 +132,7 @@
<!--文本框--> <!--文本框-->
<a-input v-else <a-input v-else
class="box-input" class="box-input"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:maxLength="50" :maxLength="50"
:placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseEnter')+item.dbFieldTxt" /> :placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseEnter')+item.dbFieldTxt" />
@@ -146,7 +146,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
style="width: 100%" /> style="width: 100%" />
<!-- 2, 单选用户 --> <!-- 2, 单选用户 -->
<user-selection v-else-if="item.fieldShowType === FieldType.USER_SINGLE.value" <user-selection v-else-if="item.fieldShowType === FieldType.USER_SINGLE.value"
@@ -156,22 +156,22 @@
@nameChange="userSelectNameChange" @nameChange="userSelectNameChange"
:nameStr="formInline[item.dbFieldName + '_dictText']" :nameStr="formInline[item.dbFieldName + '_dictText']"
type="radio" type="radio"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" /> :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook" />
<!-- 3, 单选组织机构 --> <!-- 3, 单选组织机构 -->
<j-select-depart v-else-if="item.fieldShowType === FieldType.ORGAN_SINGLE.value" <j-select-depart v-else-if="item.fieldShowType === FieldType.ORGAN_SINGLE.value"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:backDepart="true" /> :backDepart="true" />
<!-- 4, 日期多选 --> <!-- 4, 日期多选 -->
<j-multiple-date-picker v-else-if="item.fieldShowType === FieldType.DATE_MORE.value" <j-multiple-date-picker v-else-if="item.fieldShowType === FieldType.DATE_MORE.value"
class="box-input" class="box-input"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:fieldName="item.dbFieldName" :fieldName="item.dbFieldName"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" /> :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook" />
<!-- 5, 多行文本 --> <!-- 5, 多行文本 -->
<a-textarea v-else-if="item.fieldShowType === FieldType.TEXTAREA.value" <a-textarea v-else-if="item.fieldShowType === FieldType.TEXTAREA.value"
:placeholder="$t('pleaseEnter')+item.dbFieldTxt" :placeholder="$t('pleaseEnter')+item.dbFieldTxt"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:maxLength="500" :maxLength="500"
v-model="formInline[item.dbFieldName]" :rows="4" /> v-model="formInline[item.dbFieldName]" :rows="4" />
<!-- 6, 标准多选 --> <!-- 6, 标准多选 -->
@@ -179,13 +179,13 @@
:placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseSelectStandard')" :placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseSelectStandard')"
:source="getStandardSource(item)" :source="getStandardSource(item)"
:disabledSourceSearch="true" :disabledSourceSearch="true"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:exclude-standard-numbers="excludeStandardFields.includes(item.dbFieldName) ? excludeStandardNumbers : null" :exclude-standard-numbers="excludeStandardFields.includes(item.dbFieldName) ? excludeStandardNumbers : null"
v-model="formInline[item.dbFieldName]" /> v-model="formInline[item.dbFieldName]" />
<!-- 7, 多选组织机构 --> <!-- 7, 多选组织机构 -->
<j-select-depart v-else-if="item.fieldShowType === FieldType.ORGAN_MORE.value" <j-select-depart v-else-if="item.fieldShowType === FieldType.ORGAN_MORE.value"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:multi="true" :multi="true"
:backDepart="true" :backDepart="true"
:treeOpera="true" /> :treeOpera="true" />
@@ -206,7 +206,7 @@
<!-- 9, 文本框 --> <!-- 9, 文本框 -->
<a-input v-else-if="item.fieldShowType === FieldType.TEXT_BOX.value" <a-input v-else-if="item.fieldShowType === FieldType.TEXT_BOX.value"
class="box-input" class="box-input"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:maxLength="item.dbLength" :maxLength="item.dbLength"
:placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseEnter')+item.dbFieldTxt" /> :placeholder="specialPlaceholder[item.dbFieldName] || $t('pleaseEnter')+item.dbFieldTxt" />
@@ -214,7 +214,7 @@
<j-dict-select-tag v-else-if="item.fieldShowType === FieldType.OPTION_SINGLE.value" <j-dict-select-tag v-else-if="item.fieldShowType === FieldType.OPTION_SINGLE.value"
class="box-input" class="box-input"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:placeholder="$t('pleaseSelect')+item.dbFieldTxt" :placeholder="$t('pleaseSelect')+item.dbFieldTxt"
:type="'select'" :type="'select'"
:triggerChange="false" :triggerChange="false"
@@ -224,7 +224,7 @@
<j-multi-select-tag v-else-if="item.fieldShowType === FieldType.OPTION_MORE.value" <j-multi-select-tag v-else-if="item.fieldShowType === FieldType.OPTION_MORE.value"
class="box-input" class="box-input"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:placeholder="$t('pleaseSelect')+item.dbFieldTxt" :placeholder="$t('pleaseSelect')+item.dbFieldTxt"
:type="'select'" :type="'select'"
:triggerChange="false" :triggerChange="false"
@@ -233,7 +233,7 @@
<s-tree-select <s-tree-select
v-else-if="item.fieldShowType === FieldType.TREE.value" v-else-if="item.fieldShowType === FieldType.TREE.value"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:tree-data="optionsData[item.dbFieldName]" :tree-data="optionsData[item.dbFieldName]"
tree-checkable tree-checkable
treeCheckStrictly treeCheckStrictly
@@ -242,7 +242,7 @@
<!-- 14, 年份选择 --> <!-- 14, 年份选择 -->
<j-date v-else-if="item.fieldShowType === FieldType.YEAR_PICKER.value" <j-date v-else-if="item.fieldShowType === FieldType.YEAR_PICKER.value"
show-type="year" show-type="year"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:default-value="defaultValue[item.dbFieldName]" :default-value="defaultValue[item.dbFieldName]"
date-format="YYYY" date-format="YYYY"
@@ -250,7 +250,7 @@
<!-- 15, 树选择单选 --> <!-- 15, 树选择单选 -->
<s-tree-select v-else-if="item.fieldShowType === FieldType.TREE_SINGLE.value" <s-tree-select v-else-if="item.fieldShowType === FieldType.TREE_SINGLE.value"
v-model="formInline[item.dbFieldName]" v-model="formInline[item.dbFieldName]"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook"
:tree-data="optionsData[item.dbFieldName]" :tree-data="optionsData[item.dbFieldName]"
:label-in-value="false" :label-in-value="false"
:placeholder="$t('pleaseSelect')+item.dbFieldTxt" /> :placeholder="$t('pleaseSelect')+item.dbFieldTxt" />
@@ -264,7 +264,7 @@
:options-href="item.fieldHref" :options-href="item.fieldHref"
:nameStr="formInline[item.dbFieldName + '_dictText']" :nameStr="formInline[item.dbFieldName + '_dictText']"
:dict-id="item.dictId" :dict-id="item.dictId"
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" /> :disabled="disabled || disabledFieldList.includes(item.dbFieldName) || isLook" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</template> </template>
@@ -282,11 +282,12 @@
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:rows="4" :rows="4"
:disabled="isLook"
v-decorator="['handleText', validatorRules.handleText]" /> v-decorator="['handleText', validatorRules.handleText]" />
</a-form-item> </a-form-item>
<!--附件--> <!--附件-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')"> <a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
<j-upload v-decorator="['handleFile']" return-id multiple /> <j-upload v-decorator="['handleFile']" return-id multiple :disabled="isLook" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
@@ -298,7 +299,7 @@
</template> </template>
</process-detail-list> </process-detail-list>
</div> </div>
<div class="detail-page-bottom-operate-box"> <div v-if="!isLook" class="detail-page-bottom-operate-box">
<!--转办 审批节点存在--> <!--转办 审批节点存在-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo"> <a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo">
{{ $t('turnTo') }} {{ $t('turnTo') }}
@@ -321,7 +322,7 @@
</a-button> </a-button>
</div> </div>
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false" :disabled="disabled" /> <upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false" :disabled="disabled || isLook" />
<!--转办选人--> <!--转办选人-->
<user-select-modal ref="userSelectModal" check-required @change="continueTurnTo" /> <user-select-modal ref="userSelectModal" check-required @change="continueTurnTo" />
@@ -337,7 +338,8 @@ import {
StandardProperty, StandardProperty,
ProcessKey, ProcessKey,
FGEntryChangeProcessNode, FGEntryChangeProcessNode,
StandardStatus StandardStatus,
ProcessType
} from '../../../enums/commonEnums.js' } from '../../../enums/commonEnums.js'
import { import {
getDomesticStandardDocumentInfo, getDomesticStandardDocumentInfo,
@@ -360,7 +362,10 @@ import {
saveStandardECProcess, saveStandardECProcess,
queryStandardECProcessData, queryStandardECProcessData,
turnToStandardECProcess, turnToStandardECProcess,
agreeStandardECProcess, rejectStandardECProcess agreeStandardECProcess,
rejectStandardECProcess,
saveSnapShot,
getLookData, queryProcurementProcessInfo
} from '../../../api/workCenter' } from '../../../api/workCenter'
import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin' import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin'
import STreeSelect from '../../../components/STreeSelect' import STreeSelect from '../../../components/STreeSelect'
@@ -443,7 +448,8 @@ export default {
}, },
businessId: null, businessId: null,
standardGetState: null, // 标准从接口获取到数据时候的标准状态值 standardGetState: null, // 标准从接口获取到数据时候的标准状态值
disabledBtnClick: false // 防连点 disabledBtnClick: false, // 防连点
isLook: false // 是否是查看
} }
}, },
computed: { computed: {
@@ -523,53 +529,64 @@ export default {
} }
}, },
created () { created () {
// 获取人员信息 if (this.$route.query.isLook + '' === '1') {
this.getPersonInfoStructure(this.processKey, () => { // 是查看
if (this.$route.query.processInstanceId || this.$route.query.draftId) { this.isLook = true
this.currentNode = this.$route.query.nodeId || FGEntryChangeProcessNode.initiate.value // 设置当前节点
this.initPersonInfoData(this.currentNode === FGEntryChangeProcessNode.initiate.value) this.currentNode = this.$route.query.nodeId
this.initProcessData() // 人员信息全部不可选
} else { this.initPersonInfoData(false)
this.currentNode = FGEntryChangeProcessNode.initiate.value // 查询数据
this.initPersonInfoData(this.currentNode === FGEntryChangeProcessNode.initiate.value) this.initProcessData()
// 处理非管理员从国内/海外标准模块进入发起页面,不可修改来源和操作类型 } else {
if (this.$route.query.source && this.$route.query.operateType) { // 获取人员信息
this.formInline = { this.getPersonInfoStructure(this.processKey, () => {
source: this.$route.query.source, if (this.$route.query.processInstanceId || this.$route.query.draftId) {
operateType: this.$route.query.operateType this.currentNode = this.$route.query.nodeId || FGEntryChangeProcessNode.initiate.value
} this.initPersonInfoData(this.currentNode === FGEntryChangeProcessNode.initiate.value)
switch (this.$route.query.source) { this.initProcessData()
// 国内标准
case StandardSource.DOMESTIC.value:
this.initDomesticStandardForm()
if (this.$route.query.standardId) {
this.initDomesticFormData(this.$route.query.standardId)
}
break
// 海外标准
case StandardSource.OVERSEAS.value:
this.initOverseasStandardForm()
if (this.$route.query.standardId) {
this.initOverseasFormData(this.$route.query.standardId)
}
break
default:
break
}
} else { } else {
// 默认选中国内 this.currentNode = FGEntryChangeProcessNode.initiate.value
this.initDomesticStandardForm() this.initPersonInfoData(this.currentNode === FGEntryChangeProcessNode.initiate.value)
// 处理非管理员从国内/海外标准模块进入发起页面,不可修改来源和操作类型
if (this.$route.query.source && this.$route.query.operateType) {
this.formInline = {
source: this.$route.query.source,
operateType: this.$route.query.operateType
}
switch (this.$route.query.source) {
// 国内标准
case StandardSource.DOMESTIC.value:
this.initDomesticStandardForm()
if (this.$route.query.standardId) {
this.initDomesticFormData(this.$route.query.standardId)
}
break
// 海外标准
case StandardSource.OVERSEAS.value:
this.initOverseasStandardForm()
if (this.$route.query.standardId) {
this.initOverseasFormData(this.$route.query.standardId)
}
break
default:
break
}
} else {
// 默认选中国内
this.initDomesticStandardForm()
}
} }
} // 获取按钮清单
// 获取按钮清单 const btnList = FGEntryChangeProcessNode.propertyOfValue('btn', this.currentNode)
const btnList = FGEntryChangeProcessNode.propertyOfValue('btn', this.currentNode) if (btnList && btnList.length > 0) {
if (btnList && btnList.length > 0) { this.btnList = btnList
this.btnList = btnList } else {
} else { this.btnList = FGEntryChangeProcessNode.approve.btn
this.btnList = FGEntryChangeProcessNode.approve.btn }
} this.disabled = FGEntryChangeProcessNode.propertyOfValue('disabled', this.currentNode) || false
this.disabled = FGEntryChangeProcessNode.propertyOfValue('disabled', this.currentNode) || false })
}) }
this.getSourceOptions() this.getSourceOptions()
}, },
methods: { methods: {
@@ -598,7 +615,18 @@ export default {
initProcessData () { initProcessData () {
this.loading = true this.loading = true
const { processInstanceId, draftId, taskId, projectId } = this.$route.query const { processInstanceId, draftId, taskId, projectId } = this.$route.query
queryStandardECProcessData({ processInstanceId, draftId, taskId, projectId }).then(async res => { let params = {}
let func
if (this.isLook) {
params.snapshotId = this.$route.query.snapshotId
func = getLookData
} else {
params = {
processInstanceId, draftId, taskId, projectId
}
func = queryStandardECProcessData
}
func(params).then(async res => {
if (res.success) { if (res.success) {
let result = res.result || {} let result = res.result || {}
// 如果草稿中有内容,就从草稿里取值 // 如果草稿中有内容,就从草稿里取值
@@ -613,9 +641,9 @@ export default {
// 获取对应类型的表单 // 获取对应类型的表单
await this.handleSourceChange() await this.handleSourceChange()
// 处理流程信息回显 // 处理流程信息回显
this.processInfo = Object.assign({}, res.result.basicProcessInfoDTO || {}) this.processInfo = Object.assign({}, res.result.basicProcessInfoDTO || result.basicProcessInfoDTO || {})
// 处理流程审批信息 // 处理流程审批信息
this.approvalInfo = Object.assign({}, res.result.basicTaskInfoDTO || {}) this.approvalInfo = Object.assign({}, res.result.basicTaskInfoDTO || result.basicTaskInfoDTO || {})
this.$nextTick(() => { this.$nextTick(() => {
// 处理表单数据回显 // 处理表单数据回显
this.processInfoForm.setFieldsValue(this.processInfo) this.processInfoForm.setFieldsValue(this.processInfo)
@@ -990,6 +1018,26 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 保存快照
saveParamJsonStr (callback) {
// 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
const params = { ...processInfoForm, ...approvalInfoForm }
params.infoJsonStr = JSON.stringify(this.dealSaveJsonData())
params.taskId = this.$route.query.taskId
params.prcType = ProcessType.FB_ENTRY_CHANGE.value
saveSnapShot(params).then(async res => {
if (res.success) {
callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
}
})
},
/** /**
* 提交(发起) * 提交(发起)
*/ */
@@ -1014,17 +1062,34 @@ export default {
} else { } else {
submitFunc = agreeStandardECProcess submitFunc = agreeStandardECProcess
} }
submitFunc(formData).then(res => { if (this.currentNode === FGEntryChangeProcessNode.initiate.value && (!this.$route.query.processInstanceId || this.$route.query.draftId)) {
if (res.success) { submitFunc(formData).then(res => {
this.$message.success(res.message) if (res.success) {
this.goBack() this.$message.success(res.message)
} else { this.goBack()
this.$message.warning(res.message) } else {
this.disabledBtnClick = false this.$message.warning(res.message)
} this.disabledBtnClick = false
}).finally(() => { }
this.loading = false }).finally(() => {
}) this.loading = false
})
} else {
// 保存快照后提交
this.saveParamJsonStr(() => {
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
}
}, },
/** /**
* 同意 * 同意
@@ -1045,16 +1110,19 @@ export default {
} }
formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空
this.loading = true this.loading = true
agreeStandardECProcess(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeStandardECProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -1073,16 +1141,19 @@ export default {
} }
formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空
this.loading = true this.loading = true
rejectStandardECProcess(formData).then(res => { // 保存快照后提交
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectStandardECProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -1,7 +1,7 @@
<template> <template>
<internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading"> <internal-detail-page :content-padding="0" :title="pageTitle" :loading="loading">
<!-- 标题右侧tab --> <!-- 标题右侧tab -->
<template v-slot:titleRightCustom> <template v-slot:titleRightCustom v-if="!isLook">
<div class="table-operator-tab"> <div class="table-operator-tab">
<!--基础信息--> <!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''" <a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@@ -25,7 +25,7 @@
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')">
<a-input :placeholder="$t('pleaseEnter') + $t('processName')" <a-input :placeholder="$t('pleaseEnter') + $t('processName')"
:maxLength="50" :maxLength="50"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
v-decorator="['processName', validatorRules.processName]" /> v-decorator="['processName', validatorRules.processName]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -38,7 +38,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
v-decorator="['processDueDate']" v-decorator="['processDueDate']"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
style="width: 100%" /> style="width: 100%" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -48,7 +48,7 @@
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:disabled="processInfoDisabled" :disabled="processInfoDisabled || isLook"
:rows="4" :rows="4"
v-decorator="['processDescription']" /> v-decorator="['processDescription']" />
</a-form-item> </a-form-item>
@@ -58,9 +58,9 @@
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div> <div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
<div class="table-operator"> <div class="table-operator">
<!-- 新增--> <!-- 新增-->
<a-button icon="plus" type="primary" @click="handleAdd" v-if="canTableOperate">{{ $t('newlyAdded') }}</a-button> <a-button icon="plus" type="primary" @click="handleAdd" v-if="canTableOperate && !isLook">{{ $t('newlyAdded') }}</a-button>
<!-- 批量删除--> <!-- 批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel" v-if="canTableOperate">{{ $t('batchDelete') }}</a-button> <a-button type="primary" icon="delete" ghost @click="batchDel" v-if="canTableOperate && !isLook">{{ $t('batchDelete') }}</a-button>
<a-button icon="upload" type="primary" ghost @click="handleExportXls" v-if="!canTableOperate"> <a-button icon="upload" type="primary" ghost @click="handleExportXls" v-if="!canTableOperate">
{{ $t('export') }} {{ $t('export') }}
</a-button> </a-button>
@@ -77,9 +77,9 @@
:loading="loading"> :loading="loading">
<template v-slot:action="{text, record, index}"> <template v-slot:action="{text, record, index}">
<a @click="handleEdit(record, index)">{{ $t('edit') }}</a> <a @click="handleEdit(record, index)" :disabled="isLook">{{ $t('edit') }}</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a @click="handleDelete(index)">{{ $t('delete') }}</a> <a @click="handleDelete(index)" :disabled="isLook">{{ $t('delete') }}</a>
</template> </template>
</j-table> </j-table>
@@ -95,6 +95,7 @@
type="radio" type="radio"
v-decorator="['confirmEngineer', validatorRules.confirmEngineer]" v-decorator="['confirmEngineer', validatorRules.confirmEngineer]"
@nameChange="userSelectNameChange" @nameChange="userSelectNameChange"
:disabled="isLook"
filedName="confirmEngineer" filedName="confirmEngineer"
:nameStr="businessFormData.confirmEngineer_dictText" /> :nameStr="businessFormData.confirmEngineer_dictText" />
</a-form-item> </a-form-item>
@@ -110,11 +111,12 @@
:maxLength="500" :maxLength="500"
type="textarea" type="textarea"
:rows="4" :rows="4"
:disabled="isLook"
v-decorator="['handleText', validatorRules.handleText]" /> v-decorator="['handleText', validatorRules.handleText]" />
</a-form-item> </a-form-item>
<!--附件--> <!--附件-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')"> <a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
<j-upload v-decorator="['handleFile']" return-id multiple /> <j-upload v-decorator="['handleFile']" return-id multiple :disabled="isLook" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
@@ -129,7 +131,7 @@
</div> </div>
<!--底部按钮--> <!--底部按钮-->
<div class="detail-page-bottom-operate-box"> <div v-if="!isLook" class="detail-page-bottom-operate-box">
<!--转办 审批节点存在--> <!--转办 审批节点存在-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo"> <a-button type="primary" :loading="loading" ghost icon="arrow-up" v-if="btnList.includes('return')" @click="handleTurnTo">
{{ $t('turnTo') }} {{ $t('turnTo') }}
@@ -172,7 +174,7 @@ import InternalDetailPage from '../../../components/InternalDetailPage'
import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin' import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin'
import PersonnelInfo from '../../../components/PersonnelInfo' import PersonnelInfo from '../../../components/PersonnelInfo'
import ProcessDetailList from '../../../components/ProcessDetailList' import ProcessDetailList from '../../../components/ProcessDetailList'
import { ProcessKey, ProcurementProcessNodes } from '../../../enums/commonEnums' import { ProcessKey, ProcurementProcessNodes, ProcessType } from '../../../enums/commonEnums'
import JTable from '../../../components/jero/JTable' import JTable from '../../../components/jero/JTable'
import TableFormModal from './modules/TableFormModal' import TableFormModal from './modules/TableFormModal'
import { import {
@@ -182,7 +184,9 @@ import {
agreeProcurementProcess, agreeProcurementProcess,
rejectProcurementProcess, rejectProcurementProcess,
transferProcurementProcess, transferProcurementProcess,
carbonCopyProcurementProcess carbonCopyProcurementProcess,
saveSnapShot,
getLookData
} from '../../../api/workCenter' } from '../../../api/workCenter'
import UserSelection from '../../../components/selection/UserSelection' import UserSelection from '../../../components/selection/UserSelection'
import UserSelectModal from '../../../components/selection/UserSelectModal' import UserSelectModal from '../../../components/selection/UserSelectModal'
@@ -271,7 +275,8 @@ export default {
isTransfer: true, // 是否转办 isTransfer: true, // 是否转办
businessId: null, businessId: null,
carbonCopyPersonIds: null, // 抄送选择人的id carbonCopyPersonIds: null, // 抄送选择人的id
disabledBtnClick: false disabledBtnClick: false,
isLook: false // 是否是查看
} }
}, },
computed: { computed: {
@@ -305,20 +310,31 @@ export default {
} }
}, },
created () { created () {
this.getPersonInfoStructure(this.processKey, () => { if (this.$route.query.isLook + '' === '1') {
if (this.$route.query.processInstanceId || this.$route.query.draftId) { // 是查看
this.currentNode = this.$route.query.nodeId || ProcurementProcessNodes.initiate.value this.isLook = true
this.initPersonInfoData(this.currentNode === ProcurementProcessNodes.initiate.value) // 设置当前节点
this.initProcessInfo() this.currentNode = this.$route.query.nodeId
} else { // 人员信息全部不可选
this.currentNode = ProcurementProcessNodes.initiate.value this.initPersonInfoData(false)
this.initPersonInfoData(this.currentNode === ProcurementProcessNodes.initiate.value) // 查询数据
} this.initProcessInfo()
if (this.currentNode === ProcurementProcessNodes.initiate.value) { } else {
this.columns.push(this.operateColumn) this.getPersonInfoStructure(this.processKey, () => {
} if (this.$route.query.processInstanceId || this.$route.query.draftId) {
this.btnList = ProcurementProcessNodes.propertyOfValue('btn', this.currentNode) this.currentNode = this.$route.query.nodeId || ProcurementProcessNodes.initiate.value
}) this.initPersonInfoData(this.currentNode === ProcurementProcessNodes.initiate.value)
this.initProcessInfo()
} else {
this.currentNode = ProcurementProcessNodes.initiate.value
this.initPersonInfoData(this.currentNode === ProcurementProcessNodes.initiate.value)
}
if (this.currentNode === ProcurementProcessNodes.initiate.value) {
this.columns.push(this.operateColumn)
}
this.btnList = ProcurementProcessNodes.propertyOfValue('btn', this.currentNode)
})
}
}, },
methods: { methods: {
// 选择用户得到用户名 // 选择用户得到用户名
@@ -371,13 +387,21 @@ export default {
}, },
initProcessInfo () { initProcessInfo () {
this.loading = true this.loading = true
const params = { let params = {}
processInstanceId: this.$route.query.processInstanceId, let func
draftId: this.$route.query.draftId, if (this.isLook) {
taskId: this.$route.query.taskId, params.snapshotId = this.$route.query.snapshotId
projectId: this.$route.query.projectId func = getLookData
} else {
params = {
processInstanceId: this.$route.query.processInstanceId,
draftId: this.$route.query.draftId,
taskId: this.$route.query.taskId,
projectId: this.$route.query.projectId
}
func = queryProcurementProcessInfo
} }
queryProcurementProcessInfo(params).then(res => { func(params).then(res => {
if (res.success) { if (res.success) {
let result = res.result || {} let result = res.result || {}
if (result.infoJsonStr) { if (result.infoJsonStr) {
@@ -480,6 +504,26 @@ export default {
} }
return !flag ? flag : formData return !flag ? flag : formData
}, },
// 保存快照
saveParamJsonStr (callback) {
// 流程信息表单
const processInfoForm = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
// 流程审批信息
const approvalInfoForm = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
const params = { ...processInfoForm, ...approvalInfoForm }
params.infoJsonStr = JSON.stringify(this.dealFormData(true))
params.taskId = this.$route.query.taskId
params.prcType = ProcessType.LEGAL_PROCUREMENT.value
saveSnapShot(params).then(async res => {
if (res.success) {
callback && await callback()
} else {
this.$message.warning(res.message)
this.loading = false
this.disabledBtnClick = false
}
})
},
/** /**
* 转办 * 转办
*/ */
@@ -587,17 +631,34 @@ export default {
submitFunc = agreeProcurementProcess submitFunc = agreeProcurementProcess
} }
this.loading = true this.loading = true
submitFunc(formData).then(res => { if (this.currentNode === ProcurementProcessNodes.initiate.value && (!this.$route.query.processInstanceId || this.$route.query.draftId)) {
if (res.success) { submitFunc(formData).then(res => {
this.$message.success(res.message) if (res.success) {
this.goBack() this.$message.success(res.message)
} else { this.goBack()
this.$message.warning(res.message) } else {
this.disabledBtnClick = false this.$message.warning(res.message)
} this.disabledBtnClick = false
}).finally(() => { }
this.loading = false }).finally(() => {
}) this.loading = false
})
} else {
// 保存快照后提交
this.saveParamJsonStr(() => {
submitFunc(formData).then(res => {
if (res.success) {
this.$message.success(res.message)
this.goBack()
} else {
this.$message.warning(res.message)
this.disabledBtnClick = false
}
}).finally(() => {
this.loading = false
})
})
}
}, },
/** /**
* 同意 * 同意
@@ -618,16 +679,19 @@ export default {
} }
formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 1 // 同意就传1,驳回传2,其他都为空
this.loading = true this.loading = true
agreeProcurementProcess(formData).then(res => { // 保存快照
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) agreeProcurementProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
/** /**
@@ -646,16 +710,19 @@ export default {
} }
formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空 formData.basicTaskInfoDTO.commitFlag = 2 // 同意就传1,驳回传2,其他都为空
this.loading = true this.loading = true
rejectProcurementProcess(formData).then(res => { // 保存快照
if (res.success) { this.saveParamJsonStr(() => {
this.$message.success(res.message) rejectProcurementProcess(formData).then(res => {
this.goBack() if (res.success) {
} else { this.$message.success(res.message)
this.$message.warning(res.message) this.goBack()
this.disabledBtnClick = false } else {
} this.$message.warning(res.message)
}).finally(() => { this.disabledBtnClick = false
this.loading = false }
}).finally(() => {
this.loading = false
})
}) })
}, },
handleExportXls () { handleExportXls () {