48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
|
|
// Mixin:支持“模板审批”与“手动审批人”二选一
|
|||
|
|
// 依赖:
|
|||
|
|
// 1. 引用 user-select 组件 (已有 src/components/userSelect)
|
|||
|
|
// 2. 表单中需提供 tplId (工作流模板ID) 与 assigneeUserId (手动审批人ID)
|
|||
|
|
//
|
|||
|
|
// 使用方式:
|
|||
|
|
// import manualApproverMixin from './_manualApproverMixin'
|
|||
|
|
// export default { mixins: [manualApproverMixin], ... }
|
|||
|
|
// 你的表单中绑定 approverMode / tplId / assigneeUserId
|
|||
|
|
// approverMode: 'template' | 'manual'
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
approverMode: 'template', // 默认使用流程模板
|
|||
|
|
tplId: null, // 选中的模板ID
|
|||
|
|
assigneeUserId: null // 手动审批人
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
computed: {
|
|||
|
|
useTemplate() {
|
|||
|
|
return this.approverMode === 'template'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
/**
|
|||
|
|
* 在提交之前,调用该方法获取流程相关字段
|
|||
|
|
* @returns {{tplId: number|null, assigneeUserId: number|null}}
|
|||
|
|
*/
|
|||
|
|
buildFlowFields() {
|
|||
|
|
if (this.useTemplate) {
|
|||
|
|
// 模板审批:必须选择 tplId
|
|||
|
|
if (!this.tplId) {
|
|||
|
|
this.$message.warning('请选择审批流程模板')
|
|||
|
|
throw new Error('缺少 tplId')
|
|||
|
|
}
|
|||
|
|
return { tplId: this.tplId, assigneeUserId: null }
|
|||
|
|
}
|
|||
|
|
// 手动审批:必须选择审批人
|
|||
|
|
if (!this.assigneeUserId) {
|
|||
|
|
this.$message.warning('请选择审批人')
|
|||
|
|
throw new Error('缺少 assigneeUserId')
|
|||
|
|
}
|
|||
|
|
return { tplId: 0, assigneeUserId: this.assigneeUserId }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|