基于jeecgboot-vue3的Flowable流程-集成仿釘釘流程(一)圖標svgicon的使用

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

1、lowflow這里使用了tsx的動態圖標,如下:

import './index.scss'
import type { CSSProperties, PropType } from 'vue'
import { computed, defineComponent, resolveComponent, h } from 'vue'export default defineComponent({name: 'SvgIcon',props: {name: {type: String as PropType<string>,required: true},prefix: {type: String as PropType<string>,default: 'icon'},color: {type: String as PropType<string>},size: {type: Number as PropType<number>},className: {type: String as PropType<string>}},setup(props) {const symbolId = computed(() => `#${props.prefix}-${props.name}`)const svgClass = computed(() => ['svg-icon',props.name && props.name.replace('el:', ''),props.className])const fill = computed(() => (props.color ? props.color : 'currentColor'))const style = computed<CSSProperties>(() => {const { size } = propsif (!size) return {}return {fontSize: `${size}px`}})return {symbolId,svgClass,fill,style}},render() {const { $attrs, symbolId, svgClass, fill } = thisif (this.name) {if (this.name.startsWith('el:')) {return (<el-icon class={svgClass} color={this.color} size={this.size} {...$attrs}>{h(resolveComponent(this.name.slice(3)))}</el-icon>)} else {return (<svg class={svgClass} style={this.style} aria-hidden="true" {...$attrs}><use xlinkHref={symbolId} fill={fill}></use></svg>)}}return null}
})

這里根據jeecgboot的項目情況增加下面一行,否則會報錯(因為沒有自動引入組件)

import { computed, defineComponent, resolveComponent, h } from 'vue'

2、在需要用到上面tsx的組件,需要單獨引入,因為本身jeecgboot有自己的圖標組件,為了不引起沖突,還是單獨引入為好,如add.vue增加節點的圖標顯示

