基于jeecgboot-vue3的Flowable流程-集成仿釘釘流程(五)仿釘釘流程的json數據保存與顯示

因為這個項目license問題無法開源,更多技術支持與服務請加入我的知識星球。

1、需要做一個界面保存與顯示仿釘釘的流程,先建一個表,用online建

2、通過上面生成代碼,放入到相應的前后端工程里

3、修改前端仿釘釘流程的設計功能,在原來list頁面上增加一個對話框,如下:

<el-dialog :title="designerData.name" class="ddDialog" v-model="designerOpen" append-to-body fullscreen><ding-designerref="ddDesigner"v-loading="designerLoading":process = "flowJsonData"@save="onSaveDesigner"/></el-dialog>

4、增加一個上面的仿釘釘流程組件

<template><div class="formDesign"><FlowDesign :process="process" :fields="fields" :readOnly="readOnly"><el-switchinline-promptsize="large"active-text="正常模式"inactive-text="暗黑模式"@change="handleToggleDark"v-model="isDark"/><el-switchv-model="readOnly"size="large"active-text="只讀模式"inactive-text="編輯模式"inline-prompt:active-value="true":inactive-value="false"/><el-button-group><el-button @click="viewJson" size="small" type="primary" round icon="View"> 查看Json</el-button></el-button-group><el-button-group><el-button @click="viewXmlBpmn" size="small" type="primary" round icon="View"> 查看XML </el-button></el-button-group><el-button-group><el-button @click="converterBpmn" size="small" type="primary" round icon="View"> 預覽bpmn </el-button></el-button-group><el-button-group><el-button @click="save" size="small" type="primary" round icon="View"> 保存 </el-button></el-button-group></FlowDesign><el-dialog title="預覽" width="60%" v-model="previewModelVisible" append-to-body destroy-on-close><highlightjs :language="previewType" :code="previewResult" style="height: 80vh" /></el-dialog><!-- Bpmn流程圖 --><el-dialog :title="processView.title" v-model="processView.open" width="70%" append-to-body><process-viewer :key="`designer-${processView.title}`" :xml="processView.xmlData" :style="{height: '500px'}" /></el-dialog></div></template><script setup lang="ts" name="DingDesigner">
import { ref, reactive, toRaw, onMounted } from 'vue';
import '@/views/lowflow/styles/index.scss'// If you want to use ElMessage, import it.
import 'element-plus/dist/index.css';
import 'element-plus/theme-chalk/display.css';import FlowDesign from '@/views/lowflow/flowDesign/index.vue'
import type { Field } from '@/views/lowflow/components/Render/type'
import type { EndNode, FlowNode, StartNode } from '@/views/lowflow/flowDesign/nodes/type'
import { viewXml, ddToBpmnXml } from '@/views/lowflow/api/modules/model'
import ProcessViewer from '@/components/ProcessViewer/index.vue';
import { useMessage } from '/@/hooks/web/useMessage';const { createMessage, createConfirm } = useMessage();const props = defineProps({process: {type: Object,required: true},
});const emit = defineEmits(['save'
])const previewModelVisible = ref(false)
const previewResult = ref('')
const previewType = ref('xml')const processView =  reactive<any>({title: '',open: false,xmlData:'',
})// 流程節點
/*const process = ref<FlowNode>({id: 'root',pid: undefined,type: 'start',name: '流程開始',executionListeners: [],formProperties: [],child: {id: 'end',pid: 'root',type: 'end',name: '流程結束',executionListeners: [],child: undefined} as EndNode
} as StartNode)*/// 表單字段
const fields = ref<Field[]>([{id: 'field_da2w55',type: 'formItem',label: '請假人',name: 'UserSelector',value: null,readonly: false,required: true,hidden: false,props: {multiple: false,disabled: false,placeholder: '請選擇用戶',style: {width: '100%'}}},{id: 'field_fa2w40',type: 'formItem',label: '請假天數',name: 'ElInputNumber',value: null,readonly: false,required: true,hidden: false,props: {disabled: false,placeholder: '請假天數',style: {width: '100%'},min: 0,max: 100,step: 1,precision: 0}},{id: 'field_d42t45',type: 'formItem',label: '請假事由',name: 'ElSelect',value: null,readonly: false,required: true,hidden: false,props: {disabled: false,multiple: false,placeholder: '請選擇請假事由',options: [{label: '事假',value: '事假'},{label: '病假',value: '病假'},{label: '婚假',value: '婚假'},{label: '產假',value: '產假'},{label: '喪假',value: '喪假'},{label: '其他',value: '其他'}],style: {width: '100%'}}},{id: 'field_522g58',type: 'formItem',label: '請假原因',name: 'ElInput',value: null,readonly: false,required: true,hidden: false,props: {type: 'textarea',placeholder: '請輸入請假原因',autosize: {minRows: 3,maxRows: 3},disabled: false,style: {width: '100%'}}}
])
// 是否只讀
const readOnly = ref(false)
// 是否暗黑模式
const isDark = ref(false)const viewJson = () => {const processJson = JSON.stringify(props.process,undefined, 2); previewResult.value = processJson; previewType.value = 'json'previewModelVisible.value = true
}
const viewXmlBpmn = () => {const processModel = {code: 'test',name: '測試',icon: {name: 'el:HomeFilled',color: '#409EFF'},process: props.process,enable: true,version: 1,sort: 0,groupId: '',remark: ''}const xmlData = viewXml(processModel)xmlData.then((result) => {previewResult.value = resultpreviewType.value = 'xml'previewModelVisible.value = true})}
const converterBpmn = () => {const processModel = {code: 'test',name: '測試',icon: {name: 'el:HomeFilled',color: '#409EFF'},process: props.process,enable: true,version: 1,sort: 0,groupId: '',remark: ''}ddToBpmnXml(processModel).then(res => {console.log("ddToBpmnXml res",res)processView.xmlData = res.resultprocessView.title = "Bpmn流程圖預覽"processView.open = true})  
}const save = () => {const flowData = props.processemit('save', flowData);
}const handleToggleDark = () => {if (isDark.value) {document.documentElement.classList.add('dark')} else {document.documentElement.classList.remove('dark')}
}onMounted(() => {});</script><style scoped lang="scss">.formDesign {z-index: 999;top: 120px;height: 100%;}
</style>

