# simple-flow-chart
**Repository Path**: woate_admin/simple-flow-chart
## Basic Information
- **Project Name**: simple-flow-chart
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-05-12
- **Last Updated**: 2025-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 一个基于Vue2的极简流程设计组件
> 如果需要在`React`项目中使用,可以移步`kne-union`实现的`react`版本:
>
> 项目地址:https://github.com/kne-union/react-flow-chart
>
> 在线文档和示例:https://www.kne-union.top/#/libs/ReactFlowChart
## 安装
```bash
npm i @wanglin1994/simple-flow-chart
```
## 引入
```js
import SimpleFlowChart from '@wanglin1994/simple-flow-chart'
Vue.use(SimpleFlowChart, {
notRegisterNodeContent: false, // 如果需要自己编写节点内容组件,设为true
notRegisterNodeTypeContent: false // 如果需要自己编写添加节点的悬浮面板组件,设为true
})
```
## 使用
```html
```
提供一个宽高固定的容器,双向绑定的数据`data`可以回传完整数据,或者初始传一个空数组即可。
# 详细文档
### 数据
```html
```
`data`数据结构示例如下:
```js
[
{ id: 'startEvent', type: 'start', title: '开始' },
{
id: '随机id',
type: 'normal',
title: '申请人',
content: '员工',
configData: {},
nodeList: []
},
{
id: '随机id',
type: 'condition',
title: '条件分支',
children: [
{
id: '随机id',
title: '通过',
content: '理由充分',
type: 'normal',
configData: {},
nodeList: [
{
id: '随机id',
type: 'normal',
title: '审批人',
content: '上级主管',
configData: {},
nodeList: []
},
{
id: '随机id',
type: 'normal',
title: '指派',
content: 'HR',
configData: {},
nodeList: []
}
]
},
{ id: 'endEvent', type: 'end', title: '结束' }
]
```
`title`字段为节点标题,会显示在节点上,`content`为节点内容,也会显示在节点上,如果有不需要显示的自定义数据都可以保存在`configData`里。
`id`默认会使用`uuid`随机生成,也可以自定义生成。
## 属性
```html
```
`SimpleFlowChart`组件还支持以下属性:
### initFit
> v0.0.4+
类型:`Boolean`,默认为`false`
是否在第一次渲染时将流程图自动缩放至全部显示。
如果你想在容器大小改变后自动缩放,那么需要手动调用组件实例的`fit()`方法。
### showScrollBar
> v0.0.4+
类型:`Boolean`,默认为`true`
是否显示滚动条。
### enableDrag
> v0.0.3+
类型:`Boolean`,默认为`true`
是否必传:否
是否开启按住画布拖拽功能。
### customCreateNode
类型:`Function`
是否必传:否
回调参数:`nodeList`(当前被点击添加新节点的节点所在节点列表), `nodeData`(当前被点击添加新节点的节点), `type`(悬浮面板里点击要添加的节点类型数据)
自定义创建新节点,当点击添加节点的时候会调用该函数,需要返回一个要添加的新节点的数据结构。
### customCreateConditionBranchNode
类型:`Function`
是否必传:否
回调参数:`nodeData`
自定义创建新的分支节点。需要返回一个要添加的新节点的数据结构。
### beforeDeleteNode
类型:`Function`
是否必传:否
回调参数:`nodeList`, `childrenList`, `belongConditionNodeData`, `nodeData`
删除节点前的回调函数,需要返回一个`Promise`,如果结果是`resolve` ,那么会执行删除,否则什么也不做。如果需要进行删除前的二次确认那么这个函数是你需要的。
### background
类型:`String`
是否必传:否
默认值:`rgba(0, 0, 0, 0.03)`
画布背景颜色。
### readonly
类型:`Boolean`
是否必传:否
默认值:`false`
是否只读。
### nodeTypeList
类型:`Array`
是否必传:否
默认可以添加的节点列表数据如下:
```js
[
{
name: '普通节点',
list: [
{
type: 'normal',
name: '普通节点'
}
]
},
{
name: '分支节点',
list: [
{
type: 'condition',
name: '条件分支'
}
]
}
]
```
你可以通过该属性自定义可添加的节点类型列表。
### vertical
类型:`Boolean`
是否必传:否
是否垂直显示。
### showScaleBar
类型:`Boolean`
是否必传:否
是否显示右上角的放大缩小控件。
### customCreateNodeId
类型:`Function`
是否必传:否
自定义创建节点的唯一的`id`。
## 方法
### fit()
> v0.0.4+
将流程图缩放至全部显示。
## 事件
`SimpleFlowChart`组件上可以监听如下事件:
### add-node
数据:`newNode`
添加完新节点后触发。
### delete-node
数据:`nodeData`
删除一个节点后触发。
### add-condition-branch
数据:`newNode`
添加完新的分支节点后触发。
### node-content-click
数据:`nodeData`、`nodeList`
一个节点被点击时触发,一般用于配置某个节点数据时使用。
## 自定义节点
如果想自定义节点的样式,首先需要在注册组件时传入如下选项:
```js
Vue.use(SimpleFlowChart, {
notRegisterNodeContent: true, // 如果需要自己编写节点内容组件,设为true
})
```
然后你就可以自己编写一个节点内容的组件了,组件的名称,也就是`name`必须为`SFCNodeContent`,然后再使用前先全局注册即可。
组件的数据可以通过名为`data`的`props`来接收。
## 自定义节点添加悬浮面板
如果想自定义添加节点类型的悬浮选择面板,首先需要在注册组件时传入如下选项:
```js
Vue.use(SimpleFlowChart, {
notRegisterNodeContent: true,
})
```
然后你就可以自己编写一个组件了,组件的名称,也就是`name`必须为`SFCNodeTypeContent`,然后再使用前先全局注册即可。