1.1.1 • Published 2 years ago

@hubwa/workflow-engine v1.1.1

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

工作流组件

安装

环境支持

工作流组件基于 Vue.js 实现,并且使用了 Element Plus 中的组件,在引入前请参考 Element Plus 官方文档 安装 Element Plus:

# NPM
$ npm install element-plus --save

# Yarn
$ yarn add element-plus

# pnpm
$ pnpm install element-plus

快速开始

引入组件

# NPM
$ npm install @hubwa/workflow-engine --save

# Yarn
$ yarn add @hubwa/workflow-engine

# pnpm
$ pnpm install @hubwa/workflow-engine

用法

  1. 在入口文件中完整引入 ElementPlus 和组件的 css 文件:
// main.ts
import { createApp } from 'vue';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import '@hubwa/workflow-engine/dist/style.css';
import App from './App.vue';

const app = createApp(App);

app.use(ElementPlus);
app.mount('#app');
  1. 在页面上引入组件并提供基础配置,详细见 Reference
<script setup lang="ts">
import axios from 'axios';
import { createWorkflowConfig, DCWorkflow } from '@hubwa/workflow-engine';
import type { WorkflowData } from '@hubwa/workflow-engine';

const config = createWorkflowConfig();

const submit = (data: WorkflowData) => {
  console.log(data);
};
</script>

<template>
  <DCWorkflow :config="config" @submit="submit" />
</template>
  1. 配置请求数据的方法,用于获取系统内用户、表单模型等数据:
<script setup lang="ts">
const config = createWorkflowConfig((config) => {
  config.setService({
    // 请求前缀
    baseAPI: '/api',
    // 发起 HTTP 请求的方法:默认为 ({ url, method })=> fetch(url, { method,}).then((res) => res.json()),
    request: ({ url, method }) => axios({ url, method }).then((res) => res.data),
  });
});
</script>

在线示例

Edit on CodeSandbox

Reference

DCWorkflow 组件

<DCWorkflow>Props

属性描述类型默认值备注
class自定义类名string-可选
config自定义节点配置项WorkflowConfig--
modelId工作流 idstring-可选

<DCWorkflow>Events

事件名描述参数
submit提交事件data: Data

<DCWorkflow>Slots

插槽名描述作用域
default自定义提交事件graphData

WorkflowCanvas 组件

<workflow-canvas>Props

属性描述类型默认值
data工作流数据Data-
config自定义节点配置项WorkflowConfig-

<workflow-canvas>Events

事件名描述参数
update:data更新参数data: Data

NodeGroup 组件

<node-group>Props

属性描述类型默认值
data工作流数据Data-

<node-group>Events

事件名描述参数
update:data更新参数data: Data

WorkflowNode 组件

<workflow-node>Props

WorkflowNode组件分别用于发起人节点和审批人节点参数,所以专属于发起人节点的参数flowPermission为可选参数。

属性描述类型默认值
nodeConfig节点配置项NodeConfig-
flowPermission发起人参数(可选)NodeUser[]-

<workflow-node>Events

事件名描述参数
update:nodeConfig更新节点信息nodeConfig:NodeConfig
update:flowPermission更新发起人节点信息nodeUsers:NodeUser[]

WorkflowBranch 组件

<workflow-branch>Props

属性描述类型默认值
nodeConfig节点配置项NodeConfig-

<workflow-branch>Events

事件名描述参数
update:nodeConfig更新节点信息nodeConfig:NodeConfig

WorkflowCondition 组件

WorkflowCondition组件是WorkflowBranch组件的子组件,每一条分支都必须有且只有一个直接条件判断节点。

<workflow-condition>Props

属性描述类型默认值
nodeConfig节点配置项NodeConfig-
index当前条件判断分支的位置number-
length所属分支的 lengthnumber-
id所属分支的 idstring-
hasDefault当前分支是否含有自动生成的默认条件节点boolean-

<workflow-condition>Events

事件名描述参数
update:nodeConfig更新节点信息nodeConfig:NodeConfig
delCondition删除此条条件判断分支index:number,direction:number
sortCondition条件判断排序index:number

AddNoteButton 组件

<add-node-button>Props

属性描述类型默认值
childNodeP节点组件原先的子节点配置NodeConfig | null | undefined-

<add-node-button>Events

事件名描述参数
update:childNodeP添加分支childNodeConfig:NodeConfig

类型定义

WorkflowConfig