5、效果圖如下:

點設計如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44772.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44772.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44772.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spark基于Spark的對招聘信息的分析與設計-計算機畢業設計源碼50716

目 錄 摘要 1 緒論 1.1 研究背景 1.2 研究意義 1.3論文結構與章節安排 2 系統分析 2.1 可行性分析 2.2.1 數據新增流程 2.2.2 數據刪除流程 2.3 系統功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系統用例分析 2.5本章小結 3 系統總體設計 3.1 系統架構設…

Vue2/Vue3實現全局/局部添加防篡改水印的效果。刪除元素無效!更改元素屬性無效!支持圖片、元素、視頻等等。

水印目的 版權保護:水印可以在圖片、文檔或視頻中嵌入作者、品牌或版權所有者的信息,以防止未經授權的復制、傳播或使用。當其他人使用帶有水印的內容時,可以追溯到原始作者或版權所有者,從而加強版權保護。 身份識別:水印可以用作作者或品牌的標識符,使觀眾能夠輕松識…

springboot對ZonedDateTime返回結果json是string-源碼分析

springboot對ZonedDateTime返回結果json是string-源碼分析 application/json格式默認使用ObjectMapper實例進行序列化ObjectMapper自動注入分析springboot關于jackson配置 java.time.ZonedDateTime application/json格式默認使用ObjectMapper實例進行序列化 controller返回后&…

人形機器人的理想與現實

李開復曾提到過一個AI界流傳的“騙子又來了曲線”。 人會不斷給機器進行“是否具有人類智能”的鑒定&#xff0c;而這個過程&#xff0c;總是從被人工智能在某些領域的驚艷表現震撼&#xff0c;到逐漸認識到當時的人工智能還有各種局限&#xff0c;以至于產生巨大心理落差。 近…

html js 3d z軸移動 實現星空

用chatgpt還有kimi 讓實現動畫效果的星空,都太垃圾了 不是y軸移動,就是x軸移動, 我要z軸移動,他們就是搞不出來, ai寫代碼還有很長的路。 <!DOCTYPE html> <meta charset="utf-8" /> <head> <title>ai相關博客</title> </h…

【操作系統】手把手帶你搭建DNS服務器!

DNS服務器 DNS服務器指域名系統或者域名服務。域名系統為Internet上的主機分配域名地址和IP地址&#xff0c;用戶使用域名地址&#xff0c;該系統就會自動把域名地址轉為IP地址。域名服務是運行域名系統的Internet工具。執行域名服務的服務器稱之為DNS服務器&#xff0c;通過DN…

51單片機嵌入式開發:8、 STC89C52RC 操作LCD1602原理

STC89C52RC 操作LCD1602原理 1 LCD1602概述1.1 LCD1602介紹1.2 LCD1602引腳說明1.3 LCD1602指令介紹 2 LCD1602外圍電路2.1 LCD1602接線方法2.2 LCD1602電路原理 3 LCD1602軟件操作3.1 LCD1602顯示3.2 LCD1602 protues仿真 4 總結 1 LCD1602概述 1.1 LCD1602介紹 LCD1602是一種…

maven——(重要)手動創建,構建項目

創建項目 手動按照maven層級建好文件夾&#xff0c;并寫上java&#xff0c;測試代碼和pom文件 構建項目 在dos窗口中執行如下命令 compile編譯 當前maven倉庫中什么都沒有。 在pom所在層級下&#xff0c;執行&#xff1a; mvn compile 就開始顯示下面這些&#xff0c;…

數據庫-ubuntu環境下安裝配置mysql

