欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue開發(fā)之LogicFlow自定義業(yè)務(wù)節(jié)點

 更新時間:2023年01月10日 08:37:52   作者:小鑫同學(xué)  
這篇文章主要為大家介紹了vue開發(fā)之LogicFlow自定義業(yè)務(wù)節(jié)點,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

推薦幾個好用的工具

進入正題

LogicFlow 是一款流程圖編輯框架,提供了一系列流程圖交互、編輯所必需的功能和靈活的節(jié)點自定義、插件等拓展機制。LogicFlow支持前端研發(fā)自定義開發(fā)各種邏輯編排場景,如流程圖、ER圖、BPMN流程等。在工作審批配置、機器人邏輯編排、無代碼平臺流程配置都有較好的應(yīng)用。

這一節(jié)將講解快速上手 LogicFlow 流程圖編輯框架的自定義業(yè)務(wù)節(jié)點內(nèi)容,代碼要在上一節(jié)的基礎(chǔ)上進行開發(fā),使用1024code在線編寫代碼的小伙伴可以直接fork上一節(jié)的代碼開始,這一節(jié)的大致內(nèi)容包括了,準備自定義業(yè)務(wù)節(jié)點的模板、注冊和使用、自定義樣式、自定義形狀、自定義外觀幾個方面,做好準備后我們就開始了。

1. 認識自定義業(yè)務(wù)節(jié)點模板:

