仿钉钉流程设计器 -会签按通过比例
parent
632bcb9944
commit
cab9553235
|
@ -108,7 +108,7 @@ export enum ApproveMethodType {
|
||||||
*/
|
*/
|
||||||
ALL_APPROVE = 2,
|
ALL_APPROVE = 2,
|
||||||
/**
|
/**
|
||||||
* 多人会签(按比例投票)
|
* 多人会签(按通过比例)
|
||||||
*/
|
*/
|
||||||
APPROVE_BY_RATIO = 3,
|
APPROVE_BY_RATIO = 3,
|
||||||
/**
|
/**
|
||||||
|
@ -218,7 +218,7 @@ 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.SINGLE_PERSON_APPROVE },
|
||||||
{ label: '多人会签(需所有审批人同意)', value: ApproveMethodType.ALL_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_ALL_REJECT },
|
||||||
{ label: '多人或签(一名审批人通过即可)', value: ApproveMethodType.ANY_APPROVE },
|
{ label: '多人或签(一名审批人通过即可)', value: ApproveMethodType.ANY_APPROVE },
|
||||||
{ label: '依次审批(按顺序依次审批)', value: ApproveMethodType.SEQUENTIAL_APPROVE }
|
{ label: '依次审批(按顺序依次审批)', value: ApproveMethodType.SEQUENTIAL_APPROVE }
|
||||||
|
|
|
@ -149,7 +149,7 @@
|
||||||
@change="approveMethodChanged"
|
@change="approveMethodChanged"
|
||||||
>
|
>
|
||||||
<div class="flex-col">
|
<div class="flex-col">
|
||||||
<div v-for="(item, index) in APPROVE_METHODS" :key="index">
|
<div v-for="(item, index) in APPROVE_METHODS" :key="index" class="flex items-center">
|
||||||
<el-radio
|
<el-radio
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
:label="item.value"
|
:label="item.value"
|
||||||
|
@ -160,6 +160,14 @@
|
||||||
>
|
>
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
|
<el-input-number
|
||||||
|
v-model="currentNode.attributes.approveRatio"
|
||||||
|
:min="10"
|
||||||
|
:max="99"
|
||||||
|
:step="10"
|
||||||
|
size="small"
|
||||||
|
v-if="item.value === ApproveMethodType.APPROVE_BY_RATIO && currentNode.attributes.approveMethod === ApproveMethodType.APPROVE_BY_RATIO"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
@ -175,6 +183,7 @@
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:disabled="rejectHandlerOptionDisabled(item.value)"
|
:disabled="rejectHandlerOptionDisabled(item.value)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
@ -512,6 +521,7 @@ const changedCandidateUsers = () => {
|
||||||
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.SINGLE_PERSON_APPROVE
|
||||||
|
currentNode.value.attributes.rejectHandler.type = RejectHandlerType.FINISH_PROCESS
|
||||||
notAllowedMultiApprovers.value = true
|
notAllowedMultiApprovers.value = true
|
||||||
} else {
|
} else {
|
||||||
notAllowedMultiApprovers.value = false
|
notAllowedMultiApprovers.value = false
|
||||||
|
@ -530,26 +540,35 @@ const blurEvent = () => {
|
||||||
currentNode.value.name || (NODE_DEFAULT_NAME.get(NodeType.USER_TASK_NODE) as string)
|
currentNode.value.name || (NODE_DEFAULT_NAME.get(NodeType.USER_TASK_NODE) as string)
|
||||||
}
|
}
|
||||||
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.ANY_APPROVE_ALL_REJECT || approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
||||||
currentNode.value.attributes.rejectHandler.type =RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO
|
currentNode.value.attributes.rejectHandler.type =
|
||||||
|
RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO
|
||||||
} else {
|
} else {
|
||||||
currentNode.value.attributes.rejectHandler.type = RejectHandlerType.FINISH_PROCESS
|
currentNode.value.attributes.rejectHandler.type = RejectHandlerType.FINISH_PROCESS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
|
||||||
|
currentNode.value.attributes.approveRatio = 50;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const rejectHandlerOptionDisabled = computed(() => {
|
const rejectHandlerOptionDisabled = computed(() => {
|
||||||
return (val: number) => {
|
return (val: number) => {
|
||||||
const approveMethod = currentNode.value.attributes?.approveMethod
|
const approveMethod = currentNode.value.attributes?.approveMethod
|
||||||
if (val === RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO && approveMethod !== ApproveMethodType.APPROVE_BY_RATIO
|
if (
|
||||||
&& approveMethod !== ApproveMethodType.ANY_APPROVE_ALL_REJECT) {
|
val === RejectHandlerType.FINISH_PROCESS_BY_REJECT_RATIO &&
|
||||||
return true
|
approveMethod !== ApproveMethodType.APPROVE_BY_RATIO &&
|
||||||
}
|
approveMethod !== ApproveMethodType.ANY_APPROVE_ALL_REJECT
|
||||||
if ( approveMethod === ApproveMethodType.ANY_APPROVE_ALL_REJECT &&
|
|
||||||
val === RejectHandlerType.FINISH_PROCESS
|
|
||||||
) {
|
) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
approveMethod === ApproveMethodType.ANY_APPROVE_ALL_REJECT &&
|
||||||
|
val === RejectHandlerType.FINISH_PROCESS
|
||||||
|
) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue