From f7344c40083c87961e14f1455c7664dee940318f Mon Sep 17 00:00:00 2001
From: zhf <1204297681@qq.com>
Date: Fri, 30 Aug 2024 16:27:45 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A5=E5=85=85ER=E8=AE=BE=E8=AE=A1?=
=?UTF-8?q?=E5=B7=A5=E5=85=B7=E8=8A=82=E7=82=B9=E5=9B=BE=E6=A0=87=E3=80=81?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9ER=E8=AE=BE=E8=AE=A1=E5=B7=A5=E5=85=B7?=
=?UTF-8?q?=E7=9A=84=E5=91=88=E7=8E=B0=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../er-design-node/er-design-node.scss | 13 ++++-
.../er-design-node/er-design-node.tsx | 13 ++++-
.../er-design-content.controller.ts | 3 ++
.../er_design_content/er_design_content.scss | 15 ++----
.../controller/x6-controller/x6-controller.ts | 48 ++++++++++++-------
.../x6-node-controller/x6-node-controller.ts | 4 +-
.../src/x6/service/x6-node-service.ts | 3 +-
7 files changed, 63 insertions(+), 36 deletions(-)
diff --git a/packages/er-design/src/custom-cell/er-design-node/er-design-node.scss b/packages/er-design/src/custom-cell/er-design-node/er-design-node.scss
index 3632c87b..2ec6592b 100644
--- a/packages/er-design/src/custom-cell/er-design-node/er-design-node.scss
+++ b/packages/er-design/src/custom-cell/er-design-node/er-design-node.scss
@@ -20,6 +20,17 @@
height: 16px;
transform: translate(0, -2px);
}
+
+ @include b(icon) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ > svg {
+ width: 16px;
+ height: 16px;
+ }
+ }
}
.caption {
@@ -109,6 +120,6 @@
.x6-node-selected {
@include b(er-design-node) {
- border: 2px solid #{getCssVar(color, primary, hover)};
+ border: 2px solid #1890ff;
}
}
diff --git a/packages/er-design/src/custom-cell/er-design-node/er-design-node.tsx b/packages/er-design/src/custom-cell/er-design-node/er-design-node.tsx
index 8c30de0d..2f5d1ce1 100644
--- a/packages/er-design/src/custom-cell/er-design-node/er-design-node.tsx
+++ b/packages/er-design/src/custom-cell/er-design-node/er-design-node.tsx
@@ -4,7 +4,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable no-shadow */
import { computed, defineComponent, onMounted, Ref, ref } from 'vue';
-import { useNamespace } from '@ibiz-template/vue3-util';
+import { useNamespace, IBizIcon } from '@ibiz-template/vue3-util';
import { Graph, Node } from '@antv/x6';
import './er-design-node.scss';
import { nodeSize } from '../config';
@@ -12,6 +12,9 @@ import { getFieldList, getNodeHeight } from '../../utils/er-util';
export default defineComponent({
name: 'IBizERDesignNode',
+ components: {
+ IBizIcon,
+ },
props: {
node: Node,
graph: Graph,
@@ -128,6 +131,9 @@ export default defineComponent({
showFilter.value = filter;
});
+ // 图标
+ const icon = props.node?.attrs?.icon;
+
return {
ns,
caption,
@@ -136,6 +142,7 @@ export default defineComponent({
itemStyle,
fieldsList,
isSingle,
+ icon,
isShowFilter,
isShow,
};
@@ -148,7 +155,9 @@ export default defineComponent({
title={this.caption}
style={this.captionStyle}
>
- {/*
*/}
+
+
+
{this.caption}
diff --git a/packages/er-design/src/panel-items/er_design_content/er-design-content.controller.ts b/packages/er-design/src/panel-items/er_design_content/er-design-content.controller.ts
index 1980e39d..c94d5185 100644
--- a/packages/er-design/src/panel-items/er_design_content/er-design-content.controller.ts
+++ b/packages/er-design/src/panel-items/er_design_content/er-design-content.controller.ts
@@ -200,6 +200,9 @@ export class ERDesignContentController extends PanelItemController {
this.state.loading = false;
});
+ if (this.erDesignLeftSide) {
+ this.x6.setCodeListMap(this.erDesignLeftSide.codeListMap);
+ }
}
/**
diff --git a/packages/er-design/src/panel-items/er_design_content/er_design_content.scss b/packages/er-design/src/panel-items/er_design_content/er_design_content.scss
index 7665bbda..00722f85 100644
--- a/packages/er-design/src/panel-items/er_design_content/er_design_content.scss
+++ b/packages/er-design/src/panel-items/er_design_content/er_design_content.scss
@@ -5,14 +5,6 @@
height: 100%;
overflow: hidden;
background-color: rgba(var(#{getCssVarName(white)}), 1);
-
- .x6-widget-minimap-viewport {
- border: 2px solid #8f8f8f;
- }
-
- .x6-widget-minimap-viewport-zoom {
- border: 2px solid #8f8f8f;
- }
}
@include b(er_design_content-container) {
@@ -22,10 +14,9 @@
@include b(er_design_content-minimap) {
position: absolute;
- right: 10px;
- bottom: 10px;
- width: 300px;
- height: 200px;
+ right: 0;
+ bottom: 0;
+ border: 1px solid #e9e9e9;
}
@include b(er_design_content-holder) {
diff --git a/packages/er-design/src/x6/controller/x6-controller/x6-controller.ts b/packages/er-design/src/x6/controller/x6-controller/x6-controller.ts
index d27c0129..60d858b8 100644
--- a/packages/er-design/src/x6/controller/x6-controller/x6-controller.ts
+++ b/packages/er-design/src/x6/controller/x6-controller/x6-controller.ts
@@ -9,6 +9,7 @@ import { Keyboard } from '@antv/x6-plugin-keyboard';
import { Selection } from '@antv/x6-plugin-selection';
import { Export } from '@antv/x6-plugin-export';
import {
+ CodeListItem,
ControllerEvent,
EventBase,
IPanelController,
@@ -163,6 +164,27 @@ export class X6Controller {
this.isDefaultOpenAnchorEdit = value;
}
+ /**
+ * 代码表项映射
+ *
+ * @author zhanghengfeng
+ * @date 2024-08-30 14:08:40
+ * @private
+ * @type {(Map)}
+ */
+ private codeListMap: Map = new Map();
+
+ /**
+ * 设置代码表项映射
+ *
+ * @author zhanghengfeng
+ * @date 2024-08-30 14:08:13
+ * @param {(Map)} map
+ */
+ setCodeListMap(map: Map): void {
+ this.codeListMap = map;
+ }
+
/**
* x6图形配置
*
@@ -206,23 +228,7 @@ export class X6Controller {
maxScale: 2,
},
// 网格系统
- grid: {
- size: 10, // 网格大小 10px
- visible: true, // 是否显示渲染网格背景
- type: 'mesh', // 网格类型 'dot' | 'fixedDot' | 'mesh'
- // 网格样式配置
- args: [
- {
- color: '#f0f0f0', // 主网格线颜色
- thickness: 1, // 主网格线宽度
- },
- {
- color: '#ddd', // 次网格线颜色
- thickness: 1, // 次网格线宽度
- factor: 4, // 主次网格线间隔
- },
- ],
- },
+ grid: true,
// 高亮
highlighting: {
nodeAvailable: {
@@ -315,6 +321,10 @@ export class X6Controller {
this.g.use(
new MiniMap({
container: mapContainer.item(0) as HTMLElement,
+ width: 360,
+ height: 270,
+ minScale: 0.2,
+ maxScale: 2,
}),
);
} else {
@@ -387,7 +397,9 @@ export class X6Controller {
this.linkList = linkMetaData.linkList;
this.g.addNodes(
this.nodeList.map(data => {
- return this.node.createCell(data);
+ return this.node.createCell(data, {
+ icon: this.codeListMap.get(data.nodeTag)?.sysImage,
+ });
}),
);
this.g.addEdges(
diff --git a/packages/er-design/src/x6/controller/x6-node-controller/x6-node-controller.ts b/packages/er-design/src/x6/controller/x6-node-controller/x6-node-controller.ts
index 20402f15..e5ed3a9b 100644
--- a/packages/er-design/src/x6/controller/x6-node-controller/x6-node-controller.ts
+++ b/packages/er-design/src/x6/controller/x6-node-controller/x6-node-controller.ts
@@ -312,8 +312,8 @@ export class X6NodeController extends X6CellController {
* @param {X6NodeData} data
* @return {*} {Cell.Metadata}
*/
- createCell(data: X6NodeData): Cell.Metadata {
- return this.service.createCell(data);
+ createCell(data: X6NodeData, params?: IParams): Cell.Metadata {
+ return this.service.createCell(data, params);
}
/**
diff --git a/packages/er-design/src/x6/service/x6-node-service.ts b/packages/er-design/src/x6/service/x6-node-service.ts
index 3a373e9f..1fc947b7 100644
--- a/packages/er-design/src/x6/service/x6-node-service.ts
+++ b/packages/er-design/src/x6/service/x6-node-service.ts
@@ -63,7 +63,7 @@ export class X6NodeService extends X6CellService {
return res.ok;
}
- createCell(data: X6NodeData): Cell.Metadata {
+ createCell(data: X6NodeData, params?: IParams): Cell.Metadata {
const height = getNodeHeight(
Object.is(data.nodeTag, 'DS_DBTABLE'),
getFieldList(data.fields),
@@ -76,6 +76,7 @@ export class X6NodeService extends X6CellService {
y: data.topPos,
data,
ports: getNodePorts(data, height),
+ attrs: params,
};
}
}
--
Gitee