Browse Source

【功能新增】审批节点的审批人与发起人相同时,对应的处理类型的配置

YunaiV 1 năm trước cách đây
mục cha
commit
2dae231afc

+ 22 - 0
src/components/SimpleProcessDesignerV2/src/consts.ts

@@ -77,6 +77,8 @@ export interface SimpleFlowNode {
   timeoutHandler?: TimeoutHandler
   // 审批任务拒绝处理
   rejectHandler?: RejectHandler
+  // 审批节点的审批人与发起人相同时,对应的处理类型
+  assignStartUserHandlerType?: number
 }
 // 候选人策略枚举 ( 用于审批节点。抄送节点 )
 export enum CandidateStrategy {
@@ -174,6 +176,21 @@ export enum RejectHandlerType {
    */
   RETURN_USER_TASK = 2
 }
+// 用户任务的审批人与发起人相同时,处理类型枚举
+export enum AssignStartUserHandlerType {
+  /**
+   * 由发起人对自己审批
+   */
+  START_USER_AUDIT = 1,
+  /**
+   * 自动跳过【参考飞书】:1)如果当前节点还有其他审批人,则交由其他审批人进行审批;2)如果当前节点没有其他审批人,则该节点自动通过
+   */
+  SKIP = 2,
+  /**
+   * 转交给部门负责人审批
+   */
+  ASSIGN_DEPT_LEADER
+}
 
 // 时间单位枚举
 export enum TimeUnitType {
@@ -309,6 +326,11 @@ export const REJECT_HANDLER_TYPES: DictDataVO[] = [
   { label: '驳回到指定节点', value: RejectHandlerType.RETURN_USER_TASK }
   // { label: '结束任务', value: RejectHandlerType.FINISH_TASK }
 ]
+export const ASSIGN_START_USER_HANDLER_TYPES: DictDataVO[] = [
+  { label: '由发起人对自己审批', value: 1 },
+  { label: '自动跳过', value: 2 },
+  { label: '转交给部门负责人审批', value: 3 }
+]
 
 // 比较运算符
 export const COMPARISON_OPERATORS: DictDataVO = [

+ 5 - 1
src/components/SimpleProcessDesignerV2/src/node.ts

@@ -10,7 +10,9 @@ import {
   NodeType,
   ApproveMethodType,
   RejectHandlerType,
-  NODE_DEFAULT_NAME
+  NODE_DEFAULT_NAME,
+  AssignStartUserHandlerType,
+  ASSIGN_START_USER_HANDLER_TYPES
 } from './consts'
 export function useWatchNode(props: { flowNode: SimpleFlowNode }): Ref<SimpleFlowNode> {
   const node = ref<SimpleFlowNode>(props.flowNode)
@@ -97,6 +99,7 @@ export type UserTaskFormType = {
   returnNodeId?: string
   timeoutHandlerEnable?: boolean
   timeoutHandlerAction?: number
+  assignStartUserHandlerType?: AssignStartUserHandlerType
   timeDuration?: number
   maxRemindCount?: number
   buttonsSetting: any[]
@@ -125,6 +128,7 @@ export function useNodeForm(nodeType: NodeType) {
       approveMethod: ApproveMethodType.RRANDOM_SELECT_ONE_APPROVE,
       approveRatio: 100,
       rejectHandlerType: RejectHandlerType.FINISH_PROCESS,
+      assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT,
       returnNodeId: '',
       timeoutHandlerEnable: false,
       timeoutHandlerAction: 1,

+ 17 - 1
src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue

@@ -275,6 +275,17 @@
             >
               <el-input-number v-model="configForm.maxRemindCount" :min="1" :max="10" />
             </el-form-item>
+
+            <el-divider content-position="left">审批人与提交人为同一人时</el-divider>
+            <el-form-item prop="assignStartUserHandlerType">
+              <el-radio-group v-model="configForm.assignStartUserHandlerType">
+                <div class="flex-col">
+                  <div v-for="(item, index) in ASSIGN_START_USER_HANDLER_TYPES" :key="index">
+                    <el-radio :key="item.value" :value="item.value" :label="item.label" />
+                  </div>
+                </div>
+              </el-radio-group>
+            </el-form-item>
           </el-form>
         </div>
       </el-tab-pane>
@@ -364,7 +375,8 @@ import {
   REJECT_HANDLER_TYPES,
   DEFAULT_BUTTON_SETTING,
   OPERATION_BUTTON_NAME,
-  ButtonSetting
+  ButtonSetting,
+  ASSIGN_START_USER_HANDLER_TYPES
 } from '../consts'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import {
@@ -506,6 +518,8 @@ const saveConfig = async () => {
     timeDuration: isoTimeDuration.value,
     maxRemindCount: cTimeoutMaxRemindCount.value
   }
+  // 设置用户任务的审批人与发起人相同时
+  currentNode.value.assignStartUserHandlerType = configForm.value.assignStartUserHandlerType
   // 设置表单权限
   currentNode.value.fieldsPermission = fieldsPermissionConfig.value
   // 设置按钮权限
@@ -560,6 +574,8 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
   }
   configForm.value.timeoutHandlerAction = node.timeoutHandler?.action
   configForm.value.maxRemindCount = node.timeoutHandler?.maxRemindCount
+  // 1.5 设置用户任务的审批人与发起人相同时
+  configForm.value.assignStartUserHandlerType = node.assignStartUserHandlerType
   // 2. 操作按钮设置
   buttonsSetting.value = cloneDeep(node.buttonsSetting) || DEFAULT_BUTTON_SETTING
   // 3. 表单字段权限配置