<script setup lang="ts">
import { ref, reactive, computed, inject, defineComponent } from 'vue';
import type { PopoverInstance } from 'element-plus'
import type { NodeType } from './type'
import type { Ref } from 'vue'
import SvgIcon from '@/views/lowflow/components/SvgIcon/index'const { readOnly } = inject<{readOnly?: Ref<boolean>
}>('flowDesign', { readOnly: ref(false) })
const popoverRef = ref<PopoverInstance>()
const $emits = defineEmits<{(e: 'addNode', type: NodeType): void
}>()
const addApprovalNode = () => {$emits('addNode', 'approval')popoverRef.value?.hide()
}
const addCcNode = () => {$emits('addNode', 'cc')popoverRef.value?.hide()
}
const addExclusiveNode = () => {$emits('addNode', 'exclusive')popoverRef.value?.hide()
}
const addTimerNode = () => {$emits('addNode', 'timer')popoverRef.value?.hide()
}
const addNotifyNode = () => {$emits('addNode', 'notify')popoverRef.value?.hide()
}
</script><template><div class="add-but"><el-popoverplacement="bottom-start"ref="popoverRef"trigger="click"title="添加節點":width="336"><el-space wrap><div class="node-select" @click="addApprovalNode"><svg-icon name="el:Stamp" /><el-text>審批人</el-text></div><div class="node-select" @click="addCcNode"><svg-icon name="el:Promotion" /><el-text>抄送人</el-text></div><div class="node-select" @click="addExclusiveNode"><svg-icon name="el:Share" /><el-text>互斥分支</el-text></div><div class="node-select" @click="addTimerNode"><svg-icon name="el:Timer" /><el-text>計時等待</el-text></div><div class="node-select" @click="addNotifyNode"><svg-icon name="el:BellFilled" /><el-text>消息通知</el-text></div></el-space><template #reference><el-buttonv-show="!readOnly"icon="Plus"type="primary"style="z-index: 1"circle></el-button></template></el-popover></div>
</template><style scoped lang="scss">
.node-select {cursor: pointer;display: flex;padding: 8px;width: 135px;border-radius: 10px;position: relative;background-color: var(--el-fill-color-light);&:hover {background-color: var(--el-color-primary-light-9);box-shadow: var(--el-box-shadow-light);color: var(--el-color-primary);}.svg-icon {font-size: 25px;padding: 5px;border-radius: 50%;color: var(--el-color-white);&.Stamp {background-color: #ff943e;}&.Promotion {background-color: #3296fa;}&.Share {background-color: #45cf9b;}&.Timer {background-color: #e872b7;}&.BellFilled {background-color: #95d475;}}.el-text {margin-left: 10px;}
}.add-but {display: flex;justify-content: center;width: 100%;padding: 20px 0 32px;position: relative;&:before {content: '';position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;width: 1px;height: 100%;background-color: var(--el-border-color);}
}
</style>

3、效果如下:

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

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

相關文章

MATLAB基礎應用精講-【數模應用】 嶺回歸(Ridge)(附MATLAB、python和R語言代碼實現)

目錄 前言 算法原理 數學模型 Ridge 回歸的估計量 Ridge 回歸與標準多元線性回歸的比較 3. Ridge 參數的選擇 算法步驟 SPSSPRO 1、作用 2、輸入輸出描述 3、案例示例 4、案例數據 5、案例操作 6、輸出結果分析 7、注意事項 8、模型理論 SPSSAU 嶺回歸分析案…

Java [ 進階 ] 深入理解 JVM

?探索Java基礎 深入理解 JVM? 深入理解 JVM&#xff1a;結構與垃圾回收機制 Java 虛擬機&#xff08;JVM&#xff09;是 Java 程序運行的核心&#xff0c;了解 JVM 的內部結構和垃圾回收機制對優化 Java 應用性能至關重要。本文將深入探討 JVM 的結構和垃圾回收機制&#…

支付寶沙箱對接(GO語言)

支付寶沙箱對接 1.1 官網1.2 秘鑰生成&#xff08;系統默認&#xff09;1.3 秘鑰生成&#xff08;軟件生成&#xff09;1.4 golan 安裝 SDK1.5 GoLand 代碼1.6 前端代碼 1.1 官網 沙箱官網: https://open.alipay.com/develop/sandbox/app 秘鑰用具下載&#xff1a; https://ope…

序列化、反序列化

java 提供了一種對象序列化的機制&#xff0c;該機制中&#xff0c;一個對象可以被表示為一個字節序列&#xff0c;該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。 將序列化對象寫入文件之后&#xff0c;可以從文件中讀取出來&#xff0c;并且對…

Java并發編程-ThreadLocal深入解讀及案例實戰

文章目錄 概述原理使用場景示例最佳實踐內存泄漏風險阿里開源組件TransmittableThreadLocal原理和機制使用場景如何使用注意事項ThreadLocal在分布式存儲系統edits_log案例中的實踐1. 為什么使用`ThreadLocal`?2. 實踐案例2.1 緩存日志操作2.2 線程局部的編輯日志狀態3. 注意事…

在 Spring 中編寫單元測試

單元測試是軟件開發過程中不可或缺的一部分&#xff0c;它能有效地提高代碼質量&#xff0c;確保代碼功能的正確性。在 Spring 應用中&#xff0c;JUnit 和 Mockito 是常用的單元測試工具&#xff0c;而 Spring Test 提供了豐富的測試支持。本文將介紹如何在 Spring 中使用 JUn…

并行處理百萬個文件的解析和追加

處理和解析大量文件&#xff0c;尤其是百萬級別的文件&#xff0c;是一個復雜且資源密集的任務。為實現高效并行處理&#xff0c;可以使用Python中的多種并行和并發編程工具&#xff0c;比如multiprocessing、concurrent.futures模塊以及分布式計算框架如Dask和Apache Spark。這…

物聯網時代5G通信技術分析研究一、引言

一、引言 近幾年&#xff0c;移動網絡技術跟隨互聯網的不斷發展而改革和進步&#xff0c;給平民大眾的生活也帶來新的嘗試與影響。從2G網絡的出現&#xff0c;到逐步被社會民眾所了解的3G&#xff0c;再到被熟知的且正在服務于大家的4G網絡&#xff0c;移動網絡技術的發展速度令…

jQuery Mobile 安裝指南

jQuery Mobile 安裝指南 jQuery Mobile 是一個基于 jQuery 的移動設備友好的網頁開發框架,它允許開發者創建響應式網頁和應用程序。本指南將詳細介紹如何安裝 jQuery Mobile,并確保您的開發環境準備好進行移動網頁開發。 1. 環境準備 在開始安裝 jQuery Mobile 之前,請確…

Mysql系列-Binlog主從同步

原文鏈接&#xff1a;https://zhuanlan.zhihu.com/p/669450627 一、主從同步概述 mysql主從同步&#xff0c;即MySQL Replication,可以實現將數據從一臺數據庫服務器同步到多臺數據庫服務器。MySQL數據庫自帶主 從同步功能&#xff0c;經過配置&#xff0c;可以實現基于庫、表…

B端設計:任何不顧及用戶體驗的設計,都是在裝樣子,花架子

B端設計是指面向企業客戶的設計&#xff0c;通常涉及產品、服務或系統的界面和功能設計。與C端設計不同&#xff0c;B端設計更注重實用性和專業性&#xff0c;因為它直接影響企業的效率和利益。 在B端設計中&#xff0c;用戶體驗同樣至關重要。不顧及用戶體驗的設計只是空洞的表…

數據庫之索引(二)

目錄 一、如何判斷數據庫的索引是否生效 二、如何評估索引創建的是否合理 三、索引是否越多越好 四、如何處理數據庫索引失效 五、是否所有的字段都適合創建索引 一、如何判斷數據庫的索引是否生效 可以使用EXPLAIN語句查看索引是否正在使用。 例如&#xff0c;假設已經創…

70.Bug:使用list.sort(Comparator.Comping(User::getCreateTime).reverse())空指針異常

1.出錯原因&#xff1a;在xml中沒有做字段映射 報錯語句復現&#xff1a; List<User> listnew ArrayList<>()&#xff1b; xml中進行查詢數據&#xff0c;數據存放在list中........... //排序 list.sort(Comparator.Comping(User::getCreateTime).reverse())&…

經典的layui框架,還有人用嗎?令人惋惜。

自從layui官網宣布關閉之后&#xff0c;layui框架的用戶飛速下滑&#xff0c;以至于到現在貝格前端工場承接的項目中&#xff0c;鮮有要求使用layui框架的&#xff0c;那么個框架還有人用嗎&#xff1f; 一、layui沒落是不是jquery惹的禍 layui的沒落與jQuery無關。layui框架…

Hi3861 OpenHarmony嵌入式應用入門--UDP Server

本篇使用的是lwip編寫udp服務端。需要提前準備好一個PARAM_HOTSPOT_SSID宏定義的熱點&#xff0c;并且密碼為PARAM_HOTSPOT_PSK。 修改網絡參數 在Hi3861開發板上運行上述四個測試程序之前&#xff0c;需要根據你的無線路由、Linux系統IP修改 net_params.h文件的相關代碼&…

深入理解 Docker 容器技術

一、引言 在當今的云計算和軟件開發領域&#xff0c;Docker 容器技術已經成為了一項不可或缺的工具。它極大地改變了應用程序的部署和運行方式&#xff0c;為開發者和運維人員帶來了諸多便利。 二、Docker 容器是什么&#xff1f; Docker 容器是一種輕量級、可移植、自包含的…

起底:Three.js和Cesium.js,二者異同點,好比全科和專科.

Three.js和Cesium.js是兩個常用的webGL引擎&#xff0c;很多小伙伴容易把它們搞混淆了&#xff0c;今天威斯數據來詳細介紹一下&#xff0c;他們的起源、不同點和共同點&#xff0c;閱讀后你就發現二者就像全科醫院和專科醫院的關系&#xff0c;很好識別。 一、二者的起源 Th…

性能測試相關理解---性能測試流程(二)

六、性能測試流程&#xff08;如何做性能測試&#xff1f;) 根據學習全棧測試博主的課程做的筆記 1、前期準備– 項目初期就開始&#xff0c;業務需求評審時盡量參與,對業務更深刻的認識&#xff08;確定哪些是核心業務、哪些可能存在并發請求、確定什么地方會出現瓶頸,方便后…

WebOffice在線編微軟Offfice,并以二進制流的形式打開Word文檔

在日常辦公場景中&#xff0c;我們經常會遇到這種場景&#xff1a;我們的合同管理系統的各種Word,excel,ppt數據都是以二進制數組的形式存儲在數據庫中&#xff0c;如何從數據庫中讀取二進制數據&#xff0c;以二進制數據作為參數&#xff0c;然后加載到瀏覽器的Office窗口&…

【無標題】地平線2西之絕境/Horizon Forbidden West? Complete Edition(更新:V1.3.57)

游戲介紹 與埃洛伊同行&#xff0c;在危險壯美的邊疆之地揭開種種未知的神秘威脅。此完整版可完整享受廣受好評的《地平線 西之絕境?》內容和額外內容&#xff0c;包括在主線游戲后展開的后續故事“炙炎海岸”。 重返《地平線》中遙遠未來的后末日世界&#xff0c;探索遠方的土…