Mermaid 绘图--以企业权限视图为例

文章目录

    • 一、示例代码
    • 二、基础结构设计
      • 2.1 组织架构树
      • 2.2 权限视图设计
    • 三、销售数据权限系统
    • 四、关键语法技巧汇总

一、示例代码

在企业管理系统开发中,清晰的权限视图设计至关重要。本文将分享如何使用 Mermaid 绘制直观的企业权限关系图,复制以下代码到mermaid中,将得到关系图如图1。

graph LR
ZJL[总经理]:::red
HW[海外销售部]:::blue
GN[国内营销部]:::blue
Zu[组领导]:::yellow
ZY[专员]:::purple
subgraph 关系图
ZJL ==> HW & GN ==> Zu ==> ZY
endsubgraph 图表种类需求
hwbmtj{{海外部门统计}}:::green
gnbmtj{{国内部门统计}}:::green
grxstj{{个人销售统计}}:::pureBlue
zntj{{组内统计}}:::green
znxsrank{{组内销售rank}}:::pureRed
hwbmxsrank{{海外部门销售rank}}:::pureRed
gnbmxsrank{{国内部门销售rank}}:::pureRed
ddzt{{订单状态}}
salesSummary{{销售总结}}:::lightYellow
endsubgraph 实际图表归并
grddtj{{个人订单统计}}:::lightBlue
grcpxstj{{个人产品销售统计}}:::lightBlue
khphtj{{客户贡献排行}}:::lightBlue
rank{{销售人员RANK}}:::lightRed
_ddzt{{订单状态}}
hnwbmtj{{海内外部门统计 + 组内统计}}:::lightGreen
salesFeedback{{销售反馈}}:::lightYellowgrxstj --> grddtj & grcpxstj & khphtj
hwbmxsrank & gnbmxsrank & znxsrank --> rank
ddzt --> _ddzt
hwbmtj & gnbmtj & zntj --> hnwbmtj
salesSummary --> salesFeedbackendsubgraph 总经理可见内容
总经理:::red ---> hwbmtj & gnbmtj & salesSummary
endsubgraph 国外部门经理可见内容
国外部门经理:::blue ---> hwbmtj & grxstj & hwbmxsrank & ddzt
endsubgraph 国内部门经理可见内容
国内部门经理:::blue ---> gnbmtj & grxstj & gnbmxsrank & ddzt
endsubgraph 组领导可见内容
组:::yellow ---> zntj & grxstj & znxsrank & ddzt
endsubgraph 销售专员可见内容
专员:::purple ---> grxstj & ddztendclassDef red fill:#eeaa9c,color:#fff;
classDef blue fill:#93b5cf,color:#fff;
classDef yellow fill:#fcd217,color:#fff;
classDef purple fill:#e0c8d1,color:#fff;
classDef green fill:#0f0;
classDef pureRed fill:#f00,color:#fff;
classDef pureBlue fill:#00f,color:#fff;
classDef lightBlue fill:#2e317c,color:#fff;
classDef lightGreen fill:#a4cab6,color:#fff;
classDef purple fill:#fef200,color:#fff;
销售专员可见内容
组领导可见内容
国内部门经理可见内容
国外部门经理可见内容
总经理可见内容
实际图表归并
图表种类需求
关系图
专员
国内部门经理
国外部门经理
总经理
个人订单统计
个人产品销售统计
客户贡献排行
销售人员RANK
订单状态
海内外部门统计 + 组内统计
销售反馈
海外部门统计
国内部门统计
个人销售统计
组内统计
组内销售rank
海外部门销售rank
国内部门销售rank
订单状态
销售总结
专员
组领导
海外销售部
国内营销部
总经理

二、基础结构设计

2.1 组织架构树

使用 graph LR 创建从左到右的组织关系图,通过 subgraph 划分逻辑模块:

graph LR
ZJL[总经理]:::red
HW[海外销售部]:::blue
GN[国内营销部]:::blue
Zu[组领导]:::yellow
ZY[专员]:::purplesubgraph 组织架构
ZJL ==> HW & GN ==> Zu ==> ZY
endclassDef red fill:#eeaa9c,color:#fff;
classDef blue fill:#93b5cf,color:#fff;
classDef yellow fill:#fcd217,color:#fff;
classDef purple fill:#e0c8d1,color:#fff;
组织架构
专员
组领导
海外销售部
国内营销部
总经理

效果说明

  • 总经理(红色)统领两个部门
  • 部门经理(蓝色)管理组领导
  • 组领导(黄色)直接管理专员
  • 颜色编码增强角色辨识度

2.2 权限视图设计

通过嵌套 subgraph 实现三层视图结构:

graph LR
subgraph 图表种类需求
hwbmtj{{海外部门统计}}:::green
...
endsubgraph 实际图表归并
grddtj{{个人订单统计}}:::lightBlue
...
endsubgraph 角色可见内容
总经理:::red ---> hwbmtj & gnbmtj
...
end
角色可见内容
实际图表归并
图表种类需求
gnbmtj
总经理
个人订单统计
海外部门统计
...

核心技巧

  1. 使用 {{ }} 表示可点击图表元素
  2. ---> 单向箭头表示权限范围
  3. 颜色区分视图层级(需求/实现/权限)

三、销售数据权限系统

graph LR
ZJL[总经理]:::red
HW[海外销售部]:::blue
GN[国内营销部]:::blue
Zu[组领导]:::yellow
ZY[专员]:::purplesubgraph 组织架构
ZJL ==> HW & GN ==> Zu ==> ZY
endsubgraph 图表需求
hwbmtj{{海外部门统计}}:::green
gnbmtj{{国内部门统计}}:::green
grxstj{{个人销售统计}}:::pureBlue
endsubgraph 图表实现
grddtj{{个人订单统计}}:::lightBlue
grcpxstj{{产品销售统计}}:::lightBlue
grxstj --> grddtj & grcpxstj
endsubgraph 总经理权限
总经理:::red ---> hwbmtj & gnbmtj
endsubgraph 专员权限
专员:::purple ---> grddtj
endclassDef red fill:#eeaa9c,stroke:#d12727,stroke-width:2px;
classDef blue fill:#93b5cf,stroke:#2b6ca3;
classDef yellow fill:#fcd217,stroke:#d9a602;
classDef purple fill:#e0c8d1,stroke:#a87b8f;
classDef green fill:#a4cab6,stroke:#3a7d5e;
classDef pureBlue fill:#2e317c,color:#fff;
classDef lightBlue fill:#b6d7e8;
专员权限
总经理权限
图表实现
图表需求
组织架构
专员
总经理
个人订单统计
产品销售统计
海外部门统计
国内部门统计
个人销售统计
专员
组领导
海外销售部
国内营销部
总经理

四、关键语法技巧汇总

这个表格简要地展示了 Mermaid 图中使用的语法和结构:

功能/语法描述示例
graph LR定义图表布局和方向,LR表示从左到右。graph LR
subgraph定义子图,将节点和连接划分为一个小组。subgraph 关系图
节点定义[节点名称]定义节点。ZJL[总经理]
连接节点使用-->表示节点之间的连接。ZJL ==> HW
双箭头==>表示带有关系的连接,通常用于流向的展示。HW ==> Zu ==> ZY
classDef用来定义节点的样式(如背景色、字体颜色等)。classDef red fill:#eeaa9c,color:#fff;
class给节点指定样式类。ZJL[总经理]:::red
自定义颜色classDef中设置颜色、文本颜色等节点样式。classDef blue fill:#93b5cf,color:#fff;
嵌套结构/归并图表subgraph定义嵌套图表,组织和归类相关节点。subgraph 总经理可见内容
节点间的关系定义节点之间的连接与关系。grxstj --> grddtj & grcpxstj & khphtj
嵌套子图通过子图将多个图表合并为一个结构,定义不同角色的权限可见内容。subgraph 总经理可见内容
节点样式通过classDef定义节点的不同样式,如背景颜色、文本颜色等。classDef green fill:#0f0;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 在本账号CSDN资源下载,或者访问链接: http://www.umlchina.com/url/quizad.html 如果需要提取码:umlc 文件夹中的“300道软件方法强化自测题2025…

std__map,std__unordered_map,protobuf__map之间的性能比较

简单比较下 std::map、std::unordered_map 和 protobuf::Map 的性能,主要关注在 插入、查找 和 删除 操作上的效率以及内存管理的差异。 std::map 底层实现:std::map 使用红黑树作为底层数据结构,红黑树是一种平衡二叉查找树的变体结构&…

文档处理组件Aspose.Words 25.5全新发布 :六大新功能与性能深度优化

在数字化办公日益普及的今天,文档处理的效率与质量直接影响到企业的运营效率。Aspose.Words 作为业界领先的文档处理控件,其最新发布的 25.5 版本带来了六大新功能和多项性能优化,旨在为开发者和企业用户提供更强大、高效的文档处理能力。 六…

Three.js + Vue3 加载GLB模型项目代码详解

本说明结合 src/App.vue 代码,详细解释如何在 Vue3 项目中用 three.js 加载并显示 glb 模型。 1. 依赖与插件导入 import {onMounted, onUnmounted } from vue import * as THREE from three import Stats from stats.js import {OrbitControls } from three/examples/jsm/co…

Flutter如何支持原生View

在 Flutter 中集成原生 View(如 Android 的 SurfaceView、iOS 的 WKWebView)是通过 平台视图(Platform View) 实现的。这一机制允许在 Flutter UI 中嵌入原生组件,解决了某些场景下 Flutter 自身渲染能力的不足&#x…

vue-11(命名路由和命名视图)

命名路由和命名视图 命名路由和命名视图提供了组织和导航 Vue.js 应用程序的强大方法,尤其是在它们的复杂性增加时。它们提供了一种语义更合理、可维护的路由方法,使您的代码更易于理解和修改。命名路由允许您按名称引用路由,而不是依赖 URL…

微软认证考试科目众多?该如何选择?

在云计算、人工智能、数据分析等技术快速发展的今天,微软认证(Microsoft Certification)已成为IT从业者、开发者、数据分析师提升竞争力的重要凭证。但面对众多考试科目,很多人不知道如何选择。本文将详细介绍微软认证的考试方向、…

视频汇聚平台EasyCVR“明厨亮灶”方案筑牢旅游景区餐饮安全品质防线

一、背景分析​ 1)政策监管刚性需求​:国家食品安全战略及 2024年《关于深化智慧城市发展的指导意见》要求构建智慧餐饮场景,推动数字化监管。多地将“AI明厨亮灶”纳入十四五规划考核,要求餐饮单位操作可视化并具备风险预警能力…

Mysql莫名奇妙重启

收到客户反馈有时接口报504,查看应用日志发现故障期间数据库连接失败 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not receive…

半监督学习:低密度分离假设 (Low-Density Separation Assumption)

半监督学习(SSL)的目标是借助未标记数据辅助训练,以期获得比仅用带标签的监督学习范式更好的效果。但是,SSL的前提是数据分布需满足某些假设。否则,SSL可能无法提升监督学习的效果,甚至会因误导性推断降低预测准确性。 半监督学习…

Python Day44

Task: 1.预训练的概念 2.常见的分类预训练模型 3.图像预训练模型的发展史 4.预训练的策略 5.预训练代码实战:resnet18 1. 预训练的概念 预训练(Pre-training)是指在大规模数据集上,先训练模型以学习通用的特征表示&am…

vue3 eslint ts 关闭多单词命名检查

无效做法 import { globalIgnores } from eslint/config import {defineConfigWithVueTs,vueTsConfigs, } from vue/eslint-config-typescript import pluginVue from eslint-plugin-vue import skipFormatting from vue/eslint-config-prettier/skip-formatting// To allow m…

贪心,回溯,动态规划

1.贪心算法 ​ 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望全局最好或是最优的算法。 特点 局部最优选择不能保证全局最优高效 适用条件 局部最优可以导致全局最优问题的最优解包含子问题的最优解 经典问题 活动选择问题最短路径最…

【Netty4核心原理⑧】【揭开Bootstrap的神秘面纱 - 服务端Bootstrap❶】

文章目录 一、前言二、流程分析1. 创建 EventLoopGroup2. 指定 Channel 类型2.1 Channel 的创建2.2 Channel 的初始化 3. 配置自定义的业务处理器 Handler3.1 ServerBootstrap#childHandler3.2 handler 与 childHandler 的区别 4. 绑定端口服务启动 三、bossGroup 与 workerGro…

为什么需要自动下载浏览器驱动?

为什么需要自动下载浏览器驱动? 血泪场景重现 新人入职第一天: 花3小时配置Chrome/Firefox驱动版本不匹配导致SessionNotCreatedException 浏览器自动更新后: 所有测试脚本突然崩溃手动查找驱动耗时长 终极解决方案:自动下载驱…

NLP常用工具包

✨做一次按NLP项目常见工具的使用拆解 1. tokenizer from torchtext.data.utils import get_tokenizertokenizer get_tokenizer(basic_english) text_sample "Were going on an adventure! The weather is really nice today." tokens tokenizer(text_sample) p…

在 Vue 的template中使用 Pug 的完整教程

在 Vue 的template中使用 Pug 的完整教程 引言 什么是 Pug? Pug(原名 Jade)是一种高效的网页模板引擎,通过缩进式语法和简洁的写法减少 HTML 的冗长代码。Pug 省略了尖括号和闭合标签,使用缩进定义结构,…

【Android基础回顾】四:ServiceManager

Android 中的 ServerManager 是 Android 框架中一个用于管理系统服务的核心机制。它是 Binder IPC 的一部分,用于在客户端和服务端之间建立联系,广泛应用于系统服务(如 ActivityManager、WindowManager 等)的注册与获取。 1 Serv…

【Android基础回顾】一:Binder机制是什么?有什么用?

Android中的Binder机制是Android系统中最核心和最基础的进程间通讯机制。 1 什么是进程间通讯机制(IPC)? 众所周知,Android系统基于Linux开发,Linux系统里面本来就有进程间通讯机制。 1.1 Linux的IPC(Inter-Process Communication)概览 它…

Go语言爬虫系列教程5:HTML解析技术以及第三方库选择

Go语言爬虫系列教程5:HTML解析技术以及第三方库选择 在上一章中,我们使用正则表达式提取网页内容,但这种方法有局限性。对于复杂的HTML结构,我们需要使用专门的HTML解析库。在这一章中,我们将介绍HTML解析技术以及如何…