+
-
-
-
![预览]()
+
图片 URL
+
+
+
+
+
+
+
上传文件
+
+
+ 本地上传将以 base64 保存
+
+
+
+
+
+
+
+
+
预览
+
+
@@ -240,4 +382,50 @@ const quillToolbar = [
font-size: 14px;
word-break: break-all;
}
-
\ No newline at end of file
+
+.property-value.upload-row {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ text-align: left;
+}
+
+.upload-input {
+ flex: 1;
+}
+
+.upload-hint {
+ color: #909399;
+ font-size: 12px;
+}
+
+.size-item .property-value {
+ text-align: left;
+}
+
+.size-inputs {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+}
+
+.size-divider {
+ color: #909399;
+ font-size: 12px;
+}
+
+.image-preview {
+ border: 1px solid #ebeef5;
+ border-radius: 4px;
+ padding: 6px;
+ background: #fafafa;
+ text-align: center;
+}
+
+.image-preview img {
+ max-width: 100%;
+ max-height: 140px;
+ display: block;
+ margin: 0 auto;
+}
+
diff --git a/src/components/flow/nodes/common/ImageNode.vue b/src/components/flow/nodes/common/ImageNode.vue
index 9f108d0..0086d30 100644
--- a/src/components/flow/nodes/common/ImageNode.vue
+++ b/src/components/flow/nodes/common/ImageNode.vue
@@ -1,65 +1,94 @@
-
-
-
-
-
+-->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+const refreshFromProps = (props?: any, node?: any) => {
+ const targetProps = props ?? node?.properties ?? {};
+ imageUrl.value = targetProps.image?.url ?? targetProps.url ?? '';
+ fit.value = targetProps.image?.fit ?? targetProps.fit ?? 'contain';
+};
-
-
-
-
-
-
-
-
+let offChange: (() => void) | null = null;
-
-
-
-
-
\ No newline at end of file
+onMounted(() => {
+ const node = getNode?.();
+ refreshFromProps(node?.properties, node);
+
+ const graph = getGraph?.();
+ const handler = (eventData: any) => {
+ if (node && eventData.id === node.id) {
+ refreshFromProps(eventData.properties, node);
+ }
+ };
+ graph?.eventCenter.on(EventType.NODE_PROPERTIES_CHANGE, handler);
+ offChange = () => graph?.eventCenter.off(EventType.NODE_PROPERTIES_CHANGE, handler);
+});
+
+onBeforeUnmount(() => {
+ offChange?.();
+});
+
+
+
+
+
+
![图片节点]()
+
+
未上传图片
+
在右侧属性面板上传或填写 URL
+
+
+
+
+
+