interface WorkflowConfig {
  canvas?: WorkflowCanvasConfig;
  drawer?: WorkflowDrawerConfig;
  service: WorkflowServiceConfig;
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | 备注 | | ------- | -------------- | ----------------------------------------------- | ------ | ---- | | canvas | 自定义画布 | WorkflowCanvasConfig | - | 可选 | | drawer | 自定义 drawer | WorkflowDrawerConfig | - | 可选 | | service | 自定义 service | WorkflowServiceConfig | - | |

WorkflowCanvasConfig

interface WorkflowCanvasConfig {
  background?: string;
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | 备注 | | ---------- | ------ | -------- | ------ | ---- | | background | 背景色 | string | - | 可选 |

WorkflowDrawerConfig

interface WorkflowDrawerConfig {
  direction?: string;
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | 备注 | | --------- | ------------------ | -------- | ------ | ---- | | direction | 自定义 drawer 方向 | string | - | 可选 |

WorkflowServiceConfig

interface WorkflowServiceConfig {
  baseAPI?: string;
  request: WorkflowRequestFunction;
  modelDetailAPI?: string;
  userOptionsAPI?: string;
  modelFieldsAPI?: string;
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | 备注 | | -------------- | ------------------- | --------------------------------------------------- | ------ | ---- | | baseAPI | 自定义画布背景色 | string | - | 可选 | | request | 请求参数 | WorkflowRequestFunction | - | - | | modelDetailAPI | 根节点配置 | string | - | 可选 | | userOptionsAPI | 自定义发起人/操作人 | string | - | 可选 | | modelFieldsAPI | 自定义条件判断字段 | string | - | 可选 |

WorkflowRequestFunction

interface WorkflowRequestFunction {
  (params: WorkflowRequestParams): Promise<any>;
}
interface WorkflowRequestParams {
  url: string;
  method?: 'get' | 'post';
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | 备注 | | ------ | -------- | ----------------------- | ------ | ---- | | url | 请求 API | | - | | | method | 请求方法 | 'get' | 'post' | - | 可选 |

Data

interface Data {
  tableId: number;
  flowPermission: NodeUser[]; //发起人
  nodeConfig: NodeConfig;
  directorMaxLevel?: any; //审批主管最大层级
  workFlowDef?: {
    name: string;
  }; //审批名称
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | | ---------------- | ---------------- | ------------------ | ------ | | tableId | 工作流 id | number | - | | flowPermission | 发起人 | number | - | | nodeConfig | 根节点配置 | string | - | | directorMaxLevel | 审批主管最大层级 | any | - | | workFlowDef | 审批名称 | { name: string } | - |

NodeConfig

interface NodeConfig {
  nodeName: string;
  type: number; // 0 发起人 1审批 2抄送 3条件 4路由
  priorityLevel?: any; // 条件优先级
  settype?: any; // 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管
  selectMode?: any; //审批人数 1选一个人 2选多个人
  selectRange?: any; //选择范围 1.全公司 2指定成员 2指定角色
  directorLevel?: any; //审批终点  最高层主管数
  examineMode?: any; //多人审批时采用的审批方式 1依次审批 2会签
  noHanderAction?: any; //审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员
  examineEndDirectorLevel?: any; //审批终点 第n层主管
  ccSelfSelectFlag?: any; //允许发起人自选抄送人
  conditionList?: Condition[] | null | undefined; //当审批单同时满足以下条件时进入此流程
  conditionNodes?: NodeConfig[] | null | undefined;
  error?: boolean;
  nodeUserList: NodeUser[]; //操作人
  childNode: NodeConfig | null | undefined;
}

属性说明:

属性描述类型默认值备注
nodeName节点名称string-
type节点类型(0 发起人 1 审批人 2 抄送 3 条件 4 路由)number-
settype审批人设置number-可选
selectMode审批人数any-可选
selectRange选择范围any-可选
selectMode审批人数any-可选
examineMode多人审批时采用的审批方式any-可选
directorLevel审批终点 最高层主管数any-可选
noHanderAction审批人为空时 1 自动审批通过/不允许发起 2 转交给审核管理员any-可选
examineEndDirectorLevel审批终点 第 n 层主管any-可选
ccSelfSelectFlag允许发起人自选抄送人any-可选
conditionList条件判断节点中当审批单满足以下条件时进入此流程Condition[]-可选
conditionNodes具体几条分支NodeConfig[]-可选
nodeUserList操作人NodeUser [][]
error当前节点是否出错booleanfalse可选
childNode子节点NodeConfig-

NodeUser

interface NodeUser {
  targetId: number;
  type: number;
  name: string;
}

属性说明: | 属性 | 描述 | 类型 | 默认值 | | -------- | -------- | -------- | ------ | | targetId | 用户 id | number | ------ | | type | 用户类型 | number | ------ | | name | 用户名字 | string | ------ |

Condition

interface Condition {
  columnDbname: string; //条件字段名称
  columnId: number; //条件id  columnId == 0 为发起人
  //columnType == "String" && showType == "3"为多选  columnType == "Double"为区间
  columnType: any; //条件字段类型
  conditionCn: any;
  conditionEn: any;
  //fixedDownBoxValue 匹配 columnType == "String" && showType == "3"时子选项内容
  fixedDownBoxValue?: any; //多选数组
  opt1: string; //左侧符号 < ≤
  opt2: string; //右侧符号 < ≤
  optType: string; //["", "<", ">", "≤", "=", "≥"][optType]
  showName: string; //展示名
  showType: string; //3多选 其他
  type: any; //1 发起人 2其他
  zdy1: string; //左侧自定义内容
  zdy2: string; //右侧自定义内容
}
属性描述类型默认值备注
showName条件字段名称string--
showType条件展示类型string--
columnId条件字段 Idany--
columnType条件字段类型any--
optType数字型条件符号类型string--
zdy1左侧自定义内容string--
zdy2右侧自定义内容(仅在optType==='6'时使用)string--
opt1左侧符号(仅在optType==='6'时使用)string--
opt2右侧符号(仅在optType==='6'时使用)string--
conditionCn条件中文名称string--
conditionEn条件英文名称string--
fixedDownBoxValue多选数组any-可选