LF框架自定義業(yè)務(wù)節(jié)點使用到了面向?qū)ο笾欣^承的概念,通過繼承LF提供的 XxxNodeXxxNodeModel 類后對相關(guān)的函數(shù)進行重寫,并在默認導(dǎo)出時提供 type、view 和 model`;

下面這段代碼繼承了Rect相關(guān)的 RectNodeRectNodeModel,如果要繼承其他的內(nèi)置對象還請查看官方文檔或源碼:

// 源碼位置:./src/CustomNode.ts
import { RectNode, RectNodeModel } from "@logicflow/core";
class CustomNodeView extends RectNode {
}
class CustomNodeModel extends RectNodeModel {
}
export default {
    type: "CustomNode",
    view: CustomNodeView,
    model: CustomNodeModel,
}

2. 優(yōu)先進行注冊和使用:

自定義業(yè)務(wù)模板準備好以后就可以先進行注冊和使用了,第一個是因為在繼承內(nèi)置類后雖然沒有進行任何的函數(shù)重寫但是不耽誤渲染結(jié)果;第二個是因為一開始并不熟悉,所以要及時注冊和使用起來看到效果,也是方便后續(xù)的自定義。

2.1 注冊自定義業(yè)務(wù)節(jié)點:

注冊過程主要分兩個步驟:

  • 第一要將上面編寫的 CustomNode.ts 導(dǎo)入到 App.vue;
  • 第二要將 CustomNode 對象通過lf實例中的 register() 函數(shù)在 render() 前注冊;
// 導(dǎo)入自定義節(jié)點
import CustomNode from "./CustomNode";
const graphData = {}
...
onMounted(() => {
  // 在執(zhí)行render前進行注冊
  lf.value.register(CustomNode);
  lf.value.render(graphData);
})

2.2 如何使用自定義業(yè)務(wù)節(jié)點:

在成功注冊后即可通過 render 函數(shù)來渲染業(yè)務(wù)流程中的一切元素的數(shù)據(jù),自定義的業(yè)務(wù)節(jié)點和內(nèi)置的默認節(jié)點使用方式相同,都是通過 type 選項來標識;

// 定義graphData
// 數(shù)據(jù)中的type為自定義節(jié)點導(dǎo)出的type屬性的值
// 將節(jié)點在坐標為(100,100)的位置顯示
const graphData = {
  nodes: [
    {
      id: 'fba7fc7b-83a8-4edd-b4be-21f694a5d490',
      type: 'CustomNode',
      x: 100,
      y: 100
    }
  ]
}

3. 自定義業(yè)務(wù)節(jié)點樣式:

自定義業(yè)務(wù)節(jié)點樣式(綠色描邊),需要重寫 RectNodeModel 類中的 getNodeStyle() 函數(shù),通過關(guān)鍵詞 super 獲取到父類中的節(jié)點樣式,并改變 stroke 的值為綠色,最后將修改完成的 style 返回;

class CustomNodeModel extends RectNodeModel {
  getNodeStyle() {
  	const style = super.getNodeStyle();
  	style.stroke = 'green';
  	return style;
	}
}

4. 自定義業(yè)務(wù)節(jié)點形狀:

自定義業(yè)務(wù)節(jié)點形狀(圓角矩形)和自定義業(yè)務(wù)節(jié)點樣式一樣的簡單,重寫RectNodeModel類中的initNodeData(data: any)函數(shù)就可以了;

class CustomNodeModel extends RectNodeModel {
  initNodeData(data: any): void {
    super.initNodeData(data);
    this.width = 120;
    this.height = 80;
    this.radius = 10;
  }
}

5. 自定義業(yè)務(wù)節(jié)點外觀:

前面的自定義業(yè)務(wù)節(jié)點樣式和形狀都是在原有內(nèi)置對象的基礎(chǔ)上進行屬性的調(diào)整,為了實習(xí)更高的自定義的外觀,需要用到類似 Vue 中的 h 函數(shù)(渲染函數(shù)),通過重寫 RectNode 中的 Shape() 并借助渲染函數(shù)實現(xiàn)外觀的自定義;

  • 第一步:重寫 getShape 函數(shù),獲取 props 中存儲的當前節(jié)點的信息,如位置、尺寸和樣式等;
  • 第二步:節(jié)點的外觀要基于 SVG 實現(xiàn),下面的案例要在業(yè)務(wù)組件左上角顯示一個ICON,ICON可以從 iconfont 找一個自己喜歡的;
class CustomNodeView extends RectNode {
  getShape() {
      // 獲取XxxNodeModel中定義的形狀屬性
      const { model } = this.props;
      const { x, y, width, height, radius } = model;
      // 獲取XxxNodeModel中定義的樣式屬性
      const style = model.getNodeStyle();
      return h('g', {}, [
          h('rect', {
              ...style,
              x: x - width / 2,
              y: y - height / 2,
              width,
              height,
              rx: radius,
              ry: radius,
          })
          h('svg', {
              x: x - width / 2 + 5,
              y: y - height / 2 + 5,
              width: 25,
              height: 25,
              viewBox: "0 0 1028 1024",
          }, [
              h('path', {
                  fill: style.stroke,
                  d: "<icon-svg-data>",
              })
          ])
      ]);
  }
}

6. 重啟項目預(yù)覽效果:

至此自定義業(yè)務(wù)節(jié)點基本完成,這種樣式也是大多數(shù)流程管理系統(tǒng)中常見的一種風(fēng)格,接著補充一下 graphData 數(shù)據(jù),來看一下最終的效果~

const graphData = {
  nodes: [
    {
      id: 'fba7fc7b-83a8-4edd-b4be-21f694a5d490',
      type: 'CustomNode',
      x: 100,
      y: 100
    },
    {
      id: '681035e6-11e3-43d7-9392-1deed852c01a',
      type: 'CustomNode',
      x: 300,
      y: 100
    }
  ],
  edges: [
    {
      sourceNodeId: 'fba7fc7b-83a8-4edd-b4be-21f694a5d490',
      targetNodeId: '681035e6-11e3-43d7-9392-1deed852c01a',
      type: 'polyline'
    }
  ]
}

總結(jié)

這一節(jié)的內(nèi)容就到此結(jié)束了,自定義業(yè)務(wù)節(jié)點的樣式、形狀和外觀都搞定了嗎?尤其是外觀的自定義需要渲染 SVG 標簽,所以掌握一些 SVG 相關(guān)的數(shù)據(jù)或掌握使用工具的生成 SVG 數(shù)據(jù)還是很有必要的,感覺把這一節(jié)的代碼熟悉熟悉,接著要對 LF中的 Edge 進行自定義了。

以上就是vue開發(fā)之LogicFlow自定義業(yè)務(wù)節(jié)點的詳細內(nèi)容,更多關(guān)于LogicFlow自定義業(yè)務(wù)節(jié)點的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決vue cli使用typescript后打包巨慢的問題

    解決vue cli使用typescript后打包巨慢的問題

    這篇文章主要介紹了解決vue cli使用typescript后打包巨慢的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue中router.beforeEach()的簡單用法舉例

    vue中router.beforeEach()的簡單用法舉例

    router.beforeEach()一般用來做一些進入頁面的限制,比如沒有登錄,就不能進入某些頁面,只有登錄了之后才有權(quán)限查看某些頁面,下面這篇文章主要給大家介紹了關(guān)于vue中router.beforeEach()的簡單用法舉例,需要的朋友可以參考下
    2023-01-01
  • vue el-checkbox實現(xiàn)全選單選方式

    vue el-checkbox實現(xiàn)全選單選方式

    這篇文章主要介紹了vue el-checkbox實現(xiàn)全選單選方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue?demi支持sfc方式的vue2vue3通用庫開發(fā)詳解

    vue?demi支持sfc方式的vue2vue3通用庫開發(fā)詳解

    這篇文章主要為大家介紹了vue?demi支持sfc方式的vue2vue3通用庫開發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • vue實現(xiàn)給當前元素添加樣式,其他元素?zé)o樣式問題

    vue實現(xiàn)給當前元素添加樣式,其他元素?zé)o樣式問題

    這篇文章主要介紹了vue實現(xiàn)給當前元素添加樣式,其他元素?zé)o樣式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue按時間段查詢數(shù)據(jù)組件使用詳解

    Vue按時間段查詢數(shù)據(jù)組件使用詳解

    這篇文章主要為大家詳細介紹了Vue按時間段查詢數(shù)據(jù)組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • vue 父組件獲取子組件里面的data數(shù)據(jù)(實現(xiàn)步驟)

    vue 父組件獲取子組件里面的data數(shù)據(jù)(實現(xiàn)步驟)

    在Vue中,父組件可以通過`ref`引用子組件,并通過`$refs`屬性來訪問子組件的數(shù)據(jù),下面分步驟給大家介紹vue 父組件獲取子組件里面的data數(shù)據(jù),感興趣的朋友一起看看吧
    2024-06-06
  • vue-cli中的babel配置文件.babelrc實例詳解

    vue-cli中的babel配置文件.babelrc實例詳解

    Babel是一個廣泛使用的轉(zhuǎn)碼器,可以將ES6代碼轉(zhuǎn)為ES5代碼,從而在現(xiàn)有環(huán)境執(zhí)行。本文介紹vue-cli腳手架工具根目錄的babelrc配置文件,感興趣的朋友一起看看吧
    2018-02-02
  • Vue組件如何設(shè)置Props實例詳解

    Vue組件如何設(shè)置Props實例詳解

    props主要用于組件的傳值,他的工作就是為了接收外面?zhèn)鬟^來的數(shù)據(jù),與data、el、ref是一個級別的配置項,下面這篇文章主要給大家介紹了關(guān)于Vue組件如何設(shè)置Props的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • vue2升級vue3問題bug解決分析整理

    vue2升級vue3問題bug解決分析整理

    這篇文章主要介紹了vue2升級vue3遇到的問題bug解決分析整理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論