文章目錄 什么是數據庫&#xff1f;一、ubuntu環境下安裝mysql二、配置mysql配置文件1.先登上root賬號2.配置文件的修改show engines \G; mysql和mysqld數據庫的基礎操作登錄mysql創建數據庫顯示當前數據庫使用數據庫創建表插入students表數據打印students表數據select * from …

前端使用Vue和Element實現可拖動彈框效果,且不影響底層元素操作,Cesium作為底圖(可拖拽的視頻實時播放彈框,底層元素可以正常操作)

簡述&#xff1a;在前端開發中&#xff0c;彈框和實時視頻播放是常見的需求。這里來簡單記錄一下&#xff0c;如何使用Vue.js和Element UI實現一個可拖動的彈框&#xff0c;并在其中播放實時視頻。同時&#xff0c;確保在拖拽彈框時&#xff0c;底層元素仍然可以操作。這里來記…

vue 畫二維碼及長按保存

需求 想要做如下圖的二維碼帶文字&#xff0c;且能夠長按保存 前期準備 一個canvas安裝qrcode&#xff08;命令&#xff1a;npm i qrcode&#xff09; 畫二維碼及文字 初始化畫布 <template><div><canvas ref"canvas" width"300" he…

JAVASE進階day07(泛型,集合,Set,TreeSet,枚舉,數據結構)

泛型 1.泛型的基本使用 限制集合存儲的數據類型 package com.lu.day07.generics;/*** 定義了一個泛型類* E 泛型通配字母(不固定代替真實數據類型A-Z都可以)* 常見的泛型通配字母:* E:element 元素* T:type 類型* R:return 返回值類型* K:key 鍵* …

14.爬蟲---Selenium 經典動態渲染工具的使用

14.Selenium 經典動態渲染工具的使用 1.查看chrome瀏覽器版本2.ChromeDriver 安裝3.Selenium 安裝4.驗證安裝5.基本用法5.1啟動瀏覽器5.2導航到頁面5.3查找元素5.3.1單個元素 find_element5.3.2多個元素 find_elements 5.4 執行操作5.5 動作鏈ActionChains5.6 執行 JavaScript …

Python基礎語法:運算符詳解(算術運算符、比較運算符、邏輯運算符、賦值運算符)②

文章目錄 Python中的運算符詳解一、算術運算符二、比較運算符三、邏輯運算符四、賦值運算符五、綜合示例結論 Python中的運算符詳解 在Python編程中&#xff0c;運算符用于執行各種操作&#xff0c;例如算術計算、比較、邏輯判斷和賦值。了解并掌握這些運算符的使用方法是編寫…

pychopper的安裝與使用

文章目錄 安裝使用 安裝 在Linux環境下使用conda安裝 通常習慣一個軟件一個虛擬環境&#xff1a; conda create -n pychopper -c nanoporetech -c conda-forge -c bioconda "nanoporetech::pychopper"使用 參考官方文檔&#xff1a; https://github.com/epi2me-la…

N-(4-Azido-2-nitrophenyl)-N‘‘-biotinylnorspemidine

?一、基本信息 常用名&#xff1a;N-(4-Azido-2-nitrophenyl)-N-biotinylnorspemidine 英文名&#xff1a;N-(4-Azido-2-nitrophenyl)-N-biotinylnorspemidine CAS號&#xff1a;786609-83-4 分子式&#xff1a;C22H33N9O4S 分子量&#xff1a;519.62 二、結構特點 該化…

SQL職場必備:掌握數據庫技能提升職場競爭力

&#x1f482; 個人網站:【 摸魚游戲】【網址導航】【神級代碼資源網站】&#x1f91f; 一站式輕松構建小程序、Web網站、移動應用&#xff1a;&#x1f449;注冊地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;輕量化工具創作平臺&#x1f485; 想尋找共同學習交…

vue3 + tsx 表格 Action 單獨封裝組件用法

前言 先上圖看右側列 action 的 UI 效果&#xff1a; 正常來說&#xff0c;如果一個表格的附帶 action 操作&#xff0c;我們一般會放在最右側的列里面實現&#xff0c;這個時候有些UI 框架支持在 SFC 模板里面定義額外的 solt&#xff0c;當然如果不支持&#xff0c;更通用的…

【網絡】SCTP協議概念

SCTP協議 SCTP&#xff08;Stream Control Transmission Protocol&#xff09;是一種傳輸層協議&#xff0c;設計用于提供可靠的數據傳輸服務&#xff0c;同時具備一些類似UDP&#xff08;User Datagram Protocol&#xff09;的屬性。以下是SCTP協議的基本概念、優缺點以及與T…

Linux進行vi編譯代碼出現“E45: ‘readonly‘ option is set (add ! to override)”(完美解決)。

用vi修改文件&#xff0c;保存文件時&#xff0c;提示沒有修改該文件的權限“E45: ‘readonly’ option is set (add ! to override)”的解決方法。 E45: ‘readonly’ option is set (add ! to override) 如果您遇到了“當前用戶沒有權限對文件作修改”的錯誤 1. 檢查文件…