仿钉钉流程设计器- 简化多人审批方式
This commit is contained in:
parent
cab9553235
commit
d5a7ae1865
@ -75,7 +75,7 @@ const addNode = (type: number) => {
|
|||||||
type: NodeType.USER_TASK_NODE,
|
type: NodeType.USER_TASK_NODE,
|
||||||
// 审批节点配置
|
// 审批节点配置
|
||||||
attributes: {
|
attributes: {
|
||||||
approveMethod: ApproveMethodType.SINGLE_PERSON_APPROVE,
|
approveMethod: ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE,
|
||||||
candidateStrategy: CandidateStrategy.USER,
|
candidateStrategy: CandidateStrategy.USER,
|
||||||
candidateParam: undefined,
|
candidateParam: undefined,
|
||||||
fieldsPermission: undefined,
|
fieldsPermission: undefined,
|
||||||
|
@ -95,35 +95,27 @@ export enum ConditionConfigType {
|
|||||||
*/
|
*/
|
||||||
RULE = 2
|
RULE = 2
|
||||||
}
|
}
|
||||||
// 审批方式类型 ( 用于审批节点 )
|
// 多人审批方式类型 ( 用于审批节点 )
|
||||||
export enum ApproveMethodType {
|
export enum ApproveMethodType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单人审批
|
* 随机挑选一人审批
|
||||||
*/
|
*/
|
||||||
SINGLE_PERSON_APPROVE = 1,
|
RRANDOM_SELECT_ONE_APPROVE = 1,
|
||||||
|
|
||||||
/**
|
|
||||||
* 多人会签(需所有审批人同意)
|
|
||||||
*/
|
|
||||||
ALL_APPROVE = 2,
|
|
||||||
/**
|
/**
|
||||||
* 多人会签(按通过比例)
|
* 多人会签(按通过比例)
|
||||||
*/
|
*/
|
||||||
APPROVE_BY_RATIO = 3,
|
APPROVE_BY_RATIO = 2,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多人会签(通过只需一人,拒绝需要全员)
|
* 多人或签(通过只需一人,拒绝只需一人)
|
||||||
*/
|
*/
|
||||||
ANY_APPROVE_ALL_REJECT = 4,
|
ANY_APPROVE = 3,
|
||||||
|
|
||||||
/**
|
|
||||||
* 多人或签(一名审批人通过即可)
|
|
||||||
*/
|
|
||||||
ANY_APPROVE = 5,
|
|
||||||
/**
|
/**
|
||||||
* 多人依次审批
|
* 多人依次审批
|
||||||
*/
|
*/
|
||||||
SEQUENTIAL_APPROVE = 6
|
SEQUENTIAL_APPROVE = 4
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,11 +208,9 @@ NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人')
|
|||||||
NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
|
NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
|
||||||
|
|
||||||
export const APPROVE_METHODS: DictDataVO [] = [
|
export const APPROVE_METHODS: DictDataVO [] = [
|
||||||
{ label: '单人审批', value: ApproveMethodType.SINGLE_PERSON_APPROVE },
|
{ label: '随机挑选一人审批', value: ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE },
|
||||||
{ label: '多人会签(需所有审批人同意)', value: ApproveMethodType.ALL_APPROVE },
|
|
||||||
{ label: '多人会签(按通过比例%)', value: ApproveMethodType.APPROVE_BY_RATIO },
|
{ label: '多人会签(按通过比例%)', value: ApproveMethodType.APPROVE_BY_RATIO },
|
||||||
{ label: '多人会签(通过只需一人,拒绝需要全员)', value: ApproveMethodType.ANY_APPROVE_ALL_REJECT },
|
{ label: '多人或签(一人通过或拒绝)', value: ApproveMethodType.ANY_APPROVE },
|
||||||
{ label: '多人或签(一名审批人通过即可)', value: ApproveMethodType.ANY_APPROVE },
|
|
||||||
{ label: '依次审批(按顺序依次审批)', value: ApproveMethodType.SEQUENTIAL_APPROVE }
|
{ label: '依次审批(按顺序依次审批)', value: ApproveMethodType.SEQUENTIAL_APPROVE }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@
|
|||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="审批方式" prop="approveMethod">
|
<el-form-item label="多人审批方式" prop="approveMethod">
|
||||||
<el-radio-group
|
<el-radio-group
|
||||||
v-model="currentNode.attributes.approveMethod"
|
v-model="currentNode.attributes.approveMethod"
|
||||||
@change="approveMethodChanged"
|
@change="approveMethodChanged"
|
||||||
@ -154,7 +154,7 @@
|
|||||||
:value="item.value"
|
:value="item.value"
|
||||||
:label="item.value"
|
:label="item.value"
|
||||||
:disabled="
|
:disabled="
|
||||||
item.value !== ApproveMethodType.SINGLE_PERSON_APPROVE &&
|
item.value !== ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE &&
|
||||||
notAllowedMultiApprovers
|
notAllowedMultiApprovers
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -163,7 +163,7 @@
|
|||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="currentNode.attributes.approveRatio"
|
v-model="currentNode.attributes.approveRatio"
|
||||||
:min="10"
|
:min="10"
|
||||||
:max="99"
|
:max="100"
|
||||||
:step="10"
|
:step="10"
|
||||||
size="small"
|
size="small"
|
||||||
v-if="item.value === ApproveMethodType.APPROVE_BY_RATIO && currentNode.attributes.approveMethod === ApproveMethodType.APPROVE_BY_RATIO"
|
v-if="item.value === ApproveMethodType.APPROVE_BY_RATIO && currentNode.attributes.approveMethod === ApproveMethodType.APPROVE_BY_RATIO"
|
||||||
@ -504,7 +504,7 @@ defineExpose({ open, setCurrentNode }) // 暴露方法给父组件
|
|||||||
|
|
||||||
const changeCandidateStrategy = () => {
|
const changeCandidateStrategy = () => {
|
||||||
candidateParamArray.value = []
|
candidateParamArray.value = []
|
||||||
currentNode.value.attributes.approveMethod = ApproveMethodType.SINGLE_PERSON_APPROVE
|
currentNode.value.attributes.approveMethod = ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE
|
||||||
if (
|
if (
|
||||||
currentNode.value.attributes.candidateStrategy === CandidateStrategy.START_USER ||
|
currentNode.value.attributes.candidateStrategy === CandidateStrategy.START_USER ||
|
||||||
currentNode.value.attributes.candidateStrategy === CandidateStrategy.USER
|
currentNode.value.attributes.candidateStrategy === CandidateStrategy.USER
|
||||||
@ -520,7 +520,7 @@ const changedCandidateUsers = () => {
|
|||||||
candidateParamArray.value?.length <= 1 &&
|
candidateParamArray.value?.length <= 1 &&
|
||||||
currentNode.value.attributes?.candidateStrategy === CandidateStrategy.USER
|
currentNode.value.attributes?.candidateStrategy === CandidateStrategy.USER
|
||||||
) {
|
) {
|
||||||
currentNode.value.attributes.approveMethod = ApproveMethodType.SINGLE_PERSON_APPROVE
|
currentNode.value.attributes.approveMethod = ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE
|
||||||
currentNode.value.attributes.rejectHandler.type = RejectHandlerType.FINISH_PROCESS
|
currentNode.value.attributes.rejectHandler.type = RejectHandlerType.FINISH_PROCESS
|
||||||
notAllowedMultiApprovers.value = true
|
notAllowedMultiApprovers.value = true
|
||||||
} else {
|
} else {
|
||||||
@ -541,7 +541,7 @@ const blurEvent = () => {
|
|||||||
}
|
}
|
||||||
const approveMethodChanged = () => {
|
const approveMethodChanged = () => {
|
||||||
const approveMethod = currentNode.value.attributes?.approveMethod
|
const approveMethod = currentNode.value.attributes?.approveMethod
|
||||||
if ( approveMethod === ApproveMethodType.ANY_APPROVE_ALL_REJECT || approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
if ( approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
||||||
currentNode.value.attributes.rejectHandler.type =
|
currentNode.value.attributes.rejectHandler.type =
|
||||||
RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO
|
RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO
|
||||||
} else {
|
} else {
|
||||||
@ -549,7 +549,7 @@ const approveMethodChanged = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
if (approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
||||||
currentNode.value.attributes.approveRatio = 50;
|
currentNode.value.attributes.approveRatio = 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const rejectHandlerOptionDisabled = computed(() => {
|
const rejectHandlerOptionDisabled = computed(() => {
|
||||||
@ -557,15 +557,12 @@ const rejectHandlerOptionDisabled = computed(() => {
|
|||||||
const approveMethod = currentNode.value.attributes?.approveMethod
|
const approveMethod = currentNode.value.attributes?.approveMethod
|
||||||
if (
|
if (
|
||||||
val === RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO &&
|
val === RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO &&
|
||||||
approveMethod !== ApproveMethodType.APPROVE_BY_RATIO &&
|
approveMethod !== ApproveMethodType.APPROVE_BY_RATIO
|
||||||
approveMethod !== ApproveMethodType.ANY_APPROVE_ALL_REJECT
|
|
||||||
) {
|
) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (
|
if ( approveMethod === ApproveMethodType.APPROVE_BY_RATIO
|
||||||
approveMethod === ApproveMethodType.ANY_APPROVE_ALL_REJECT &&
|
&& val !== RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO) {
|
||||||
val === RejectHandlerType.FINISH_PROCESS
|
|
||||||
) {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user