wente
2024-04-26 a87b49ca0801a52f58a72085f75143ab668ba6ca
流程图组合
3个文件已修改
5个文件已添加
7个文件已删除
511 ■■■■ 已修改文件
web/public/index.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/connect.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/connect.svg 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/end.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/end.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/start.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/start.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/switch.svg 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/switchRight.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/vote.svg 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/voteRight.png 补丁 | 查看 | 原始文档 | blame | 历史
web/public/modelImg/xianhao.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/ConfigEdge/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/taskReliability/RBD-edit-img.vue 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
web/public/modelImg/connect.png
Binary files differ
web/public/modelImg/connect.svg
New file
@@ -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>
web/public/modelImg/end.png
Binary files differ
web/public/modelImg/end.svg
New file
@@ -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>
web/public/modelImg/logo.png
Binary files differ
web/public/modelImg/start.png
Binary files differ
web/public/modelImg/start.svg
New file
@@ -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>
web/public/modelImg/switch.svg
New file
@@ -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>
web/public/modelImg/switchRight.png
Binary files differ
web/public/modelImg/vote.svg
New file
@@ -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>
web/public/modelImg/voteRight.png
Binary files differ
web/public/modelImg/xianhao.png
Binary files differ
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) {
web/src/views/modules/taskReliability/RBD-edit-img.vue
@@ -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"
@@ -129,6 +87,8 @@
    },
    data() {
      return {
      nodeAdded: false,
      connectNode: {},
        modelId: '',
        modelName: '',
        modelType: '',
@@ -140,15 +100,13 @@
            imgPath: 'connect',
            imgName: 'connect',
            nodeType: 'connect',
            imgWidth: 20,
            imgHeight: 20,
          imgWidth: 30,
          imgHeight: 30,
            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',
          imgPath: 'switch',
            imgName: 'switch',
            nodeType: 'switch',
            imgWidth: 60,
@@ -156,10 +114,22 @@
            imgId: '5',
            data: {}
          },
          {imgPath: 'voteRight', imgName: 'vote', nodeType: 'vote', imgWidth: 60, imgHeight: 60, imgId: '6', data: {}},
        {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,
@@ -231,7 +201,8 @@
          stroke: '#5F95FF',
          strokeWidth: 1,
          connector: 'normal',
        connector: 'rounded',
        router: 'manhattan',
          label: '',
          nodeStroke: '#5F95FF',
          nodeStrokeWidth: 1,
@@ -254,7 +225,7 @@
        ports: {
          groups: {
            top: {
              position: 'top',
            position: {name: 'top'},
              attrs: {
                circle: {
                  r: 4,
@@ -269,7 +240,7 @@
              },
            },
            right: {
              position: 'right',
            position: {name: 'right'},
              attrs: {
                circle: {
                  r: 4,
@@ -284,7 +255,7 @@
              },
            },
            bottom: {
              position: 'bottom',
            position: {name: 'bottom'},
              attrs: {
                circle: {
                  r: 4,
@@ -299,7 +270,7 @@
              },
            },
            left: {
              position: 'left',
            position: {name: 'left'},
              attrs: {
                circle: {
                  r: 4,
@@ -316,15 +287,19 @@
          },
          items: [
            {
            id: 'top1',
              group: 'top',
            },
            {
            id: 'right1',
              group: 'right',
            },
            {
            id: 'bottom1',
              group: 'bottom',
            },
            {
            id: 'left1',
              group: 'left',
            },
          ],
@@ -413,26 +388,23 @@
          scroller: {
            enabled: true,
            pageVisible: true,
          autoResize: true,
            pageBreak: true,
            pannable: true,
            minVisibleWidth: 200,
            minVisibleHeight: 200,
            modifiers: 'shift',
          },
          // panning: {
          //   enabled: true,
          //   modifiers: 'shift',
          // },
          mousewheel: {
            enabled: true,
            zoomAtMousePosition: true,
            modifiers: 'ctrl',
            minScale: 0.1,
            maxScale: 10,
          minScale: 0.5,
          maxScale: 3,
          },
          connecting: {
            router: {
              name: 'normal',
            name: 'manhattan',
              // args: {
              //   padding: 1,
              // },
@@ -440,10 +412,10 @@
            connector: {
              name: 'rounded',
              args: {
                radius: 8,
              radius: 5,
              },
            },
            // anchor: 'center',
          anchor: 'center',
            connectionPoint: 'anchor',
            allowBlank: false,
            snap: {
@@ -500,10 +472,7 @@
              },
            },
          },
          resizing: {
            enabled: true,
            restricted: true
          },
        resizing: true,
          rotating: true,
          selecting: {
            enabled: true,
@@ -518,18 +487,21 @@
        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
        getDropNode: (node) => {
          if (node.getData().type && node.getData().type === 'imageNodes2') {
            return node.clone({keepId: true})
          } else {
            return node.clone()
            }
            if (node.getData().imgHeight) {
              height = node.getData().imgHeight
            }
            return node.clone({ keepId: true }).size(width, height)
          },
            validateNode(node){
              console.log(node.id)
        validateNode: (node) => {
          const existingNodes = this.graph.getNodes(); // 获取画布上所有节点
          for (const existingNode of existingNodes) {
            if (existingNode.id === node.id) {
              this.$message({message: '该设备节点已在画布上,无法再次绘制', type: 'warning'})
              return false; // 取消添加节点操作
            }
          }
            },
          title: '',
          target: this.graph,
@@ -540,6 +512,11 @@
            {
              title: '运算符号',
              name: 'group1',
          },
          {
            title: '组合图',
            name: 'combiningImages',
            graphHeight: 100,
            },
            {
              title: '设备节点',
@@ -559,16 +536,53 @@
        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:''
            },
            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},
          }),
      )
      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,
@@ -599,6 +613,7 @@
            height: 60,
            id: item.dataId, // 手动设置节点的 ID
            data: {
              type: 'imageNodes2',
              isRepair: item.isRepair,
              dataId: item.dataId,
              nodeType: item.nodeType,
@@ -655,7 +670,7 @@
        )
        stencil.load(imageNodes, 'group1')
        stencil.load(imageNodes2, 'group2')
      stencil.load(combiningImages, 'combiningImages')
        this.graph.bindKey(['meta+c', 'ctrl+c'], () => {
          const cells = this.graph.getSelectedCells()
@@ -745,7 +760,28 @@
          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);
          }
        }
        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);
          })
        }
      });
        this.graph.on('cell:click', ({cell}) => {
          // this.type.value = cell.isNode() ? "node" : "edge"
          this.type = cell.isNode() ? 'node' : 'edge'
@@ -773,15 +809,6 @@
        })
        // 单击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('node:delete', ({view, e}) => {
@@ -884,36 +911,6 @@
          })
        })
      },
      // 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();
      },
@@ -942,17 +939,6 @@
          }
        })
      },
      // 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
@@ -1059,6 +1045,144 @@
          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是画布原有的节点。nodeObj是当前拖拽的节点
      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; // 获取连接线的起始点y坐标
            const targetPointY = edge.getTargetPoint().y; // 获取连接线的结束点y坐标
            console.log('原节点Y坐标' + node.position().y, '连接线起始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) { // 如果连接线的起始节点等于当前画布目标节点的ID
              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);
            }
          }
        }
      }
    },
    },
  }
@@ -1087,13 +1211,16 @@
    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
  }