From a87b49ca0801a52f58a72085f75143ab668ba6ca Mon Sep 17 00:00:00 2001
From: wente <329538422@qq.com>
Date: 星期五, 26 四月 2024 10:07:52 +0800
Subject: [PATCH] 流程图组合
---
/dev/null | 0
web/public/modelImg/connect.svg | 14
web/src/views/modules/taskReliability/RBD-edit-img.vue | 1917 +++++++++++++++++++++++++++++-------------------------
web/src/views/modules/taskReliability/ConfigEdge/index.vue | 11
web/public/modelImg/switch.svg | 33
web/public/modelImg/start.svg | 16
web/public/modelImg/vote.svg | 28
web/public/index.html | 6
web/public/modelImg/end.svg | 16
9 files changed, 1,140 insertions(+), 901 deletions(-)
diff --git a/web/public/index.html b/web/public/index.html
index f903242..8930306 100644
--- a/web/public/index.html
+++ b/web/public/index.html
@@ -219,8 +219,8 @@
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 鍔ㄦ��(鑿滃崟)璺敱鏄惁宸茬粡娣诲姞鐨勭姸鎬佹爣绀猴紙鐢ㄤ簬鍒ゆ柇鏄惁闇�瑕侀噸鏂版媺鍙栨暟鎹苟杩涜鍔ㄦ�佹坊鍔犳搷浣滐級
// 鏈嶅姟鍦板潃
- window.SITE_CONFIG['apiURL'] = 'http://' + location.hostname + ':8050/test-project';
- window.SITE_CONFIG['apiURL2'] = 'http://' + location.hostname + ':8050/test-project';
+ window.SITE_CONFIG['apiURL'] = 'http://' + location.hostname + ':8066/test-project';
+ window.SITE_CONFIG['apiURL2'] = 'http://' + location.hostname + ':8066/test-project';
//window.SITE_CONFIG['apiURL2'] = 'http://'+location.hostname+':8066';
//window.SITE_CONFIG['apiURL'] = '<%= process.env.VUE_APP_API_URL %>';
@@ -228,7 +228,7 @@
// WebSocket鍦板潃
- window.SITE_CONFIG['socketURL'] = 'http://' + location.hostname + ':8050/test-project';
+ window.SITE_CONFIG['socketURL'] = 'http://' + location.hostname + ':8066/test-project';
//window.SITE_CONFIG['socketURL'] ='<%= process.env.VUE_APP_SOCKET_URL %>';
</script>
diff --git a/web/public/modelImg/connect.png b/web/public/modelImg/connect.png
deleted file mode 100644
index f69d4cf..0000000
--- a/web/public/modelImg/connect.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/connect.svg b/web/public/modelImg/connect.svg
new file mode 100644
index 0000000..5c67178
--- /dev/null
+++ b/web/public/modelImg/connect.svg
@@ -0,0 +1,14 @@
+<svg width="70.000000" height="70.000000" viewBox="0 0 70 70" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip9_78">
+ <rect id="鐢绘澘 1" width="70.000000" height="70.000000" transform="translate(-0.000002 0.000000)" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="70.000000" height="70.000000" transform="translate(-0.000002 0.000000)" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip9_78)">
+ <circle id="妞渾 2" cx="35.000000" cy="35.000000" r="35.000000" fill="#000000" fill-opacity="1.000000"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/end.png b/web/public/modelImg/end.png
deleted file mode 100644
index b993674..0000000
--- a/web/public/modelImg/end.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/end.svg b/web/public/modelImg/end.svg
new file mode 100644
index 0000000..205a390
--- /dev/null
+++ b/web/public/modelImg/end.svg
@@ -0,0 +1,16 @@
+<svg width="138.000000" height="81.000000" viewBox="0 0 138 81" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip9_10">
+ <rect id="鐢绘澘 1" width="138.000000" height="81.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="138.000000" height="81.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip9_10)">
+ <rect id="鐭╁舰 1" rx="36.500000" width="138.000000" height="81.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <rect id="鐭╁舰 1" x="4.000000" y="4.000000" rx="36.500000" width="130.000000" height="73.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="8.000000"/>
+ <path id="end" d="M90.43 47.08C89.14 48.34 87.43 49.38 85.48 49.38C81.4 49.38 78.76 46.29 78.76 40.87C78.76 35.58 82.09 32.29 85.81 32.29C87.73 32.29 88.96 33.01 90.4 34.21L90.28 31.39L90.28 25.12L92.98 25.12L92.98 49L90.76 49L90.52 47.08L90.43 47.08ZM56.95 47.71C55.51 48.64 53.77 49.38 51.55 49.38C47.23 49.38 43.75 46.23 43.75 40.87C43.75 35.58 47.32 32.29 51.1 32.29C55.24 32.29 57.58 35.28 57.58 39.93C57.58 40.54 57.52 41.11 57.46 41.5L46.48 41.5C46.66 44.97 48.79 47.19 51.88 47.19C53.47 47.19 54.76 46.72 55.96 45.9L56.95 47.71ZM64.33 49L61.6 49L61.6 32.71L63.85 32.71L64.09 35.04L64.18 35.04C65.74 33.51 67.42 32.29 69.64 32.29C73.06 32.29 74.62 34.51 74.62 38.68L74.62 49L71.89 49L71.89 39.03C71.89 35.97 70.96 34.68 68.8 34.68C67.12 34.68 65.98 35.53 64.33 37.17L64.33 49ZM51.13 34.48C48.82 34.48 46.78 36.33 46.45 39.52L55.18 39.52C55.18 36.24 53.68 34.48 51.13 34.48ZM81.58 40.84C81.58 44.76 83.2 47.11 86.08 47.11C87.58 47.11 88.9 46.36 90.28 44.86L90.28 36.3C88.87 35.07 87.64 34.6 86.29 34.6C83.65 34.6 81.58 37.12 81.58 40.84Z" fill="#000000" fill-opacity="1.000000" fill-rule="evenodd"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/logo.png b/web/public/modelImg/logo.png
deleted file mode 100644
index e154da0..0000000
--- a/web/public/modelImg/logo.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/start.png b/web/public/modelImg/start.png
deleted file mode 100644
index 11ac8b4..0000000
--- a/web/public/modelImg/start.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/start.svg b/web/public/modelImg/start.svg
new file mode 100644
index 0000000..a43906e
--- /dev/null
+++ b/web/public/modelImg/start.svg
@@ -0,0 +1,16 @@
+<svg width="138.000000" height="81.000000" viewBox="0 0 138 81" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip9_3">
+ <rect id="鐢绘澘 1" width="138.000000" height="81.000000" transform="translate(-0.008560 -0.982471)" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="138.000000" height="81.000000" transform="translate(-0.008560 -0.982471)" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip9_3)">
+ <rect id="鐭╁舰 1" x="-0.008560" y="-0.982471" rx="36.500000" width="138.000000" height="81.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <rect id="鐭╁舰 1" x="3.991440" y="3.017529" rx="36.500000" width="130.000000" height="73.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="8.000000"/>
+ <path id="start" d="M61.34 47.8C60.41 48.1 59.32 48.4 58.33 48.4C54.86 48.4 53.68 46.21 53.68 42.97L53.68 33.94L51.26 33.94L51.26 31.87L53.81 31.72L54.14 27.13L56.42 27.13L56.42 31.72L60.82 31.72L60.82 33.94L56.42 33.94L56.42 43.03C56.42 45.04 57.05 46.18 58.94 46.18C59.51 46.18 60.25 45.97 60.8 45.76L61.34 47.8ZM100.49 47.8C99.56 48.1 98.47 48.4 97.48 48.4C94.01 48.4 92.83 46.21 92.83 42.97L92.83 33.94L90.41 33.94L90.41 31.87L92.96 31.72L93.29 27.13L95.57 27.13L95.57 31.72L99.97 31.72L99.97 33.94L95.57 33.94L95.57 43.03C95.57 45.04 96.2 46.18 98.09 46.18C98.66 46.18 99.4 45.97 99.95 45.76L100.49 47.8ZM50.02 43.57C50.02 46.21 47.93 48.4 44.08 48.4C41.78 48.4 39.56 47.44 38 46.15L39.34 44.35C40.76 45.49 42.23 46.27 44.18 46.27C46.34 46.27 47.39 45.13 47.39 43.72C47.39 42.04 45.47 41.33 43.67 40.63C41.39 39.79 38.9 38.68 38.9 35.92C38.9 33.34 41 31.31 44.54 31.31C46.54 31.31 48.32 32.14 49.58 33.13L48.26 34.9C47.14 34.06 46.01 33.46 44.57 33.46C42.49 33.46 41.53 34.54 41.53 35.8C41.53 37.36 43.22 37.93 45.05 38.62C47.42 39.52 50.02 40.48 50.02 43.57ZM72.95 46.06C71.39 47.35 69.55 48.4 67.55 48.4C64.82 48.4 62.78 46.72 62.78 43.78C62.78 40.24 65.86 38.47 72.8 37.69C72.8 35.59 72.1 33.58 69.44 33.58C67.55 33.58 65.83 34.46 64.54 35.32L63.47 33.43C64.97 32.47 67.28 31.31 69.88 31.31C73.85 31.31 75.52 33.97 75.52 37.99L75.52 48.01L73.28 48.01L73.03 46.06L72.95 46.06ZM83.45 48.01L80.72 48.01L80.72 31.72L82.97 31.72L83.21 34.69L83.3 34.69C84.44 32.62 86.09 31.31 87.92 31.31C88.64 31.31 89.15 31.39 89.65 31.66L89.15 34.06C88.61 33.85 88.22 33.79 87.56 33.79C86.2 33.79 84.53 34.76 83.45 37.54L83.45 48.01ZM65.45 43.6C65.45 45.46 66.71 46.21 68.32 46.21C69.91 46.21 71.21 45.46 72.8 44.05L72.8 39.49C67.31 40.15 65.45 41.5 65.45 43.6Z" fill="#000000" fill-opacity="1.000000" fill-rule="evenodd"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/switch.svg b/web/public/modelImg/switch.svg
new file mode 100644
index 0000000..91e4162
--- /dev/null
+++ b/web/public/modelImg/switch.svg
@@ -0,0 +1,33 @@
+<svg width="150.000000" height="150.000000" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip9_15">
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip9_15)">
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="75.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="72.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 1" x1="0.000000" y1="72.000000" x2="30.000000" y2="72.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 2" x1="31.500000" y1="113.002548" x2="31.500000" y2="33.002548" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 3" x1="29.000000" y1="35.000000" x2="79.000000" y2="35.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 4" x1="30.000000" y1="58.000000" x2="80.000000" y2="58.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 5" x1="30.000000" y1="85.000000" x2="80.000000" y2="85.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 6" x1="30.000000" y1="110.500000" x2="80.000000" y2="110.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="118.000000" y1="76.000000" x2="148.000000" y2="76.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 8" x1="85.896255" y1="37.340614" x2="111.483505" y2="73.882980" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <circle id="妞渾 2" cx="114.000000" cy="76.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 2" cx="114.000000" cy="76.000000" r="4.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ <circle id="妞渾 2" cx="83.000000" cy="35.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 2" cx="83.000000" cy="35.000000" r="4.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ <circle id="妞渾 2" cx="84.000000" cy="58.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 2" cx="84.000000" cy="58.000000" r="4.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ <circle id="妞渾 2" cx="84.000000" cy="111.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 2" cx="84.000000" cy="111.000000" r="4.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ <circle id="妞渾 2" cx="84.000000" cy="85.000000" r="5.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 2" cx="84.000000" cy="85.000000" r="4.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/switchRight.png b/web/public/modelImg/switchRight.png
deleted file mode 100644
index b63c351..0000000
--- a/web/public/modelImg/switchRight.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/vote.svg b/web/public/modelImg/vote.svg
new file mode 100644
index 0000000..eb29f2b
--- /dev/null
+++ b/web/public/modelImg/vote.svg
@@ -0,0 +1,28 @@
+<svg width="150.000000" height="150.000000" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <desc>
+ Created with Pixso.
+ </desc>
+ <defs>
+ <clipPath id="clip9_41">
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="white" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+ <rect id="鐢绘澘 1" width="150.000000" height="150.000000" fill="#FFFFFF" fill-opacity="0"/>
+ <g clip-path="url(#clip9_41)">
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="75.000000" fill="#C4C4C4" fill-opacity="0"/>
+ <circle id="妞渾 1" cx="75.000000" cy="75.000000" r="72.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 1" x1="11.000000" y1="111.000000" x2="51.000000" y2="111.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 2" x1="50.000000" y1="113.500000" x2="50.000000" y2="33.500000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 3" x1="14.000000" y1="36.000000" x2="50.000000" y2="36.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 4" x1="5.000000" y1="55.000000" x2="50.000000" y2="55.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 5" x1="2.000000" y1="75.000000" x2="50.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 6" x1="4.000000" y1="93.000000" x2="50.000000" y2="93.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <line id="鐩寸嚎 7" x1="126.000000" y1="75.000000" x2="146.000000" y2="75.000000" stroke="#000000" stroke-opacity="1.000000" stroke-width="5.000000"/>
+ <circle id="妞渾 2" cx="91.000000" cy="74.000000" r="40.000000" fill="#000000" fill-opacity="1.000000"/>
+ <line id="鐩寸嚎 8" x1="115.309998" y1="47.410000" x2="68.752884" y2="102.894600" stroke="#FFFFFF" stroke-opacity="1.000000" stroke-width="2.000000"/>
+ <path id="N" d="M68.3 72L65.67 72L65.67 49.98L68.55 49.98L76.55 63.87L78.9 68.39L79.04 68.39C78.9 66.17 78.68 63.72 78.68 61.43L78.68 49.98L81.33 49.98L81.33 72L78.48 72L70.47 58.11L68.09 53.57L67.98 53.57C68.09 55.79 68.3 58.14 68.3 60.44L68.3 72Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="evenodd"/>
+ <path id="N" d="M68.3 72L65.67 72L65.67 49.98L68.55 49.98L76.55 63.87L78.9 68.39L79.04 68.39C78.9 66.17 78.68 63.72 78.68 61.43L78.68 49.98L81.33 49.98L81.33 72L78.48 72L70.47 58.11L68.09 53.57L67.98 53.57C68.09 55.79 68.3 58.14 68.3 60.44L68.3 72Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="evenodd"/>
+ <path id="M" d="M100.84 98L98.32 98L98.32 75.98L101.67 75.98L105.91 87.76C106.42 89.29 106.92 90.82 107.47 92.36L107.61 92.36C108.13 90.82 108.61 89.29 109.11 87.76L113.32 75.98L116.67 75.98L116.67 98L114.07 98L114.07 85.81C114.07 83.93 114.28 81.25 114.42 79.33L114.31 79.33L112.56 84.34L108.4 95.78L106.54 95.78L102.37 84.34L100.63 79.33L100.51 79.33C100.63 81.25 100.84 83.93 100.84 85.81L100.84 98Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="evenodd"/>
+ <path id="M" d="M100.84 98L98.32 98L98.32 75.98L101.67 75.98L105.91 87.76C106.42 89.29 106.92 90.82 107.47 92.36L107.61 92.36C108.13 90.82 108.61 89.29 109.11 87.76L113.32 75.98L116.67 75.98L116.67 98L114.07 98L114.07 85.81C114.07 83.93 114.28 81.25 114.42 79.33L114.31 79.33L112.56 84.34L108.4 95.78L106.54 95.78L102.37 84.34L100.63 79.33L100.51 79.33C100.63 81.25 100.84 83.93 100.84 85.81L100.84 98Z" fill="#FFFFFF" fill-opacity="1.000000" fill-rule="evenodd"/>
+ </g>
+</svg>
diff --git a/web/public/modelImg/voteRight.png b/web/public/modelImg/voteRight.png
deleted file mode 100644
index 55d7a48..0000000
--- a/web/public/modelImg/voteRight.png
+++ /dev/null
Binary files differ
diff --git a/web/public/modelImg/xianhao.png b/web/public/modelImg/xianhao.png
deleted file mode 100644
index 59612b7..0000000
--- a/web/public/modelImg/xianhao.png
+++ /dev/null
Binary files differ
diff --git a/web/src/views/modules/taskReliability/ConfigEdge/index.vue b/web/src/views/modules/taskReliability/ConfigEdge/index.vue
index 593ebcf..4c43ef7 100644
--- a/web/src/views/modules/taskReliability/ConfigEdge/index.vue
+++ b/web/src/views/modules/taskReliability/ConfigEdge/index.vue
@@ -68,11 +68,11 @@
// globalGridAttr:{},
curCell:Edge,
options: [{
- value: 'normal',
+ value: 'rounded',
label: '榛樿'
}, {
- value: 'smooth',
- label: '骞虫粦杩炵嚎'
+ value: 'normal',
+ label: '鐩寸嚎'
}]
}
},
@@ -122,6 +122,11 @@
},
onConnectorChange(val){
this.globalGridAttr.connector = val
+ if(val === 'normal'){
+ this.curCell.setRouter(val)
+ }else {
+ this.curCell.setRouter('manhattan')
+ }
this.curCell.setConnector(val)
},
onLabelChange(e) {
diff --git a/web/src/views/modules/taskReliability/RBD-edit-img.vue b/web/src/views/modules/taskReliability/RBD-edit-img.vue
index dcaa6b1..1beb7ca 100644
--- a/web/src/views/modules/taskReliability/RBD-edit-img.vue
+++ b/web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -3,7 +3,7 @@
<el-row :gutter="[8,8]">
<el-col :span="4">
<div :style="'height:' +left_p+'px'">
- <div style="height: 100%">
+ <div style="height: 100%">
<div id="stencilImg"></div>
</div>
</div>
@@ -12,13 +12,13 @@
<div class="fa-card-a">
<el-form :inline="true">
<el-form-item>
- 妯″瀷鍚嶇О锛歿{modelName}}
+ 妯″瀷鍚嶇О锛歿{ modelName }}
</el-form-item>
<el-form-item>
<el-button type="primary" @click="saveDiagram()">鏆傚瓨</el-button>
<el-button type="primary" @click="analyzeDiagram()">淇濆瓨</el-button>
<el-button type="primary" @click="clearDiagram()">娓呯┖鍥惧舰</el-button>
- <el-button @click="leftAlign()">
+ <el-button @click="leftAlign()">
<i style="font-size: 1rem;" class="wt-iconfont icon-zuoduiqi"></i>
</el-button>
<el-button @click="centerAlign()">
@@ -37,51 +37,9 @@
<i style="font-size: 1rem;" class="wt-iconfont icon-diduiqi"></i>
</el-button>
</el-form-item>
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="宸﹀榻�" placement="left">-->
-<!-- <el-button class="" style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF;" @click="leftAlign()">-->
-<!-- <i style="font-size: 2rem;" class="wt-iconfont icon-zuoduiqi"></i>-->
-<!-- </el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="灞呬腑瀵归綈" placement="left">-->
-<!-- <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"-->
-<!-- @click="centerAlign()"><i style="font-size: 2rem;"-->
-<!-- class="wt-iconfont icon-chuizhiduiqi"></i></el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="鍙冲榻�" placement="left">-->
-<!-- <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"-->
-<!-- @click="rightAlign()"><i style="font-size: 2rem;"-->
-<!-- class="wt-iconfont icon-youduiqi"></i></el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="椤堕儴瀵归綈" placement="left">-->
-<!-- <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"-->
-<!-- @click="topAlign()"><i style="font-size: 2rem;"-->
-<!-- class="wt-iconfont icon-dingduiqi"></i></el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="姘村钩瀵归綈" placement="left">-->
-<!-- <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"-->
-<!-- @click="shuipingAlign()"><i style="font-size: 2rem;"-->
-<!-- class="wt-iconfont icon-shuipingduiqi"></i></el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-tooltip class="item" effect="dark" content="搴曢儴瀵归綈" placement="left">-->
-<!-- <el-button style="margin-left: 0;padding: 2px;border: 1px solid #5F95FF"-->
-<!-- @click="bottomAlign()"><i style="font-size: 2rem;"-->
-<!-- class="wt-iconfont icon-diduiqi"></i></el-button>-->
-<!-- </el-tooltip>-->
-<!-- </el-form-item>-->
</el-form>
<div id="containerImg" style="border: 1px solid #EAEBEE;border-radius: 6px;
- box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);">
+ box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);height: 100%">
</div>
<config-node v-show="type === 'node'" :id="id" :diagramId="diagramId" :globalGridAttr="globalGridAttr"
:graph="graph"
@@ -96,479 +54,502 @@
</template>
<script>
- import {Graph, Shape, Addon, Cell} from '@antv/x6'
- import ConfigNode from './ConfigNode/index.vue'
- import ConfigEdge from './ConfigEdge/index.vue'
- import {removeCurrentTabHandle} from '@/commonJS/common'
- import {setHartBeat} from '@/commonJS/common';
- import Cookies from 'js-cookie'
+import {Graph, Shape, Addon, Cell} from '@antv/x6'
+import ConfigNode from './ConfigNode/index.vue'
+import ConfigEdge from './ConfigEdge/index.vue'
+import {removeCurrentTabHandle} from '@/commonJS/common'
+import {setHartBeat} from '@/commonJS/common';
+import Cookies from 'js-cookie'
- export default {
- name: 'RBD-edit-img',
- /*props: {
+export default {
+ name: 'RBD-edit-img',
+ /*props: {
- },*/
- props: {
- projectId: {
- type: String
- },
- diagarmId: {
- type: String
- },
- pageCode: {
- default: 'wlt_pz'
- },
- flowCode: {
- type: String,
- default: 'wltFlow'
- },
+ },*/
+ props: {
+ projectId: {
+ type: String
},
- components: {
- ConfigNode,
- ConfigEdge
+ diagarmId: {
+ type: String
},
- data() {
- return {
- modelId: '',
- modelName: '',
- modelType: '',
- timer: null,
- imgsList: [
- {imgPath: 'start', imgName: 'start', nodeType: 'start', imgWidth: 60, imgHeight: 60, imgId: '1', data: {}},
- {imgPath: 'end', imgName: 'end', nodeType: 'end', imgWidth: 60, imgHeight: 60, imgId: '2', data: {}},
- {
- imgPath: 'connect',
- imgName: 'connect',
- nodeType: 'connect',
- imgWidth: 20,
- imgHeight: 20,
- imgId: '3',
- data: {}
- },
- // {imgPath:'parallelLeft',imgName:'parallelLeft',nodeType:'parallelLeft',imgWidth:60,imgHeight:60,imgId:'3',data:{}},
- // {imgPath:'parallelRight',imgName:'parallel',nodeType:'parallel',imgWidth:60,imgHeight:60,imgId:'4',data:{}},
- {
- imgPath: 'switchRight',
- imgName: 'switch',
- nodeType: 'switch',
- imgWidth: 60,
- imgHeight: 60,
- imgId: '5',
- data: {}
- },
- {imgPath: 'voteRight', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}},
- ],
- imgsList2: [
- // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'},
- ],
- nodeType: '',
- first: true,
- shape: '',
- projectList: [],
- diagramList: [],
- diagramId: '',
- projectId: '',
- diagramJson: '',
- diagramIdDisabled: false,
- dataForm: {
- id: null,
- content: null,
- publishContent: null,
- hasPublish: 0,
- urlPref: '',
+ pageCode: {
+ default: 'wlt_pz'
+ },
+ flowCode: {
+ type: String,
+ default: 'wltFlow'
+ },
+ },
+ components: {
+ ConfigNode,
+ ConfigEdge
+ },
+ data() {
+ return {
+ nodeAdded: false,
+ connectNode: {},
+ modelId: '',
+ modelName: '',
+ modelType: '',
+ timer: null,
+ imgsList: [
+ {imgPath: 'start', imgName: 'start', nodeType: 'start', imgWidth: 60, imgHeight: 60, imgId: '1', data: {}},
+ {imgPath: 'end', imgName: 'end', nodeType: 'end', imgWidth: 60, imgHeight: 60, imgId: '2', data: {}},
+ {
+ imgPath: 'connect',
+ imgName: 'connect',
+ nodeType: 'connect',
+ imgWidth: 30,
+ imgHeight: 30,
+ imgId: '3',
+ data: {}
},
- // emptyJson: {
- // // 鑺傜偣
- // nodes: [
- // {
- // id: 'node1', // String锛屽彲閫夛紝鑺傜偣鐨勫敮涓�鏍囪瘑
- // width: 500, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� width 鍊�
- // height: 300, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� height 鍊�
- // label: '璇ラ」鐩繕鏈厤缃巶瀹剁綉缁滃浘',
- // attrs: {
- // body: {
- // strokeWidth: 0
- // },
- // }
- // // text: {
- // // text: '璇ラ」鐩繕鏈紪鍒剁綉缁滃浘',
- // // // fontSize: 56,
- // // fill: 'rgba(0,0,0,0.7)'
- // // },
- // // },
- // }
- // ],
- // },
- type: '',
- id: '',
- graph: null,
- globalGridAttr: {
- productType:'',
- voteNum: '',
- repairMttcr: '',
- repairMttcrOther: '',
- repairDistribType: '',
- reliabDistribType: '',
- taskMtbcfOther: '',
- isRepair: 0,
- taskMtbcf: '',
- numberInputValue: '',
- statusImg: '',
- nodeTypeExt: '',
- type: 'mesh',
- size: 10,
- color: '#e5e5e5',
- thickness: 1,
- colorSecond: '#d0d0d0',
- thicknessSecond: 1,
- factor: 4,
- bgColor: '#e5e5e5',
- showImage: true,
- repeat: 'watermark',
- position: 'center',
- bgSize: JSON.stringify({width: 150, height: 150}),
- opacity: 0.1,
-
- stroke: '#5F95FF',
- strokeWidth: 1,
- connector: 'normal',
- label: '',
- nodeStroke: '#5F95FF',
- nodeStrokeWidth: 1,
- nodeFill: '#ffffff',
- nodeFontSize: 12,
- nodeColor: '#080808',
- nodeText: '',
- nodeDate: '',
- nodeUsers: '',
- nodeDataDate: '',
- nodeDataText: '',
- dataId: '',
- inspectName: '',
- distance: 0.5,
- angle: 0,
+ {
+ imgPath: 'switch',
+ imgName: 'switch',
+ nodeType: 'switch',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '5',
+ data: {}
},
- isReady: false,
- curCel: Cell,
- left_p: document.documentElement.clientHeight - 100,
- ports: {
- groups: {
- top: {
- position: 'top',
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- right: {
- position: 'right',
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- bottom: {
- position: 'bottom',
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
- },
- },
- },
- left: {
- position: 'left',
- attrs: {
- circle: {
- r: 4,
- magnet: true,
- stroke: '#5F95FF',
- strokeWidth: 1,
- fill: '#fff',
- style: {
- visibility: 'hidden',
- },
+ {imgPath: 'vote', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}},
+ ],
+ imgsList2: [
+ // {imgPath:'logo',imgName:'logo',nodeType:'node',,nodeTypeExt:'',productType:'',statusImg:'',imgWidth:60,imgHeight:60,imgId:'100',dataId:'123456'},
+ ],
+ combiningImages: [
+ {
+ imgPath: 'switch',
+ imgName: 'switch',
+ nodeType: 'switch',
+ imgWidth: 60,
+ imgHeight: 60,
+ imgId: '5',
+ data: {}
+ },
+ {imgPath: 'vote', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}}
+ ],
+ nodeType: '',
+ first: true,
+ shape: '',
+ projectList: [],
+ diagramList: [],
+ diagramId: '',
+ projectId: '',
+ diagramJson: '',
+ diagramIdDisabled: false,
+ dataForm: {
+ id: null,
+ content: null,
+ publishContent: null,
+ hasPublish: 0,
+ urlPref: '',
+ },
+ // emptyJson: {
+ // // 鑺傜偣
+ // nodes: [
+ // {
+ // id: 'node1', // String锛屽彲閫夛紝鑺傜偣鐨勫敮涓�鏍囪瘑
+ // width: 500, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� width 鍊�
+ // height: 300, // Number锛屽彲閫夛紝鑺傜偣澶у皬鐨� height 鍊�
+ // label: '璇ラ」鐩繕鏈厤缃巶瀹剁綉缁滃浘',
+ // attrs: {
+ // body: {
+ // strokeWidth: 0
+ // },
+ // }
+ // // text: {
+ // // text: '璇ラ」鐩繕鏈紪鍒剁綉缁滃浘',
+ // // // fontSize: 56,
+ // // fill: 'rgba(0,0,0,0.7)'
+ // // },
+ // // },
+ // }
+ // ],
+ // },
+ type: '',
+ id: '',
+ graph: null,
+ globalGridAttr: {
+ productType: '',
+ voteNum: '',
+ repairMttcr: '',
+ repairMttcrOther: '',
+ repairDistribType: '',
+ reliabDistribType: '',
+ taskMtbcfOther: '',
+ isRepair: 0,
+ taskMtbcf: '',
+ numberInputValue: '',
+ statusImg: '',
+ nodeTypeExt: '',
+ type: 'mesh',
+ size: 10,
+ color: '#e5e5e5',
+ thickness: 1,
+ colorSecond: '#d0d0d0',
+ thicknessSecond: 1,
+ factor: 4,
+ bgColor: '#e5e5e5',
+ showImage: true,
+ repeat: 'watermark',
+ position: 'center',
+ bgSize: JSON.stringify({width: 150, height: 150}),
+ opacity: 0.1,
+
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ connector: 'rounded',
+ router: 'manhattan',
+ label: '',
+ nodeStroke: '#5F95FF',
+ nodeStrokeWidth: 1,
+ nodeFill: '#ffffff',
+ nodeFontSize: 12,
+ nodeColor: '#080808',
+ nodeText: '',
+ nodeDate: '',
+ nodeUsers: '',
+ nodeDataDate: '',
+ nodeDataText: '',
+ dataId: '',
+ inspectName: '',
+ distance: 0.5,
+ angle: 0,
+ },
+ isReady: false,
+ curCel: Cell,
+ left_p: document.documentElement.clientHeight - 100,
+ ports: {
+ groups: {
+ top: {
+ position: {name: 'top'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
},
},
},
},
- items: [
- {
- group: 'top',
+ right: {
+ position: {name: 'right'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
},
- {
- group: 'right',
+ },
+ bottom: {
+ position: {name: 'bottom'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
},
- {
- group: 'bottom',
+ },
+ left: {
+ position: {name: 'left'},
+ attrs: {
+ circle: {
+ r: 4,
+ magnet: true,
+ stroke: '#5F95FF',
+ strokeWidth: 1,
+ fill: '#fff',
+ style: {
+ visibility: 'hidden',
+ },
+ },
},
- {
- group: 'left',
- },
- ],
- }
+ },
+ },
+ items: [
+ {
+ id: 'top1',
+ group: 'top',
+ },
+ {
+ id: 'right1',
+ group: 'right',
+ },
+ {
+ id: 'bottom1',
+ group: 'bottom',
+ },
+ {
+ id: 'left1',
+ group: 'left',
+ },
+ ],
}
+ }
+ },
+ watch: {
+ '$route.params.configId'() {
+ // alert('$route.params.projectId change')
+ this.projectId = this.$route.params.projectId
+ //this.diagramId = this.$route.params.diagramId
+ console.log(this.$route.params.projectId, 'this.$route.params.projectId')
+ console.log(this.$route.params.diagramId, 'this.$route.params.diagramId')
+ }
+ },
+ mounted() {
+ //this.initDigram()
+ this.type = 'grid'
+ },
+ methods: {
+ init(row) {
+ this.modelName = row.modelName
+ this.dataForm.id = row.id
+ // this.productId = row.productId
+ // this.getProduct(row.productId)
+ this.initDigram(row.productId)
+ console.log(this.dataForm, 'init(row){')
},
- watch: {
- '$route.params.configId'() {
- // alert('$route.params.projectId change')
- this.projectId = this.$route.params.projectId
- //this.diagramId = this.$route.params.diagramId
- console.log(this.$route.params.projectId, 'this.$route.params.projectId')
- console.log(this.$route.params.diagramId, 'this.$route.params.diagramId')
+ async getDiagram(modelId) {
+ let params = {
+ modelId: modelId,
+ urlPref: window.SITE_CONFIG['apiURL'],
+ token: Cookies.get('token'),
}
- },
- mounted() {
- //this.initDigram()
- this.type = 'grid'
- },
- methods: {
- init(row) {
- this.modelName = row.modelName
- this.dataForm.id = row.id
- // this.productId = row.productId
- // this.getProduct(row.productId)
- this.initDigram(row.productId)
- console.log(this.dataForm, 'init(row){')
- },
- async getDiagram(modelId) {
- let params = {
- modelId: modelId,
- urlPref: window.SITE_CONFIG['apiURL'],
- token: Cookies.get('token'),
+ let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
+ console.log(res, 'async getDiagram( res')
+ if (res.data !== null && (res.data.content != null)) {
+ this.dataForm = res.data
+ console.log(this.dataForm, 'this.dataForm in getDiagram')
+ if (this.dataForm.content != '') {
+ this.diagramJson = JSON.parse(this.dataForm.content)
}
- let res = await this.$http.get(`/taskReliability/ModelLine/getDiagram`, {params: params})
- console.log(res, 'async getDiagram( res')
- if (res.data !== null && (res.data.content != null)) {
- this.dataForm = res.data
- console.log(this.dataForm, 'this.dataForm in getDiagram')
- if(this.dataForm.content!=''){
- this.diagramJson = JSON.parse(this.dataForm.content)
- }
- // console.log(this.dataForm.content,'this.Diagram content')
- console.log(this.diagramJson, 'this.Diagram json')
- this.graph.fromJSON(this.diagramJson)
- this.graph.positionContent('left')
- // this.graph.centerContent()
- // this.graph.zoomToFit()
- } else {
- await this.clearDiagram()
- }
- },
- async clearDiagram() {
- this.dataForm.id = null
- // this.graph.fromJSON(this.emptyJson)
- this.graph.fromJSON('')
+ // console.log(this.dataForm.content,'this.Diagram content')
+ console.log(this.diagramJson, 'this.Diagram json')
+ this.graph.fromJSON(this.diagramJson)
+ this.graph.positionContent('left')
// this.graph.centerContent()
// this.graph.zoomToFit()
- // this.graph.freeze()
- },
- async initDigram(productId) {
- this.timer = setHartBeat(10, 240);
- console.log(document.documentElement.clientWidth, 'document.documentElement.clientWidth')
- console.log(document.documentElement.clientHeight, 'document.documentElement.clientHeight')
- this.graph = new Graph({
- container: document.getElementById('containerImg'),
- width: document.documentElement.clientWidth,
- height: document.documentElement.clientHeight - 200,
- // async: true,
- grid: {
- visible: true,
+ } else {
+ await this.clearDiagram()
+ }
+ },
+ async clearDiagram() {
+ this.dataForm.id = null
+ // this.graph.fromJSON(this.emptyJson)
+ this.graph.fromJSON('')
+ // this.graph.centerContent()
+ // this.graph.zoomToFit()
+ // this.graph.freeze()
+ },
+ async initDigram(productId) {
+ this.timer = setHartBeat(10, 240);
+ console.log(document.documentElement.clientWidth, 'document.documentElement.clientWidth')
+ console.log(document.documentElement.clientHeight, 'document.documentElement.clientHeight')
+ this.graph = new Graph({
+ container: document.getElementById('containerImg'),
+ width: document.documentElement.clientWidth,
+ height: document.documentElement.clientHeight - 200,
+ // async: true,
+ grid: {
+ visible: true,
+ },
+ autoResize: true,
+ history: {
+ enabled: true,
+ beforeAddCommand(event, args) {
+ if (args.key === 'tools') {
+ console.log(args.key, 'event, args')
+ return false
+ }
},
+ },
+ // panning: {
+ // enabled: true,
+ // },
+ scroller: {
+ enabled: true,
+ pageVisible: true,
autoResize: true,
- history: {
- enabled: true,
- beforeAddCommand(event, args) {
- if (args.key==='tools') {
- console.log(args.key,'event, args')
- return false
- }
- },
- },
- // panning: {
- // enabled: true,
- // },
- scroller: {
- enabled: true,
- pageVisible: true,
- pageBreak: true,
- pannable: true,
- minVisibleWidth: 200,
- minVisibleHeight: 200,
- modifiers: 'shift',
+ pageBreak: true,
+ pannable: true,
+ minVisibleWidth: 200,
+ minVisibleHeight: 200,
+ modifiers: 'shift',
+ },
+ mousewheel: {
+ enabled: true,
+ zoomAtMousePosition: true,
+ modifiers: 'ctrl',
+ minScale: 0.5,
+ maxScale: 3,
+ },
+ connecting: {
+ router: {
+ name: 'manhattan',
+ // args: {
+ // padding: 1,
+ // },
},
- // panning: {
- // enabled: true,
- // modifiers: 'shift',
- // },
- mousewheel: {
- enabled: true,
- zoomAtMousePosition: true,
- modifiers: 'ctrl',
- minScale: 0.1,
- maxScale: 10,
- },
- connecting: {
- router: {
- name: 'normal',
- // args: {
- // padding: 1,
- // },
+ connector: {
+ name: 'rounded',
+ args: {
+ radius: 5,
},
- connector: {
- name: 'rounded',
- args: {
- radius: 8,
+ },
+ anchor: 'center',
+ connectionPoint: 'anchor',
+ allowBlank: false,
+ snap: {
+ radius: 20,
+ },
+ createEdge() {
+ return new Shape.Edge({
+ attrs: {
+ line: {
+ stroke: '#A2B1C3',
+ strokeWidth: 2,
+ targetMarker: 'classic'
+ }
},
- },
- // anchor: 'center',
- connectionPoint: 'anchor',
- allowBlank: false,
- snap: {
- radius: 20,
- },
- createEdge() {
- return new Shape.Edge({
+ labels: [{
attrs: {
- line: {
- stroke: '#A2B1C3',
- strokeWidth: 2,
- targetMarker: 'classic'
+ body: {
+ stroke: '#5F95FF',
+ },
+ text: {
+ text: ''
}
},
- labels: [{
- attrs: {
- body: {
- stroke: '#5F95FF',
- },
- text: {
- text: ''
- }
- },
- position: {
- distance: 0.5,
- angle: 180,
- options: {
- keepGradient: true,
- ensureLegibility: true
- }
+ position: {
+ distance: 0.5,
+ angle: 180,
+ options: {
+ keepGradient: true,
+ ensureLegibility: true
}
- }],
- tools: {
- name: 'segments',
- args: {
- attrs: { fill: '#666' },
- },
+ }
+ }],
+ tools: {
+ name: 'segments',
+ args: {
+ attrs: {fill: '#666'},
},
- zIndex: 0,
- })
- },
- validateConnection({targetMagnet}) {
- return !!targetMagnet
- },
+ },
+ zIndex: 0,
+ })
},
- highlighting: {
- magnetAdsorbed: {
- name: 'stroke',
- args: {
- attrs: {
- fill: '#5F95FF',
- stroke: '#5F95FF',
- },
+ validateConnection({targetMagnet}) {
+ return !!targetMagnet
+ },
+ },
+ highlighting: {
+ magnetAdsorbed: {
+ name: 'stroke',
+ args: {
+ attrs: {
+ fill: '#5F95FF',
+ stroke: '#5F95FF',
},
},
},
- resizing: {
- enabled: true,
- restricted: true
- },
- rotating: true,
- selecting: {
- enabled: true,
- rubberband: true,
- rubberEdge: true,
- // showNodeSelectionBox: true,
- },
- snapline: true,
- keyboard: true,
- clipboard: true,
- })
- this.graph.centerContent()
- const stencil = new Addon.Stencil({
- getDragNode: (node) => node.clone({ keepId: true }),
- getDropNode(node) {
- let {width, height} = node.size()
- if (node.getData().imgWidth) {
- width = node.getData().imgWidth
+ },
+ resizing: true,
+ rotating: true,
+ selecting: {
+ enabled: true,
+ rubberband: true,
+ rubberEdge: true,
+ // showNodeSelectionBox: true,
+ },
+ snapline: true,
+ keyboard: true,
+ clipboard: true,
+ })
+ this.graph.centerContent()
+ const stencil = new Addon.Stencil({
+ getDragNode: (node) => node.clone({keepId: true}),
+ getDropNode: (node) => {
+ if (node.getData().type && node.getData().type === 'imageNodes2') {
+ return node.clone({keepId: true})
+ } else {
+ return node.clone()
+ }
+ },
+ validateNode: (node) => {
+ const existingNodes = this.graph.getNodes(); // 鑾峰彇鐢诲竷涓婃墍鏈夎妭鐐�
+ for (const existingNode of existingNodes) {
+ if (existingNode.id === node.id) {
+ this.$message({message: '璇ヨ澶囪妭鐐瑰凡鍦ㄧ敾甯冧笂锛屾棤娉曞啀娆$粯鍒�', type: 'warning'})
+ return false; // 鍙栨秷娣诲姞鑺傜偣鎿嶄綔
}
- if (node.getData().imgHeight) {
- height = node.getData().imgHeight
- }
- return node.clone({ keepId: true }).size(width, height)
+ }
+ },
+ title: '',
+ target: this.graph,
+ stencilGraphWidth: 200,
+ stencilGraphHeight: 280,
+ collapsable: true,
+ groups: [
+ {
+ title: '杩愮畻绗﹀彿',
+ name: 'group1',
},
- validateNode(node){
- console.log(node.id)
+ {
+ title: '缁勫悎鍥�',
+ name: 'combiningImages',
+ graphHeight: 100,
+ },
+ {
+ title: '璁惧鑺傜偣',
+ name: 'group2',
+ graphHeight: '',
+ layoutOptions: {
+ rowHeight: 90,
},
- title: '',
- target: this.graph,
- stencilGraphWidth: 200,
- stencilGraphHeight: 280,
- collapsable: true,
- groups: [
- {
- title: '杩愮畻绗﹀彿',
- name: 'group1',
- },
- {
- title: '璁惧鑺傜偣',
- name: 'group2',
- graphHeight: '',
- layoutOptions: {
- rowHeight: 90,
- },
- }
- ],
- layoutOptions: {
- columns: 2,
- columnWidth: 105,
- },
- })
- document.getElementById('stencilImg').appendChild(stencil.container)
- const imageNodes = this.imgsList.map((item) =>
+ }
+ ],
+ layoutOptions: {
+ columns: 2,
+ columnWidth: 105,
+ },
+ })
+ document.getElementById('stencilImg').appendChild(stencil.container)
+ const imageNodes = this.imgsList.map((item) =>
this.graph.createNode({
shape: 'image',
- imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
width: item.imgWidth,
height: item.imgHeight,
data: {
+ type: 'imageNodes',
dataId: '',
nodeType: item.nodeType,
nodeTypeExt: '',
- voteNum:''
+ voteNum: ''
},
attrs: {
+ image: {
+ 'xlink:href': '/modelImg/' + item.imgPath + '.svg',
+ },
text: {
text: item.imgName,
fontSize: 14,
@@ -584,14 +565,47 @@
},
ports: {...this.ports},
}),
- )
- let params = {
- productId: productId
- }
- let res = await this.$http.get(`/basicInfo/XhProductModel/getProduct`, {params: params})
- this.imgsList2 = res.data
- console.log(this.imgsList2, 'getProduct(productId)234567890')
- const imageNodes2 = this.imgsList2.map((item) =>
+ )
+ const combiningImages = this.combiningImages.map((item) =>
+ this.graph.createNode({
+ shape: 'image',
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ width: item.imgWidth,
+ height: item.imgHeight,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ nodeType: item.nodeType,
+ nodeTypeExt: '',
+ voteNum: ''
+ },
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/' + item.imgPath + '.svg',
+ },
+ text: {
+ text: item.imgName,
+ fontSize: 14,
+ style: {
+ color: this.globalGridAttr.nodeColor
+ },
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
+ },
+ ports: {...this.ports},
+ }),
+ )
+ let params = {
+ productId: productId
+ }
+ let res = await this.$http.get(`/basicInfo/XhProductModel/getProduct`, {params: params})
+ this.imgsList2 = res.data
+ console.log(this.imgsList2, 'getProduct(productId)234567890')
+ const imageNodes2 = this.imgsList2.map((item) =>
this.graph.createNode({
shape: 'image',
imageUrl: `${window.SITE_CONFIG['apiURL']}/sysPictureBase/getProductImg?token=${Cookies.get('token')}&id=${item.imgPath}`,
@@ -599,6 +613,7 @@
height: 60,
id: item.dataId, // 鎵嬪姩璁剧疆鑺傜偣鐨� ID
data: {
+ type: 'imageNodes2',
isRepair: item.isRepair,
dataId: item.dataId,
nodeType: item.nodeType,
@@ -613,7 +628,7 @@
taskMtbcfOther: item.taskMtbcfOther,
imgHeight: item.imgHeight,
imgWidth: item.imgWidth,
- voteNum:'',
+ voteNum: '',
},
attrs: {
text: {
@@ -652,450 +667,562 @@
],
ports: {...this.ports},
}),
- )
- stencil.load(imageNodes, 'group1')
- stencil.load(imageNodes2, 'group2')
+ )
+ stencil.load(imageNodes, 'group1')
+ stencil.load(imageNodes2, 'group2')
+ stencil.load(combiningImages, 'combiningImages')
+ this.graph.bindKey(['meta+c', 'ctrl+c'], () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.graph.copy(cells)
+ }
+ return false
+ })
- this.graph.bindKey(['meta+c', 'ctrl+c'], () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.graph.copy(cells)
- }
- return false
- })
-
- this.graph.bindKey(['meta+x', 'ctrl+x'], () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.graph.cut(cells)
- }
- return false
- })
- this.graph.bindKey(['meta+v', 'ctrl+v'], () => {
- if (!this.graph.isClipboardEmpty()) {
- const cells = this.graph.paste({offset: 32})
- this.graph.cleanSelection()
- this.graph.select(cells)
- }
- return false
- })
+ this.graph.bindKey(['meta+x', 'ctrl+x'], () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.graph.cut(cells)
+ }
+ return false
+ })
+ this.graph.bindKey(['meta+v', 'ctrl+v'], () => {
+ if (!this.graph.isClipboardEmpty()) {
+ const cells = this.graph.paste({offset: 32})
+ this.graph.cleanSelection()
+ this.graph.select(cells)
+ }
+ return false
+ })
//undo redo
- this.graph.bindKey(['meta+z', 'ctrl+z'], () => {
- if (this.graph.history.canUndo()) {
- this.graph.history.undo()
- }
- return false
- })
+ this.graph.bindKey(['meta+z', 'ctrl+z'], () => {
+ if (this.graph.history.canUndo()) {
+ this.graph.history.undo()
+ }
+ return false
+ })
- this.graph.bindKey(['meta+shift+z', 'ctrl+shift+z'], () => {
- if (this.graph.history.canRedo()) {
- this.graph.history.redo()
- }
- return false
- })
+ this.graph.bindKey(['meta+shift+z', 'ctrl+shift+z'], () => {
+ if (this.graph.history.canRedo()) {
+ this.graph.history.redo()
+ }
+ return false
+ })
// select all
- this.graph.bindKey(['meta+a', 'ctrl+a'], () => {
- const nodes = this.graph.getNodes()
- if (nodes) {
- this.graph.select(nodes)
- }
- })
+ this.graph.bindKey(['meta+a', 'ctrl+a'], () => {
+ const nodes = this.graph.getNodes()
+ if (nodes) {
+ this.graph.select(nodes)
+ }
+ })
//delete
- this.graph.bindKey('delete', () => {
- const cells = this.graph.getSelectedCells()
- if (cells.length) {
- this.$confirm('鏄惁鍒犻櫎璇ヨ妭鐐�?', '鎻愮ず', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- }).then(() => {
- this.$message({
- type: 'success',
- message: '鍒犻櫎鎴愬姛!'
- })
- this.graph.removeCells(cells)
- }).catch(() => {
- this.$message({
- type: 'info',
- message: '宸插彇娑堝垹闄�'
- })
+ this.graph.bindKey('delete', () => {
+ const cells = this.graph.getSelectedCells()
+ if (cells.length) {
+ this.$confirm('鏄惁鍒犻櫎璇ヨ妭鐐�?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.$message({
+ type: 'success',
+ message: '鍒犻櫎鎴愬姛!'
})
- }
- })
+ this.graph.removeCells(cells)
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ })
+ })
+ }
+ })
// zoom
- this.graph.bindKey(['ctrl+1', 'meta+1'], () => {
- const zoom = this.graph.zoom()
- if (zoom < 1.5) {
- this.graph.zoom(0.1)
+ this.graph.bindKey(['ctrl+1', 'meta+1'], () => {
+ const zoom = this.graph.zoom()
+ if (zoom < 1.5) {
+ this.graph.zoom(0.1)
+ }
+ })
+
+ this.graph.bindKey(['ctrl+2', 'meta+2'], () => {
+ const zoom = this.graph.zoom()
+ if (zoom > 0.5) {
+ this.graph.zoom(-0.1)
+ }
+ })
+
+ this.graph.on('blank:click', ({cell}) => {
+ this.reset()
+ // this.type.value = "grid"
+ this.type = 'grid'
+ // this.id = cell.id
+ })
+ // 鐩戝惉鑺傜偣娣诲姞浜嬩欢
+ this.graph.on('node:added', ({node}) => {
+ const nodeId = node.id; // 鑾峰彇鑺傜偣鐨勫敮涓� ID
+ const nodeObj = node
+ const intersectNodes = [];
+ // 妫�鏌ラ櫎褰撳墠鑺傜偣涔嬪鐨勬墍鏈夎妭鐐圭殑鍖呭洿妗嗘槸鍚︾浉浜�
+ for (const otherNode of this.graph.getNodes()) {
+ if (otherNode === node) continue;
+ const bbox1 = node.getBBox();
+ const bbox2 = otherNode.getBBox();
+ if (this.isIntersect(bbox1, bbox2)) {
+ intersectNodes.push(otherNode);
}
- })
-
- this.graph.bindKey(['ctrl+2', 'meta+2'], () => {
- const zoom = this.graph.zoom()
- if (zoom > 0.5) {
- this.graph.zoom(-0.1)
- }
- })
-
- this.graph.on('blank:click', ({cell}) => {
- this.reset()
- // this.type.value = "grid"
- this.type = 'grid'
- // this.id = cell.id
- })
-
- this.graph.on('cell:click', ({cell}) => {
- // this.type.value = cell.isNode() ? "node" : "edge"
- this.type = cell.isNode() ? 'node' : 'edge'
- this.shape = cell.shape
- this.id = cell.id
- if (this.type === 'node') {
- this.nodeType = cell.getData().nodeType
- console.log(this.nodeType,cell.id,'this.nodeType')
- }
- console.log(this.shape, 'this.shape')
- // this.nodeOpt(this.id, this.globalGridAttr)
- })
- //鍗曞嚮杈硅妭鐐�
- this.graph.on('edge:click', ({edge}) => {
- this.reset()
- edge.attr('line/stroke', 'orange')
- edge.prop('labels/0', {
- attrs: {
- body: {
- stroke: 'orange',
- },
- },
-
+ }
+ if (intersectNodes.length > 0) {
+ // console.log('Nodes intersect with node:', node.id);
+ console.log('Intersecting nodes:', intersectNodes.map(n => n)); // 鐩镐氦鑺傜偣鐨勫璞�
+ intersectNodes.map(node => {
+ this.addNodeAndConnect(node, nodeObj);
})
- })
- // 鍗曞嚮node鑺傜偣
- this.graph.on('node:click', ({node}) => {
- this.reset()
- node.attr('line/stroke', 'orange')
- node.prop('labels/0', {
- attrs: {
- body: {
- stroke: 'orange',
- },
+ }
+ });
+ this.graph.on('cell:click', ({cell}) => {
+ // this.type.value = cell.isNode() ? "node" : "edge"
+ this.type = cell.isNode() ? 'node' : 'edge'
+ this.shape = cell.shape
+ this.id = cell.id
+ if (this.type === 'node') {
+ this.nodeType = cell.getData().nodeType
+ console.log(this.nodeType, cell.id, 'this.nodeType')
+ }
+ console.log(this.shape, 'this.shape')
+ // this.nodeOpt(this.id, this.globalGridAttr)
+ })
+ //鍗曞嚮杈硅妭鐐�
+ this.graph.on('edge:click', ({edge}) => {
+ this.reset()
+ edge.attr('line/stroke', 'orange')
+ edge.prop('labels/0', {
+ attrs: {
+ body: {
+ stroke: 'orange',
},
- })
+ },
+
})
- // 鎺у埗杩炴帴妗╂樉绀�/闅愯棌
- this.graph.on('node:delete', ({view, e}) => {
+ })
+ // 鍗曞嚮node鑺傜偣
+ this.graph.on('node:click', ({node}) => {
+ })
+ // 鎺у埗杩炴帴妗╂樉绀�/闅愯棌
+ this.graph.on('node:delete', ({view, e}) => {
+ e.stopPropagation()
+ view.cell.remove()
+ })
+
+ this.graph.on('node:customevent', ({name, view, e}) => {
+ if (name === 'node:delete') {
e.stopPropagation()
view.cell.remove()
- })
-
- this.graph.on('node:customevent', ({name, view, e}) => {
- if (name === 'node:delete') {
- e.stopPropagation()
- view.cell.remove()
- }
- })
- // 鍙屽嚮缂栬緫
- this.graph.on('cell:dblclick', ({cell, e}) => {
- const isNode = cell.isNode()
- const name = cell.isNode() ? 'node-editor' : 'edge-editor'
- cell.removeTool(name)
- cell.addTools({
- name,
- args: {
- event: e,
- attrs: {
- backgroundColor: isNode ? '#EFF4FF' : '#FFF',
- text: {
- fontSize: 16,
- fill: '#262626',
- },
- },
- },
- })
- })
-
- this.graph.on('node:mouseenter', ({node}) => {
- const container = document.getElementById('containerImg')
- const ports = container.querySelectorAll(
- '.x6-port-body',
- )
- this.showPorts(ports, true)
- })
-
- this.graph.on('node:mouseleave', ({node}) => {
- // if (node.hasTool('button-remove')) {
- // node.removeTool('button-remove')
- // }
- const container = document.getElementById('containerImg')
- const ports = container.querySelectorAll(
- '.x6-port-body',
- )
- this.showPorts(ports, false)
- })
-
- this.graph.on('edge:mouseenter', ({cell}) => {
- // alert(123)
- cell.addTools([
- {
- name: 'source-arrowhead',
- },
- {
- name: 'target-arrowhead',
- args: {
- attrs: {
- fill: 'red',
- },
- },
- },
- {
- name: 'segments',
- args: {snapRadius: 20, attrs: {fill: '#444'}}
- },
- ])
- })
-
- this.graph.on('edge:mouseleave', ({cell}) => {
- cell.removeTools()
- })
-
- await this.getDiagram(this.dataForm.id)
- },
- showPorts(ports, show) {
- for (let i = 0, len = ports.length; i < len; i = i + 1) {
- ports[i].style.visibility = show ? 'visible' : 'hidden'
}
- },
- reset() {
- this.graph.drawBackground({color: '#fff'})
- const nodes = this.graph.getNodes()
- const edges = this.graph.getEdges()
- nodes.forEach((node) => {
- node.attr('body/stroke', '#5F95FF')
- })
- edges.forEach((edge) => {
- edge.attr('line/stroke', '#5F95FF')
- edge.prop('labels/0', {
+ })
+ // 鍙屽嚮缂栬緫
+ this.graph.on('cell:dblclick', ({cell, e}) => {
+ const isNode = cell.isNode()
+ const name = cell.isNode() ? 'node-editor' : 'edge-editor'
+ cell.removeTool(name)
+ cell.addTools({
+ name,
+ args: {
+ event: e,
attrs: {
- body: {
- stroke: '#5F95FF',
+ backgroundColor: isNode ? '#EFF4FF' : '#FFF',
+ text: {
+ fontSize: 16,
+ fill: '#262626',
},
},
- })
+ },
})
- },
- // nodeOpt(id, globalGridAttr) {
- // this.curCel = null
- // if (id) {
- // let cell = this.graph.getCellById(id)
- // console.log(cell, 'let cell 123456')
- // if (!cell || !cell.isNode()) {
- // return
- // }
- // this.curCel = cell
- // globalGridAttr.nodeStroke = cell.attr('body/stroke')
- // globalGridAttr.nodeStrokeWidth = cell.attr('body/strokeWidth')
- // globalGridAttr.nodeFill = cell.attr('body/fill')
- // globalGridAttr.nodeFontSize = cell.attr('text/fontSize')
- // globalGridAttr.nodeFontSize = cell.attr('title/fontSize')
- // globalGridAttr.nodeColor = cell.attr('text/fill')
- // globalGridAttr.nodeColor = cell.attr('title/fill')
- // globalGridAttr.nodeColor = cell.attr('text/style/color')
- // globalGridAttr.nodeColor = cell.attr('title/style/color')
- // globalGridAttr.nodeUsers = cell.attr('approve/users')
- // globalGridAttr.nodeText = cell.attr('text/text')
- // globalGridAttr.nodeDate = cell.attr('title/text')
- // // let data={
- // // dataId:this.projectId,
- // // finishDate: globalGridAttr.nodeDate,
- // // }
- // cell.getData()
- // console.log( cell.getData(),' cell.getData() 909')
- // }
- // return this.curCel;
- // },
- async search() {
- await this.getDiagram();
- },
- async saveDiagram() {
- console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
- this.dataForm.content = JSON.stringify(this.graph.toJSON())
- this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
- console.log(this.dataForm, 'dataFrom')
- await this.$http[this.dataForm.id === null ? 'post' : 'put'](`/taskReliability/ModelLine/`, this.dataForm).then(async res => {
- if (res.msg === 'success') {
- this.$alert('淇濆瓨鎴愬姛', '鎻愮ず', {
- confirmButtonText: '纭畾'
- })
- }
- })
- },
- async analyzeDiagram() {
- console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
- this.dataForm.content = JSON.stringify(this.graph.toJSON())
- this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
- await this.$http['post'](`/taskReliability/ModelLine/analyze`, this.dataForm).then(async res => {
- if (res.msg === 'success') {
- this.$alert('瑙f瀽鎴愬姛', '鎻愮ず', {
- confirmButtonText: '纭畾'
- })
- }
- })
- },
- // AlignmentsChanges(val){
- // console.log(val,'align.value')
- // if(val ==='閫夐」1'){
- // console.log(val,'align.value')
- // this.leftAlign()
- // }
- // if(val ==='閫夐」2') {
- // console.log('鍙冲榻�','align.value')
- // this.rightAlign()
- // }
- // },
- leftAlign() {
- const NODE = this.graph.getSelectedCells()
- let leftX = null
- for (let a of NODE) {
- if (leftX == null || a.getBBox().x < leftX) {
- leftX = a.getBBox().x
- }
- }
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(leftX, y)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- topAlign() {
- const NODE = this.graph.getSelectedCells()
- let topY = null
- for (let a of NODE) {
- console.log(a.getBBox(), 'a.getBBox()')
- if (topY == null || a.getBBox().y < topY) {
- topY = a.getBBox().y
- }
- }
- for (let a of NODE) {
- let x = a.getBBox().x
- a.position(x, topY)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- centerAlign() {
- const NODE = this.graph.getSelectedCells()
- let rightX = null
- let leftX = null
- for (let a of NODE) {
- if (leftX == null || a.getBBox().x < leftX) {
- leftX = a.getBBox().x
- }
- }
- for (let a of NODE) {
- if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
- rightX = a.getBBox().x + a.getBBox().width
- }
- }
+ })
- let centerX = leftX + (rightX - leftX) / 2
+ this.graph.on('node:mouseenter', ({node}) => {
+ const container = document.getElementById('containerImg')
+ const ports = container.querySelectorAll(
+ '.x6-port-body',
+ )
+ this.showPorts(ports, true)
+ })
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(centerX - a.getBBox().width / 2, y)
- // console.log(leftX, ':', y, ' x:y')
- }
- },
- shuipingAlign() {
- const NODE = this.graph.getSelectedCells()
- let bottomY = null
- let topY = null
- for (let a of NODE) {
- if (topY == null || a.getBBox().y || 0 < topY) {
- topY = a.getBBox().y
- }
- }
- for (let a of NODE) {
- if (bottomY == null || a.getBBox().y + a.getBBox().height > bottomY) {
- bottomY = a.getBBox().y + a.getBBox().height
- }
- }
+ this.graph.on('node:mouseleave', ({node}) => {
+ // if (node.hasTool('button-remove')) {
+ // node.removeTool('button-remove')
+ // }
+ const container = document.getElementById('containerImg')
+ const ports = container.querySelectorAll(
+ '.x6-port-body',
+ )
+ this.showPorts(ports, false)
+ })
- let centerY = topY + (bottomY - topY) / 2
- for (let a of NODE) {
- let x = a.getBBox().x
- let centerHei = a.getBBox().height / 2
- a.position(x, centerY - centerHei)
- }
- },
- rightAlign() {
- const NODE = this.graph.getSelectedCells()
- let rightX = null
- for (let a of NODE) {
- if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
- rightX = a.getBBox().x + a.getBBox().width
- }
- }
- for (let a of NODE) {
- let y = a.getBBox().y
- a.position(rightX - a.getBBox().width, y)
- }
- },
- bottomAlign() {
- const NODE = this.graph.getSelectedCells()
- let bottomY = null
- for (let a of NODE) {
- if (bottomY == null || (a.getBBox().y + a.getBBox().height) > bottomY) {
- bottomY = a.getBBox().y + a.getBBox().height
- }
- }
+ this.graph.on('edge:mouseenter', ({cell}) => {
+ // alert(123)
+ cell.addTools([
+ {
+ name: 'source-arrowhead',
+ },
+ {
+ name: 'target-arrowhead',
+ args: {
+ attrs: {
+ fill: 'red',
+ },
+ },
+ },
+ {
+ name: 'segments',
+ args: {snapRadius: 20, attrs: {fill: '#444'}}
+ },
+ ])
+ })
- for (let a of NODE) {
- let x = a.getBBox().x
- a.position(x, bottomY - a.getBBox().height)
- }
- },
- close() {
- if (this.timer) {
- window.clearInterval(this.timer)
- }
- },
+ this.graph.on('edge:mouseleave', ({cell}) => {
+ cell.removeTools()
+ })
+
+ await this.getDiagram(this.dataForm.id)
},
+ showPorts(ports, show) {
+ for (let i = 0, len = ports.length; i < len; i = i + 1) {
+ ports[i].style.visibility = show ? 'visible' : 'hidden'
+ }
+ },
+ reset() {
+ this.graph.drawBackground({color: '#fff'})
+ const nodes = this.graph.getNodes()
+ const edges = this.graph.getEdges()
+ nodes.forEach((node) => {
+ node.attr('body/stroke', '#5F95FF')
+ })
+ edges.forEach((edge) => {
+ edge.attr('line/stroke', '#5F95FF')
+ edge.prop('labels/0', {
+ attrs: {
+ body: {
+ stroke: '#5F95FF',
+ },
+ },
+ })
+ })
+ },
+ async search() {
+ await this.getDiagram();
+ },
+ async saveDiagram() {
+ console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
+ this.dataForm.content = JSON.stringify(this.graph.toJSON())
+ this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
+ console.log(this.dataForm, 'dataFrom')
+ await this.$http[this.dataForm.id === null ? 'post' : 'put'](`/taskReliability/ModelLine/`, this.dataForm).then(async res => {
+ if (res.msg === 'success') {
+ this.$alert('淇濆瓨鎴愬姛', '鎻愮ず', {
+ confirmButtonText: '纭畾'
+ })
+ }
+ })
+ },
+ async analyzeDiagram() {
+ console.log(JSON.stringify(this.graph.toJSON()), 'graph.toJSON()')
+ this.dataForm.content = JSON.stringify(this.graph.toJSON())
+ this.dataForm.urlPref = window.SITE_CONFIG['apiURL']
+ await this.$http['post'](`/taskReliability/ModelLine/analyze`, this.dataForm).then(async res => {
+ if (res.msg === 'success') {
+ this.$alert('瑙f瀽鎴愬姛', '鎻愮ず', {
+ confirmButtonText: '纭畾'
+ })
+ }
+ })
+ },
+ leftAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let leftX = null
+ for (let a of NODE) {
+ if (leftX == null || a.getBBox().x < leftX) {
+ leftX = a.getBBox().x
+ }
+ }
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(leftX, y)
+ // console.log(leftX, ':', y, ' x:y')
+ }
+ },
+ topAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let topY = null
+ for (let a of NODE) {
+ console.log(a.getBBox(), 'a.getBBox()')
+ if (topY == null || a.getBBox().y < topY) {
+ topY = a.getBBox().y
+ }
+ }
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ a.position(x, topY)
+ // console.log(leftX, ':', y, ' x:y')
+ }
+ },
+ centerAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let rightX = null
+ let leftX = null
+ for (let a of NODE) {
+ if (leftX == null || a.getBBox().x < leftX) {
+ leftX = a.getBBox().x
+ }
+ }
+ for (let a of NODE) {
+ if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
+ rightX = a.getBBox().x + a.getBBox().width
+ }
+ }
- }
+ let centerX = leftX + (rightX - leftX) / 2
+
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(centerX - a.getBBox().width / 2, y)
+ // console.log(leftX, ':', y, ' x:y')
+ }
+ },
+ shuipingAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let bottomY = null
+ let topY = null
+ for (let a of NODE) {
+ if (topY == null || a.getBBox().y || 0 < topY) {
+ topY = a.getBBox().y
+ }
+ }
+ for (let a of NODE) {
+ if (bottomY == null || a.getBBox().y + a.getBBox().height > bottomY) {
+ bottomY = a.getBBox().y + a.getBBox().height
+ }
+ }
+
+ let centerY = topY + (bottomY - topY) / 2
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ let centerHei = a.getBBox().height / 2
+ a.position(x, centerY - centerHei)
+ }
+ },
+ rightAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let rightX = null
+ for (let a of NODE) {
+ if (rightX == null || a.getBBox().x + a.getBBox().width > rightX) {
+ rightX = a.getBBox().x + a.getBBox().width
+ }
+ }
+ for (let a of NODE) {
+ let y = a.getBBox().y
+ a.position(rightX - a.getBBox().width, y)
+ }
+ },
+ bottomAlign() {
+ const NODE = this.graph.getSelectedCells()
+ let bottomY = null
+ for (let a of NODE) {
+ if (bottomY == null || (a.getBBox().y + a.getBBox().height) > bottomY) {
+ bottomY = a.getBBox().y + a.getBBox().height
+ }
+ }
+
+ for (let a of NODE) {
+ let x = a.getBBox().x
+ a.position(x, bottomY - a.getBBox().height)
+ }
+ },
+ close() {
+ if (this.timer) {
+ window.clearInterval(this.timer)
+ }
+ },
+ // 瀹氫箟鍑芥暟鏉ユ鏌ヤ袱涓寘鍥存鏄惁鐩镐氦
+ isIntersect(bbox1, bbox2) {
+ return (
+ bbox1.x < bbox2.x + bbox2.width &&
+ bbox1.x + bbox1.width > bbox2.x &&
+ bbox1.y < bbox2.y + bbox2.height &&
+ bbox1.y + bbox1.height > bbox2.y
+ )
+ },
+ addNodeAndConnect(node, nodeObj) { // node鏄敾甯冨師鏈夌殑鑺傜偣銆俷odeObj鏄綋鍓嶆嫋鎷界殑鑺傜偣
+ const nodeType = node.getData().nodeType // 鑾峰彇鑺傜偣绫诲瀷
+ const edges = this.graph.getConnectedEdges(node); // 鑾峰彇涓庡師鑺傜偣鐩稿叧鑱旂殑鎵�鏈夎繛鎺ョ嚎
+ let TopSum = 0 // 鍦ㄥ師鑺傜偣涓婃柟
+ let BottomSum = 0 // 鍦ㄥ師鑺傜偣涓嬫柟
+ const edgesSum = edges.length
+ if (nodeType !== 'node') {
+ if (edges.length === 0) {
+ if (!this.nodeAdded) {
+ // 娣诲姞鑺傜偣鐨勬搷浣�
+ this.connectNode = this.graph.addNode({
+ shape: 'image',
+ // imageUrl: require('/public/modelImg/' + item.imgPath + '.png'),
+ width: 30,
+ height: 30,
+ data: {
+ type: 'imageNodes',
+ dataId: '',
+ nodeType: 'connect',
+ nodeTypeExt: '',
+ voteNum: ''
+ },
+ attrs: {
+ image: {
+ 'xlink:href': '/modelImg/connect.svg',
+ },
+ text: {
+ text: 'connect',
+ fontSize: 14,
+ refX: 0.5,
+ refY: '100%',
+ refY2: 4,
+ textAnchor: 'middle',
+ textVerticalAnchor: 'top',
+ },
+ },
+ ports: {...this.ports},
+ })
+ // 璁剧疆鏍囪涓� true锛岃〃绀哄凡缁忔坊鍔犺繃鑺傜偣
+ this.nodeAdded = true;
+ }
+ nodeObj.position(node.position().x - 240, node.position().y - (120 * edgesSum));
+ this.connectNode.position(node.position().x - 480, node.position().y + (node.size().height - this.connectNode.size().height) / 2);
+ } else if (edges.length === 1) {
+ // 灏嗚妭鐐圭Щ鍔ㄥ埌鎸囧畾鐨勪綅缃�
+ nodeObj.position(node.position().x - 240, node.position().y - (120 * edgesSum));
+ } else {
+ for (const edge of edges) {
+ const sourcePointY = edge.getSourcePoint().y; // 鑾峰彇杩炴帴绾跨殑璧峰鐐箉鍧愭爣
+ const targetPointY = edge.getTargetPoint().y; // 鑾峰彇杩炴帴绾跨殑缁撴潫鐐箉鍧愭爣
+ console.log('鍘熻妭鐐筜鍧愭爣' + node.position().y, '杩炴帴绾胯捣濮媃鍧愭爣' + sourcePointY)
+ if (targetPointY > sourcePointY) {
+ TopSum++
+ } else if (targetPointY < sourcePointY) {
+ BottomSum++
+ }
+ }
+ console.log('鍦ㄥ師鑺傜偣涓婃柟鐨勮繛鎺ョ嚎鏁伴噺:' + TopSum, '鍦ㄥ師鑺傜偣涓嬫柟鐨勮繛鎺ョ嚎鏁伴噺:' + BottomSum)
+ if (TopSum > BottomSum) {
+ nodeObj.position(node.position().x - 240, node.position().y + (120 + (120 * BottomSum)))
+ } else {
+ nodeObj.position(node.position().x - 240, node.position().y - (120 + (120 * TopSum)));
+ }
+ }
+ this.graph.addEdge({
+ source: {cell: nodeObj, port: 'right1'},
+ target: {cell: node, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ if (this.nodeAdded) {
+ console.log(this.connectNode, 'connectNode')
+ this.graph.addEdge({
+ source: {cell: this.connectNode, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ }
+ } else {
+ // 閬嶅巻鎵�鏈夎繛鎺ョ嚎骞跺垹闄や笌缁欏畾鑺傜偣瀵硅薄鐩稿叧鐨勮繛鎺ョ嚎
+ console.log(edges, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
+ if(edges.length === 0){
+ this.graph.addEdge({
+ source: {cell: node, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ return nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
+ }else {
+ for (const edge of edges) {
+ console.log(edge, '鎵�鏈夋湁鍏宠仈鐨勮繛鎺ョ嚎 edge')
+ if (edge.source.cell === node.id) { // 濡傛灉杩炴帴绾跨殑璧峰鑺傜偣绛変簬褰撳墠鐢诲竷鐩爣鑺傜偣鐨処D
+ const sourceNode = this.graph.getCellById(edge.source.cell); // 鑾峰彇杩炴帴绾跨殑婧愯妭鐐瑰璞�
+ const targetNode = this.graph.getCellById(edge.target.cell) // 鑾峰彇杩炴帴绾跨殑鐩爣鑺傜偣瀵硅薄
+ console.log(sourceNode, targetNode, 'targetNode 鐩爣鑺傜偣瀵硅薄')
+ // edge.remove(); // 浠庡浘涓垹闄よ杩炴帴绾�
+ nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
+ // edge.source = {cell: node, port: 'right1'}
+ edge.target = {cell: nodeObj, port: 'left1'}
+ // targetNode.position(nodeObj.position().x +nodeObj.getBBox().width+50, node.position().y);
+ // this.graph.addEdge({
+ // source: {cell: node, port: 'right1'},
+ // target: {cell: nodeObj, port: 'left1'},
+ // router: {name: 'manhattan'},
+ // connector: {name: 'rounded'}
+ // })
+ this.graph.addEdge({
+ source: {cell: nodeObj, port: 'right1'},
+ target: {cell: targetNode, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ }else {
+ this.graph.addEdge({
+ source: {cell: node, port: 'right1'},
+ target: {cell: nodeObj, port: 'left1'},
+ router: {name: 'manhattan'},
+ connector: {name: 'rounded'}
+ })
+ nodeObj.position(node.position().x +node.getBBox().width+50, node.position().y);
+ }
+ }
+ }
+
+
+ }
+ },
+ },
+
+}
</script>
<style>
- #containerImg {
- display: flex;
- border: 1px solid #dfe3e8;
- height: 400px;
- width: 100% !important;
- }
-
- .x6-graph-scroller.x6-graph-scroller-pannable {
- width: 100% !important;
- }
-
- #stencilImg {
- width: 100%;
- height: 100%;
- position: relative;
- border-right: 1px solid #dfe3e8;
- }
-
- .x6-widget-stencil {
- position: relative;
- height: 100%;
- }
-#stencilImg .x6-graph-svg-viewport{
- height: 100%;
+#containerImg {
+ display: flex;
+ border: 1px solid #dfe3e8;
+ height: 400px;
+ width: 100% !important;
}
- .x6-widget-stencil-content {
- position: relative;
+
+.x6-graph-scroller.x6-graph-scroller-pannable {
+ width: 100% !important;
+}
+
+#stencilImg {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ border-right: 1px solid #dfe3e8;
+}
+
+.x6-widget-stencil {
+ position: relative;
+ height: 100%;
+}
+
+#stencilImg .x6-graph-svg-viewport {
+ height: 100%;
+}
+
+.x6-widget-stencil-content {
+ position: relative;
height: calc(100% - 32px);
}
-#stencilImg .x6-widget-stencil.collapsable > .x6-widget-stencil-content{
- top:0
- }
+
+#stencilImg .x6-widget-stencil.collapsable > .x6-widget-stencil-content {
+ top: 0
+}
</style>
--
Gitblit v1.9.1