ecinc-cloud-wappaio 9.7.11 → 9.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -116367,7 +116367,7 @@ var UdmGenerator_UserModuleForm = UserModuleForm;
116367
116367
 
116368
116368
  /***/ }),
116369
116369
 
116370
- /***/ 26173:
116370
+ /***/ 34660:
116371
116371
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
116372
116372
 
116373
116373
  "use strict";
@@ -117034,8 +117034,8 @@ var SideBar_component = (0,componentNormalizer/* default */.A)(
117034
117034
  )
117035
117035
 
117036
117036
  /* harmony default export */ var SideBar = (SideBar_component.exports);
117037
- ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=template&id=46bbfc1a&scoped=true
117038
- var Centervue_type_template_id_46bbfc1a_scoped_true_render = function render() {
117037
+ ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=template&id=0ebbd5f8&scoped=true
117038
+ var Centervue_type_template_id_0ebbd5f8_scoped_true_render = function render() {
117039
117039
  var _vm = this,
117040
117040
  _c = _vm._self._c;
117041
117041
  return _c('el-scrollbar', {
@@ -117154,7 +117154,7 @@ var Centervue_type_template_id_46bbfc1a_scoped_true_render = function render() {
117154
117154
  }
117155
117155
  })], 1)], 1)]);
117156
117156
  };
117157
- var Centervue_type_template_id_46bbfc1a_scoped_true_staticRenderFns = [];
117157
+ var Centervue_type_template_id_0ebbd5f8_scoped_true_staticRenderFns = [];
117158
117158
 
117159
117159
  // EXTERNAL MODULE: ./node_modules/jquery/dist/jquery.js
117160
117160
  var jquery = __webpack_require__(74692);
@@ -119280,8 +119280,16 @@ var _require22 = __webpack_require__(53978),
119280
119280
  wflow.process.description = desc;
119281
119281
  wflow.process.chartData.descDiv = {};
119282
119282
  wflow.process.chartData.descDiv.height = descDiv.clientHeight;
119283
- wflow.process.chartData.descDiv.left = descDiv.offsetLeft;
119284
- wflow.process.chartData.descDiv.top = descDiv.offsetTop;
119283
+ if (descDiv.style.display !== 'none') {
119284
+ wflow.process.chartData.descDiv.left = descDiv.offsetLeft;
119285
+ wflow.process.chartData.descDiv.top = descDiv.offsetTop;
119286
+ } else {
119287
+ // 元素隐藏时offsetLeft/offsetTop为0,从关闭时存储的data属性中读取位置
119288
+ var savedLeft = descDiv.dataset.left;
119289
+ var savedTop = descDiv.dataset.top;
119290
+ if (savedLeft !== undefined) wflow.process.chartData.descDiv.left = parseInt(savedLeft);
119291
+ if (savedTop !== undefined) wflow.process.chartData.descDiv.top = parseInt(savedTop);
119292
+ }
119285
119293
  } else {
119286
119294
  wflow.process.description = '';
119287
119295
  delete wflow.process.chartData.descDiv;
@@ -119784,13 +119792,13 @@ var _require22 = __webpack_require__(53978),
119784
119792
  });
119785
119793
  ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=script&lang=js
119786
119794
  /* harmony default export */ var components_Centervue_type_script_lang_js = (Centervue_type_script_lang_js);
119787
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=0&id=46bbfc1a&prod&scoped=true&lang=scss
119788
- var Centervue_type_style_index_0_id_46bbfc1a_prod_scoped_true_lang_scss = __webpack_require__(28652);
119789
- ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=0&id=46bbfc1a&prod&scoped=true&lang=scss
119795
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=0&id=0ebbd5f8&prod&scoped=true&lang=scss
119796
+ var Centervue_type_style_index_0_id_0ebbd5f8_prod_scoped_true_lang_scss = __webpack_require__(73537);
119797
+ ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=0&id=0ebbd5f8&prod&scoped=true&lang=scss
119790
119798
 
119791
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=1&id=46bbfc1a&prod&lang=scss
119792
- var Centervue_type_style_index_1_id_46bbfc1a_prod_lang_scss = __webpack_require__(28996);
119793
- ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=1&id=46bbfc1a&prod&lang=scss
119799
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=1&id=0ebbd5f8&prod&lang=scss
119800
+ var Centervue_type_style_index_1_id_0ebbd5f8_prod_lang_scss = __webpack_require__(65089);
119801
+ ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue?vue&type=style&index=1&id=0ebbd5f8&prod&lang=scss
119794
119802
 
119795
119803
  ;// CONCATENATED MODULE: ./packages/ecwplus/WorkflowDesigner/src/components/Center/index.vue
119796
119804
 
@@ -119804,11 +119812,11 @@ var Centervue_type_style_index_1_id_46bbfc1a_prod_lang_scss = __webpack_require_
119804
119812
 
119805
119813
  var Center_component = (0,componentNormalizer/* default */.A)(
119806
119814
  components_Centervue_type_script_lang_js,
119807
- Centervue_type_template_id_46bbfc1a_scoped_true_render,
119808
- Centervue_type_template_id_46bbfc1a_scoped_true_staticRenderFns,
119815
+ Centervue_type_template_id_0ebbd5f8_scoped_true_render,
119816
+ Centervue_type_template_id_0ebbd5f8_scoped_true_staticRenderFns,
119809
119817
  false,
119810
119818
  null,
119811
- "46bbfc1a",
119819
+ "0ebbd5f8",
119812
119820
  null
119813
119821
 
119814
119822
  )
@@ -138420,24 +138428,36 @@ function getPathXyData(connection, thisConnect) {
138420
138428
  // 从svg path中获取同轴异向的两端stub,4种情况全处理
138421
138429
  if (firstEndpoints[3] === 1 && secondEndpoints[3] === -1) {
138422
138430
  // 下出上入
138423
- var lineData = paths[0].split(' ');
138424
- pathMaxY = parseInt(lineData[5]) - parseInt(lineData[2]);
138425
- pathMinY = -pathMaxY; // 同轴异向,两端 stub 相等
138431
+ if (!thisConnect || !thisConnect.pathMaxY) {
138432
+ var lineData = paths[0].split(' ');
138433
+ pathMaxY = parseInt(lineData[5]) - parseInt(lineData[2]);
138434
+ pathMinY = -pathMaxY; // 同轴异向,两端 stub 相等
138435
+ }
138426
138436
  } else if (firstEndpoints[3] === -1 && secondEndpoints[3] === 1) {
138427
138437
  // 上出下入
138428
- var _lineData = paths[0].split(' ');
138429
- pathMinY = parseInt(_lineData[2]) - parseInt(_lineData[5]);
138430
- pathMaxY = -pathMinY; // 同轴异向,两端 stub 相等
138438
+ if (!thisConnect || !thisConnect.pathMinY) {
138439
+ var _lineData = paths[0].split(' ');
138440
+ pathMinY = parseInt(_lineData[2]) - parseInt(_lineData[5]);
138441
+ pathMaxY = -pathMinY; // 同轴异向,两端 stub 相等
138442
+ }
138431
138443
  } else if (firstEndpoints[2] === 1 && secondEndpoints[2] === -1) {
138432
138444
  // 右出左入
138433
- var _lineData2 = paths[0].split(' ');
138434
- pathMaxX = parseInt(_lineData2[4]) - parseInt(_lineData2[1]);
138435
- pathMinX = -pathMaxX; // 同轴异向,两端 stub 相等
138445
+ if (!thisConnect || !thisConnect.pathMaxX) {
138446
+ var _lineData2 = paths[0].split(' ');
138447
+ var arcIdx = _lineData2.indexOf('A');
138448
+ var lastPtX = arcIdx > 0 ? parseInt(_lineData2[arcIdx - 2]) : parseInt(_lineData2[4]);
138449
+ pathMaxX = Math.abs(lastPtX - parseInt(_lineData2[1]));
138450
+ pathMinX = -pathMaxX;
138451
+ }
138436
138452
  } else if (firstEndpoints[2] === -1 && secondEndpoints[2] === 1) {
138437
138453
  // 左出右入
138438
- var _lineData3 = paths[0].split(' ');
138439
- pathMinX = parseInt(_lineData3[1]) - parseInt(_lineData3[4]);
138440
- pathMaxX = -pathMinX; // 同轴异向,两端 stub 相等
138454
+ if (!thisConnect || !thisConnect.pathMinX) {
138455
+ var _lineData3 = paths[0].split(' ');
138456
+ var arcIdx = _lineData3.indexOf('A');
138457
+ var lastPtX = arcIdx > 0 ? parseInt(_lineData3[arcIdx - 2]) : parseInt(_lineData3[4]);
138458
+ pathMinX = -Math.abs(lastPtX - parseInt(_lineData3[1]));
138459
+ pathMaxX = -pathMinX;
138460
+ }
138441
138461
  }
138442
138462
  } else if (linesCount >= 4) {
138443
138463
  if (firstEndpoints[2] === 1) {
@@ -138503,6 +138523,29 @@ function getPathXyData(connection, thisConnect) {
138503
138523
  }
138504
138524
  }
138505
138525
  }
138526
+ // 自环线已有thisConnect存储值时优先使用,避免SVG提取的+5偏移在session间累积
138527
+ var isSelfLoop = thisConnect && thisConnect.PageSourceId === thisConnect.PageTargetId;
138528
+ if (isSelfLoop) {
138529
+ // 同轴自环配对的path值相等,cross-axis则各自独立
138530
+ var crossAxis = firstEndpoints[2] !== 0 && secondEndpoints[3] !== 0 || firstEndpoints[3] !== 0 && secondEndpoints[2] !== 0;
138531
+ if (!crossAxis) {
138532
+ if (thisConnect.pathMinX || thisConnect.pathMaxX) {
138533
+ var storedX = thisConnect.pathMinX || thisConnect.pathMaxX;
138534
+ pathMinX = storedX;
138535
+ pathMaxX = storedX;
138536
+ }
138537
+ if (thisConnect.pathMinY || thisConnect.pathMaxY) {
138538
+ var storedY = thisConnect.pathMinY || thisConnect.pathMaxY;
138539
+ pathMinY = storedY;
138540
+ pathMaxY = storedY;
138541
+ }
138542
+ } else {
138543
+ if (thisConnect.pathMinX) pathMinX = thisConnect.pathMinX;
138544
+ if (thisConnect.pathMaxX) pathMaxX = thisConnect.pathMaxX;
138545
+ if (thisConnect.pathMinY) pathMinY = thisConnect.pathMinY;
138546
+ if (thisConnect.pathMaxY) pathMaxY = thisConnect.pathMaxY;
138547
+ }
138548
+ }
138506
138549
  return {
138507
138550
  linesCount: linesCount,
138508
138551
  pathMinX: pathMinX,
@@ -138513,6 +138556,38 @@ function getPathXyData(connection, thisConnect) {
138513
138556
  secondEndpoints: secondEndpoints
138514
138557
  };
138515
138558
  }
138559
+
138560
+ // ========== 三段线拖拽统一处理器 ==========
138561
+ // 处理同轴同向/同轴异向/自环三种子分支的stub和midpoint计算
138562
+ function handle3SegDrag(isNeg, absDist, minStub, isSameNode, isSameSide, totalDist, thisConnect, perpMin, perpMax) {
138563
+ var stub,
138564
+ dragMidpoint = 0.5,
138565
+ isOpposite = false,
138566
+ distance = isNeg ? -absDist : absDist;
138567
+ if (isSameNode) {
138568
+ var os = Math.abs(thisConnect.pathMinY) || Math.abs(thisConnect.pathMaxY);
138569
+ if (!os) os = Math.max(Math.max(Math.abs(perpMin), Math.abs(perpMax)) - 5, minStub);
138570
+ stub = [absDist, Math.max(os, minStub)];
138571
+ } else if (!isSameSide) {
138572
+ // 同轴异向:alwaysRespectStubs=false + 小stub + 动态midpoint控制折线位置
138573
+ var actMin = 30;
138574
+ var td = totalDist || 21;
138575
+ absDist = Math.min(Math.max(absDist, actMin), td - actMin);
138576
+ distance = isNeg ? -absDist : absDist;
138577
+ isOpposite = true;
138578
+ stub = [10, 10];
138579
+ var effDist = td - 20;
138580
+ dragMidpoint = effDist > 0 ? (absDist - 10) / effDist : 0.5;
138581
+ } else {
138582
+ stub = [absDist, minStub];
138583
+ }
138584
+ return {
138585
+ stub: stub,
138586
+ dragMidpoint: dragMidpoint,
138587
+ isOpposite: isOpposite,
138588
+ distance: distance
138589
+ };
138590
+ }
138516
138591
  function dragLine(_this, connection, thisConnect) {
138517
138592
  var distance = 0;
138518
138593
 
@@ -138520,12 +138595,19 @@ function dragLine(_this, connection, thisConnect) {
138520
138595
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).bind('mousedown', function (ev) {
138521
138596
  var paths = connection.connector.getPathData().split(',');
138522
138597
  var lineCount = paths.length;
138523
- if (lineCount < 2) {
138598
+ // 同轴异向检测(提前到lineCount检查之前,以便重定向lineCount=1的路径)
138599
+ var firstEndpoints = connection.endpoints[0].anchor.orientation;
138600
+ var secondEndpoints = connection.endpoints[1].anchor.orientation;
138601
+ var isSameNode = thisConnect.PageSourceId === thisConnect.PageTargetId;
138602
+ var isSameAxisDiffDir = !isSameNode && (firstEndpoints[0] !== 0 && secondEndpoints[0] !== 0 && firstEndpoints[0] !== secondEndpoints[0] || firstEndpoints[1] !== 0 && secondEndpoints[1] !== 0 && firstEndpoints[1] !== secondEndpoints[1]);
138603
+ if (lineCount < 2 && !isSameAxisDiffDir) {
138524
138604
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).unbind('mousedown');
138525
138605
  return;
138526
138606
  }
138527
138607
  _this.dragLineObj.disX = ev.pageX;
138528
138608
  _this.dragLineObj.disY = ev.pageY;
138609
+ _this.dragLineObj.initCW = undefined;
138610
+ _this.dragLineObj.initCH = undefined;
138529
138611
  var xyData = getPathXyData(connection, thisConnect);
138530
138612
  var initialMaxX = xyData.pathMaxX; // 获取路径的初始stub值
138531
138613
  var initialMaxY = xyData.pathMaxY; // 获取路径的初始stub值
@@ -138535,9 +138617,10 @@ function dragLine(_this, connection, thisConnect) {
138535
138617
  var canvasMarginLeft = 210; // 绘图区左边距
138536
138618
  var canvasMarginTop = 112; // 绘图区右边距
138537
138619
 
138538
- var firstEndpoints = connection.endpoints[0].anchor.orientation;
138539
- var secondEndpoints = connection.endpoints[1].anchor.orientation;
138540
- var isSameNode = thisConnect.PageSourceId === thisConnect.PageTargetId;
138620
+ // 同轴异向3段线强制使用3段拖拽逻辑(不论逗号分隔后的段数)
138621
+ if (isSameAxisDiffDir) {
138622
+ lineCount = 3;
138623
+ }
138541
138624
 
138542
138625
  // 检测是否可拖拉,仅位于路径canvas四边的路径可拖拉,射出、射入路径不可拖拉
138543
138626
  if (firstEndpoints[0] !== 0) {
@@ -138598,98 +138681,148 @@ function dragLine(_this, connection, thisConnect) {
138598
138681
  var x = ev.pageX;
138599
138682
  var y = ev.pageY;
138600
138683
  var stub = [0, 0];
138601
- if (lineCount <= 3) {
138684
+ var _dragMidpoint = 0.5;
138685
+ var handledIn4, hSameSide, vSameSide; // 显式声明,避免var提升的隐式行为
138686
+
138687
+ // 跨轴自环线独立拖拽处理器(完全绕过lineCount逻辑)
138688
+ var isCrossAxisSL = isSameNode && (firstEndpoints[0] !== 0 && secondEndpoints[1] !== 0 || firstEndpoints[1] !== 0 && secondEndpoints[0] !== 0);
138689
+ if (isCrossAxisSL) {
138690
+ var incDx = x - (_this.dragLineObj.prevX || _this.dragLineObj.disX);
138691
+ var incDy = y - (_this.dragLineObj.prevY || _this.dragLineObj.disY);
138692
+ _this.dragLineObj.prevX = x;
138693
+ _this.dragLineObj.prevY = y;
138694
+ var hDirSL = firstEndpoints[0] || secondEndpoints[0];
138695
+ var vDirSL = firstEndpoints[1] || secondEndpoints[1];
138696
+ var minSL = 30;
138697
+ var curHSL = Math.abs(thisConnect.pathMinX) || Math.abs(thisConnect.pathMaxX);
138698
+ var curVSL = Math.abs(thisConnect.pathMinY) || Math.abs(thisConnect.pathMaxY);
138699
+ if (!curHSL) {
138700
+ if (hDirSL === -1) curHSL = Math.max(Math.abs(initialMinX) - 5, minSL);else if (hDirSL === 1) curHSL = Math.max(Math.abs(initialMaxX) - 5, minSL);else curHSL = minSL;
138701
+ }
138702
+ if (!curVSL) {
138703
+ if (vDirSL === -1) curVSL = Math.max(Math.abs(initialMinY) - 5, minSL);else if (vDirSL === 1) curVSL = Math.max(Math.abs(initialMaxY) - 5, minSL);else curVSL = minSL;
138704
+ }
138705
+ var newHSL = curHSL,
138706
+ newVSL = curVSL;
138707
+ var hOutSL = hDirSL === 1 ? incDx > 0 : incDx < 0;
138708
+ var vOutSL = vDirSL === 1 ? incDy > 0 : incDy < 0;
138709
+ if (Math.abs(incDx) >= Math.abs(incDy)) {
138710
+ if (hOutSL) newHSL = curHSL + Math.abs(incDx);else newHSL = Math.max(curHSL - Math.abs(incDx), minSL);
138711
+ } else {
138712
+ if (vOutSL) newVSL = curVSL + Math.abs(incDy);else newVSL = Math.max(curVSL - Math.abs(incDy), minSL);
138713
+ }
138714
+ var srcVSL = firstEndpoints[0] === 0;
138715
+ stub = srcVSL ? [Math.max(newVSL, minSL), Math.max(newHSL, minSL)] : [Math.max(newHSL, minSL), Math.max(newVSL, minSL)];
138716
+ if (hDirSL === -1) {
138717
+ thisConnect.pathMinX = -Math.max(newHSL, minSL);
138718
+ thisConnect.pathMaxX = -Math.max(newHSL, minSL);
138719
+ } else if (hDirSL === 1) {
138720
+ thisConnect.pathMinX = Math.max(newHSL, minSL);
138721
+ thisConnect.pathMaxX = Math.max(newHSL, minSL);
138722
+ }
138723
+ if (vDirSL === -1) {
138724
+ thisConnect.pathMinY = -Math.max(newVSL, minSL);
138725
+ thisConnect.pathMaxY = -Math.max(newVSL, minSL);
138726
+ } else if (vDirSL === 1) {
138727
+ thisConnect.pathMinY = Math.max(newVSL, minSL);
138728
+ thisConnect.pathMaxY = Math.max(newVSL, minSL);
138729
+ }
138730
+ } else if (lineCount <= 3) {
138602
138731
  var isSameSide = firstEndpoints[0] !== 0 && firstEndpoints[0] === secondEndpoints[0] || firstEndpoints[1] !== 0 && firstEndpoints[1] === secondEndpoints[1];
138603
138732
  var minStub = isSameSide || isSameNode ? 50 : 10;
138733
+ // 同轴异向时,从节点CSS位置计算真实锚点间距(避免存储的等值stub导致totalDist锁死)
138734
+ if (isSameAxisDiffDir) {
138735
+ var srcEl = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + thisConnect.PageSourceId);
138736
+ var tgtEl = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + thisConnect.PageTargetId);
138737
+ if (firstEndpoints[0] !== 0) {
138738
+ // 水平方向:totalDist = 目标锚点X - 源锚点X
138739
+ var totalDistH = Math.abs(parseInt(tgtEl.css('left')) + tgtEl.outerWidth() * parseFloat(connection.endpoints[1].anchor.x) - (parseInt(srcEl.css('left')) + srcEl.outerWidth() * parseFloat(connection.endpoints[0].anchor.x)));
138740
+ }
138741
+ if (firstEndpoints[1] !== 0) {
138742
+ // 垂直方向:totalDist = 目标锚点Y - 源锚点Y
138743
+ var totalDistV = Math.abs(parseInt(tgtEl.css('top')) + tgtEl.outerHeight() * parseFloat(connection.endpoints[1].anchor.y) - (parseInt(srcEl.css('top')) + srcEl.outerHeight() * parseFloat(connection.endpoints[0].anchor.y)));
138744
+ }
138745
+ }
138604
138746
  if (firstEndpoints[0] === -1) {
138605
138747
  // 水平射线,左出
138606
138748
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138607
- if (distance > -minStub) {
138608
- distance = -minStub;
138609
- }
138749
+ if (distance > -minStub) distance = -minStub;
138610
138750
  thisConnect.pathMinX = distance;
138611
- if (isSameNode) {
138612
- stub = [-distance, 50];
138613
- } else if (!isSameSide) {
138614
- // 同轴异向:两端stub同步更新
138751
+ var r = handle3SegDrag(true, -distance, minStub, isSameNode, isSameSide, totalDistH, thisConnect, initialMinY, initialMaxY);
138752
+ stub = r.stub;
138753
+ _dragMidpoint = r.dragMidpoint;
138754
+ if (r.isOpposite) {
138755
+ distance = r.distance;
138756
+ thisConnect.pathMinX = distance;
138615
138757
  thisConnect.pathMaxX = -distance;
138616
- stub = [-distance, -distance];
138617
- } else {
138618
- stub = [-distance, minStub];
138619
138758
  }
138620
138759
  } else if (firstEndpoints[0] === 1) {
138621
138760
  // 水平射线,右出
138622
138761
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138623
- if (distance < minStub) {
138624
- distance = minStub;
138625
- }
138762
+ if (distance < minStub) distance = minStub;
138626
138763
  thisConnect.pathMaxX = distance;
138627
- if (isSameNode) {
138628
- stub = [distance, 50];
138629
- } else if (!isSameSide) {
138630
- // 同轴异向:两端stub同步更新
138764
+ var r = handle3SegDrag(false, distance, minStub, isSameNode, isSameSide, totalDistH, thisConnect, initialMinY, initialMaxY);
138765
+ stub = r.stub;
138766
+ _dragMidpoint = r.dragMidpoint;
138767
+ if (r.isOpposite) {
138768
+ distance = r.distance;
138769
+ thisConnect.pathMaxX = distance;
138631
138770
  thisConnect.pathMinX = -distance;
138632
- stub = [distance, distance];
138633
- } else {
138634
- stub = [distance, minStub];
138635
138771
  }
138636
138772
  } else if (firstEndpoints[1] === -1) {
138637
138773
  // 垂直射线,上出
138638
138774
  distance = -(Math.abs(initialMinY) - (y - _this.dragLineObj.disY));
138639
- if (distance > -minStub) {
138640
- distance = -minStub;
138641
- }
138775
+ if (distance > -minStub) distance = -minStub;
138642
138776
  thisConnect.pathMinY = distance;
138643
- if (isSameNode) {
138644
- stub = [-distance, 50];
138645
- } else if (!isSameSide) {
138646
- // 同轴异向:两端stub同步更新
138777
+ var r = handle3SegDrag(true, -distance, minStub, isSameNode, isSameSide, totalDistV, thisConnect, initialMinX, initialMaxX);
138778
+ stub = r.stub;
138779
+ _dragMidpoint = r.dragMidpoint;
138780
+ if (r.isOpposite) {
138781
+ distance = r.distance;
138782
+ thisConnect.pathMinY = distance;
138647
138783
  thisConnect.pathMaxY = -distance;
138648
- stub = [-distance, -distance];
138649
- } else {
138650
- stub = [-distance, minStub];
138651
138784
  }
138652
138785
  } else if (firstEndpoints[1] === 1) {
138653
138786
  // 垂直射线,下出
138654
138787
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY);
138655
- if (distance < minStub) {
138656
- distance = minStub;
138657
- }
138788
+ if (distance < minStub) distance = minStub;
138658
138789
  thisConnect.pathMaxY = distance;
138659
- if (isSameNode) {
138660
- stub = [distance, 50];
138661
- } else if (!isSameSide) {
138662
- // 同轴异向:两端stub同步更新
138790
+ var r = handle3SegDrag(false, distance, minStub, isSameNode, isSameSide, totalDistV, thisConnect, initialMinX, initialMaxX);
138791
+ stub = r.stub;
138792
+ _dragMidpoint = r.dragMidpoint;
138793
+ if (r.isOpposite) {
138794
+ distance = r.distance;
138795
+ thisConnect.pathMaxY = distance;
138663
138796
  thisConnect.pathMinY = -distance;
138664
- stub = [distance, distance];
138665
- } else {
138666
- stub = [distance, minStub];
138667
138797
  }
138668
138798
  }
138669
138799
  } else if (lineCount === 4) {
138800
+ var minStub4 = isSameNode ? 30 : 10;
138801
+ var handledIn4 = false;
138670
138802
  if (firstEndpoints[0] === -1) {
138671
138803
  // 左出
138672
138804
  if (Math.abs(canvasMarginTop + canvasTop - _this.dragLineObj.disY) <= 10) {
138673
138805
  // 顶部射入,靠近终点上下拖拉
138674
138806
  distance = -(Math.abs(initialMinY) - (y - _this.dragLineObj.disY - scrollTop));
138675
- if (distance > -10) {
138676
- distance = -10;
138807
+ if (distance > -minStub4) {
138808
+ distance = -minStub4;
138677
138809
  }
138678
138810
  thisConnect.pathMinY = distance;
138811
+ handledIn4 = true;
138679
138812
  stub = [Math.abs(initialMinX), -distance];
138680
138813
  } else if (Math.abs(canvasMarginTop + canvasTop + canvasHeight - _this.dragLineObj.disY - scrollTop) <= 10) {
138681
138814
  // 底部射入,靠近终点上下拖拉
138682
138815
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY - scrollTop);
138683
- if (distance < 10) {
138684
- distance = 10;
138816
+ if (distance < minStub4) {
138817
+ distance = minStub4;
138685
138818
  }
138686
138819
  thisConnect.pathMaxY = distance;
138687
138820
  stub = [Math.abs(initialMinX), distance];
138688
138821
  } else if (Math.abs(canvasMarginLeft + canvasLeft - _this.dragLineObj.disX) <= 10) {
138689
138822
  // 顶部射入或底部射入,靠近起点左侧左右拖拉
138690
138823
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138691
- if (distance > -10) {
138692
- distance = -10;
138824
+ if (distance > -minStub4) {
138825
+ distance = -minStub4;
138693
138826
  }
138694
138827
  thisConnect.pathMinX = distance;
138695
138828
  stub = [-distance, Math.abs(secondEndpoints[1] === -1 ? initialMinY : initialMaxY)];
@@ -138699,26 +138832,29 @@ function dragLine(_this, connection, thisConnect) {
138699
138832
  if (Math.abs(canvasMarginTop + canvasTop - _this.dragLineObj.disY) <= 10) {
138700
138833
  // 顶部射入,靠近终点上下拖拉
138701
138834
  distance = -(Math.abs(initialMinY) - (y - _this.dragLineObj.disY - scrollTop));
138702
- if (distance > -10) {
138703
- distance = -10;
138835
+ if (distance > -minStub4) {
138836
+ distance = -minStub4;
138704
138837
  }
138705
138838
  thisConnect.pathMinY = distance;
138839
+ handledIn4 = true;
138706
138840
  stub = [Math.abs(initialMaxX), -distance];
138707
138841
  } else if (Math.abs(canvasMarginTop + canvasTop + canvasHeight - _this.dragLineObj.disY - scrollTop) <= 10) {
138708
138842
  // 底部射入,靠近终点上下拖拉
138709
138843
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY - scrollTop);
138710
- if (distance < 10) {
138711
- distance = 10;
138844
+ if (distance < minStub4) {
138845
+ distance = minStub4;
138712
138846
  }
138713
138847
  thisConnect.pathMaxY = distance;
138848
+ handledIn4 = true;
138714
138849
  stub = [Math.abs(initialMaxX), distance];
138715
138850
  } else if (Math.abs(canvasMarginLeft + canvasLeft + canvasWidth - _this.dragLineObj.disX) <= 10) {
138716
138851
  // 顶部射入或底部射入,靠近起点右侧左右拖拉
138717
138852
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138718
- if (distance < 10) {
138719
- distance = 10;
138853
+ if (distance < minStub4) {
138854
+ distance = minStub4;
138720
138855
  }
138721
138856
  thisConnect.pathMaxX = distance;
138857
+ handledIn4 = true;
138722
138858
  stub = [distance, Math.abs(secondEndpoints[1] === -1 ? initialMinY : initialMaxY)];
138723
138859
  }
138724
138860
  } else if (firstEndpoints[1] === 1) {
@@ -138726,26 +138862,29 @@ function dragLine(_this, connection, thisConnect) {
138726
138862
  if (Math.abs(canvasMarginTop + canvasTop + canvasHeight - _this.dragLineObj.disY - scrollTop) <= 10) {
138727
138863
  // 左侧射入或右侧射入,靠起点底部上下拖拉
138728
138864
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY);
138729
- if (distance < 10) {
138730
- distance = 10;
138865
+ if (distance < minStub4) {
138866
+ distance = minStub4;
138731
138867
  }
138732
138868
  thisConnect.pathMaxY = distance;
138869
+ handledIn4 = true;
138733
138870
  stub = [distance, Math.abs(secondEndpoints[0] === -1 ? initialMinX : initialMaxX)];
138734
138871
  } else if (Math.abs(canvasMarginLeft + canvasLeft - _this.dragLineObj.disX) <= 10) {
138735
138872
  // 左侧射入,靠近终点左侧拖左右拉
138736
138873
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138737
- if (distance > -10) {
138738
- distance = -10;
138874
+ if (distance > -minStub4) {
138875
+ distance = -minStub4;
138739
138876
  }
138740
138877
  thisConnect.pathMinX = distance;
138878
+ handledIn4 = true;
138741
138879
  stub = [Math.abs(initialMaxY), -distance];
138742
138880
  } else if (Math.abs(canvasMarginLeft + canvasLeft + canvasWidth - _this.dragLineObj.disX) <= 10) {
138743
138881
  // 右侧射入,靠近终点右侧拖左右拉
138744
138882
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138745
- if (distance < 10) {
138746
- distance = 10;
138883
+ if (distance < minStub4) {
138884
+ distance = minStub4;
138747
138885
  }
138748
138886
  thisConnect.pathMaxX = distance;
138887
+ handledIn4 = true;
138749
138888
  stub = [Math.abs(initialMaxY), distance];
138750
138889
  }
138751
138890
  } else if (firstEndpoints[1] === -1) {
@@ -138753,30 +138892,65 @@ function dragLine(_this, connection, thisConnect) {
138753
138892
  if (Math.abs(canvasMarginTop + canvasTop - _this.dragLineObj.disY) <= 10) {
138754
138893
  // 左侧射入或右侧射入,靠起点顶部上下拖拉
138755
138894
  distance = -(Math.abs(initialMinY) - (y - _this.dragLineObj.disY));
138756
- if (distance > -10) {
138757
- distance = -10;
138895
+ if (distance > -minStub4) {
138896
+ distance = -minStub4;
138758
138897
  }
138759
138898
  thisConnect.pathMinY = distance;
138760
138899
  stub = [-distance, Math.abs(secondEndpoints[0] === -1 ? initialMinX : initialMaxX)];
138761
138900
  } else if (Math.abs(canvasMarginLeft + canvasLeft - _this.dragLineObj.disX) <= 10) {
138762
138901
  // 左侧射入,靠近终点左侧拖左右拉
138763
138902
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138764
- if (distance > -10) {
138765
- distance = -10;
138903
+ if (distance > -minStub4) {
138904
+ distance = -minStub4;
138766
138905
  }
138767
138906
  thisConnect.pathMinX = distance;
138907
+ handledIn4 = true;
138768
138908
  stub = [Math.abs(initialMinY), -distance];
138769
138909
  } else if (Math.abs(canvasMarginLeft + canvasLeft + canvasWidth - _this.dragLineObj.disX) <= 10) {
138770
138910
  // 右侧射入,靠近终点右侧拖左右拉
138771
138911
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138772
- if (distance < 10) {
138773
- distance = 10;
138912
+ if (distance < minStub4) {
138913
+ distance = minStub4;
138774
138914
  }
138775
138915
  thisConnect.pathMaxX = distance;
138916
+ handledIn4 = true;
138776
138917
  stub = [Math.abs(initialMinY), distance];
138777
138918
  }
138778
138919
  }
138920
+ // 跨轴自环线边检测不匹配时,直接用鼠标delta计算两轴stub
138921
+ // 注:firstEndpoints为2元素orientation数组[dx,dy],仅索引[0]/[1]有效
138922
+ if (isSameNode && !handledIn4) {
138923
+ var dx2 = x - _this.dragLineObj.disX;
138924
+ var dy2 = y - _this.dragLineObj.disY;
138925
+ var curH = firstEndpoints[0] !== 0 ? Math.max(Math.abs(firstEndpoints[0] === -1 ? initialMinX : initialMaxX) - 5, minStub4) : minStub4;
138926
+ var curV = firstEndpoints[1] !== 0 ? Math.max(Math.abs(firstEndpoints[1] === -1 ? initialMinY : initialMaxY) - 5, minStub4) : minStub4;
138927
+ var newH = curH,
138928
+ newV = curV;
138929
+ if (Math.abs(dx2) >= Math.abs(dy2)) {
138930
+ newH = dx2 < 0 ? curH + Math.abs(dx2) : Math.max(curH - dx2, minStub4);
138931
+ } else {
138932
+ newV = dy2 < 0 ? curV + Math.abs(dy2) : Math.max(curV - dy2, minStub4);
138933
+ }
138934
+ var srcV = firstEndpoints[0] === 0;
138935
+ stub = srcV ? [Math.max(newV, minStub4), Math.max(newH, minStub4)] : [Math.max(newH, minStub4), Math.max(newV, minStub4)];
138936
+ // path存储使用有效索引[0]/[1]判断锚点方向
138937
+ if (firstEndpoints[0] === -1 || secondEndpoints[0] === -1) {
138938
+ thisConnect.pathMinX = -Math.max(newH, minStub4);
138939
+ thisConnect.pathMaxX = -Math.max(newH, minStub4);
138940
+ } else if (firstEndpoints[0] === 1 || secondEndpoints[0] === 1) {
138941
+ thisConnect.pathMinX = Math.max(newH, minStub4);
138942
+ thisConnect.pathMaxX = Math.max(newH, minStub4);
138943
+ }
138944
+ if (firstEndpoints[1] === -1 || secondEndpoints[1] === -1) {
138945
+ thisConnect.pathMinY = -Math.max(newV, minStub4);
138946
+ thisConnect.pathMaxY = -Math.max(newV, minStub4);
138947
+ } else if (firstEndpoints[1] === 1 || secondEndpoints[1] === 1) {
138948
+ thisConnect.pathMinY = Math.max(newV, minStub4);
138949
+ thisConnect.pathMaxY = Math.max(newV, minStub4);
138950
+ }
138951
+ }
138779
138952
  } else if (lineCount === 5) {
138953
+ var minStub5 = isSameNode ? 30 : 10;
138780
138954
  if (firstEndpoints[0] !== 0) {
138781
138955
  // 水平射线,左右拖拉
138782
138956
  var hSameSide = firstEndpoints[0] === secondEndpoints[0];
@@ -138786,27 +138960,29 @@ function dragLine(_this, connection, thisConnect) {
138786
138960
  if (firstEndpoints[0] === -1) {
138787
138961
  // 水平射线,左出右入,靠近起点左侧拖拉
138788
138962
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138789
- if (distance > -10) {
138790
- distance = -10;
138963
+ if (distance > -minStub5) {
138964
+ distance = -minStub5;
138791
138965
  }
138792
138966
  thisConnect.pathMinX = distance;
138793
138967
  if (!hSameSide) {
138794
138968
  thisConnect.pathMaxX = -distance;
138795
138969
  stub = [-distance, -distance];
138796
138970
  } else {
138971
+ handledIn4 = true;
138797
138972
  stub = [-distance, Math.abs(initialMaxX)];
138798
138973
  }
138799
138974
  } else if (firstEndpoints[0] === 1) {
138800
138975
  // 水平射线,右出左入,靠近终点左侧拖拉
138801
138976
  distance = -(Math.abs(initialMinX) - (x - _this.dragLineObj.disX));
138802
- if (distance > -10) {
138803
- distance = -10;
138977
+ if (distance > -minStub5) {
138978
+ distance = -minStub5;
138804
138979
  }
138805
138980
  thisConnect.pathMinX = distance;
138806
138981
  if (!hSameSide) {
138807
138982
  thisConnect.pathMaxX = -distance;
138808
138983
  stub = [-distance, -distance];
138809
138984
  } else {
138985
+ handledIn4 = true;
138810
138986
  stub = [Math.abs(initialMaxX), -distance];
138811
138987
  }
138812
138988
  }
@@ -138816,8 +138992,8 @@ function dragLine(_this, connection, thisConnect) {
138816
138992
  if (firstEndpoints[0] === -1) {
138817
138993
  // 水平射线,左出右入,靠近终点右侧拖拉
138818
138994
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138819
- if (distance < 10) {
138820
- distance = 10;
138995
+ if (distance < minStub5) {
138996
+ distance = minStub5;
138821
138997
  }
138822
138998
  thisConnect.pathMaxX = distance;
138823
138999
  if (!hSameSide) {
@@ -138829,8 +139005,8 @@ function dragLine(_this, connection, thisConnect) {
138829
139005
  } else if (firstEndpoints[0] === 1) {
138830
139006
  // 水平射线,右出左入,靠近起点右侧拖拉
138831
139007
  distance = Math.abs(initialMaxX) + (x - _this.dragLineObj.disX);
138832
- if (distance < 10) {
138833
- distance = 10;
139008
+ if (distance < minStub5) {
139009
+ distance = minStub5;
138834
139010
  }
138835
139011
  thisConnect.pathMaxX = distance;
138836
139012
  if (!hSameSide) {
@@ -138850,27 +139026,29 @@ function dragLine(_this, connection, thisConnect) {
138850
139026
  if (firstEndpoints[1] === -1) {
138851
139027
  // 垂直射线,上出下入,靠近起点上下拖拉
138852
139028
  distance = -(Math.abs(initialMinY) - (y - _this.dragLineObj.disY));
138853
- if (distance > -10) {
138854
- distance = -10;
139029
+ if (distance > -minStub5) {
139030
+ distance = -minStub5;
138855
139031
  }
138856
139032
  thisConnect.pathMinY = distance;
138857
139033
  if (!vSameSide) {
138858
139034
  thisConnect.pathMaxY = -distance;
138859
139035
  stub = [-distance, -distance];
138860
139036
  } else {
139037
+ handledIn4 = true;
138861
139038
  stub = [-distance, Math.abs(initialMaxY)];
138862
139039
  }
138863
139040
  } else if (firstEndpoints[1] === 1) {
138864
139041
  // 垂直射线,下出上入,靠近终点上下拖拉
138865
139042
  distance = -(Math.abs(initialMaxY) - (y - _this.dragLineObj.disY));
138866
- if (distance > -10) {
138867
- distance = -10;
139043
+ if (distance > -minStub5) {
139044
+ distance = -minStub5;
138868
139045
  }
138869
139046
  thisConnect.pathMinY = distance;
138870
139047
  if (!vSameSide) {
138871
139048
  thisConnect.pathMaxY = -distance;
138872
139049
  stub = [-distance, -distance];
138873
139050
  } else {
139051
+ handledIn4 = true;
138874
139052
  stub = [Math.abs(initialMaxY), -distance];
138875
139053
  }
138876
139054
  }
@@ -138880,21 +139058,22 @@ function dragLine(_this, connection, thisConnect) {
138880
139058
  if (firstEndpoints[1] === -1) {
138881
139059
  // 垂直射线,上出下入,靠近终点上下拖拉
138882
139060
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY);
138883
- if (distance < 10) {
138884
- distance = 10;
139061
+ if (distance < minStub5) {
139062
+ distance = minStub5;
138885
139063
  }
138886
139064
  thisConnect.pathMaxY = distance;
138887
139065
  if (!vSameSide) {
138888
139066
  thisConnect.pathMinY = -distance;
138889
139067
  stub = [distance, distance];
138890
139068
  } else {
139069
+ handledIn4 = true;
138891
139070
  stub = [Math.abs(initialMinY), distance];
138892
139071
  }
138893
139072
  } else if (firstEndpoints[1] === 1) {
138894
139073
  // 垂直射线,下出下入,靠起点上下拖拉
138895
139074
  distance = Math.abs(initialMaxY) + (y - _this.dragLineObj.disY);
138896
- if (distance < 10) {
138897
- distance = 10;
139075
+ if (distance < minStub5) {
139076
+ distance = minStub5;
138898
139077
  }
138899
139078
  thisConnect.pathMaxY = distance;
138900
139079
  if (!vSameSide) {
@@ -138906,37 +139085,215 @@ function dragLine(_this, connection, thisConnect) {
138906
139085
  }
138907
139086
  }
138908
139087
  }
139088
+ } else {
139089
+ // lineCount >= 6(跨轴自环线等4段线以上),按轴独立拖拽,水平/垂直互不影响
139090
+ // 注:firstEndpoints为2元素orientation数组[dx,dy],仅索引[0]/[1]有效
139091
+ if (isSameNode) {
139092
+ var minStub6 = 30;
139093
+ var dx1 = x - _this.dragLineObj.disX;
139094
+ var dy1 = y - _this.dragLineObj.disY;
139095
+ // 从thisConnect取已存储的stub(无+5偏移);首次拖拽则按锚点方向选正确initial值扣除gap偏移
139096
+ var curHs = Math.abs(thisConnect.pathMinX) || Math.abs(thisConnect.pathMaxX);
139097
+ var curVs = Math.abs(thisConnect.pathMinY) || Math.abs(thisConnect.pathMaxY);
139098
+ if (!curHs) {
139099
+ curHs = firstEndpoints[0] !== 0 ? Math.max(Math.abs(firstEndpoints[0] === -1 ? initialMinX : initialMaxX) - 5, minStub6) : minStub6;
139100
+ }
139101
+ if (!curVs) {
139102
+ curVs = firstEndpoints[1] !== 0 ? Math.max(Math.abs(firstEndpoints[1] === -1 ? initialMinY : initialMaxY) - 5, minStub6) : minStub6;
139103
+ }
139104
+ if (Math.abs(dx1) >= Math.abs(dy1)) {
139105
+ // 水平拖拽:只更新水平stub,垂直保持curVs不变
139106
+ var s = curHs;
139107
+ if (dx1 < 0) {
139108
+ s = curHs + Math.abs(dx1);
139109
+ } else {
139110
+ s = Math.max(curHs - dx1, minStub6);
139111
+ }
139112
+ if (firstEndpoints[0] === -1) {
139113
+ thisConnect.pathMinX = -s;
139114
+ thisConnect.pathMaxX = -s;
139115
+ } else if (firstEndpoints[0] === 1) {
139116
+ thisConnect.pathMinX = s;
139117
+ thisConnect.pathMaxX = s;
139118
+ }
139119
+ // 首次拖拽时初始化垂直方向存储
139120
+ if (!thisConnect.pathMinY && !thisConnect.pathMaxY) {
139121
+ var vdir = secondEndpoints[1] || firstEndpoints[1];
139122
+ if (vdir === -1) {
139123
+ thisConnect.pathMinY = -curVs;
139124
+ thisConnect.pathMaxY = -curVs;
139125
+ } else {
139126
+ thisConnect.pathMinY = curVs;
139127
+ thisConnect.pathMaxY = curVs;
139128
+ }
139129
+ }
139130
+ stub = [Math.max(s, minStub6), Math.max(curVs, minStub6)];
139131
+ } else {
139132
+ // 垂直拖拽:只更新垂直stub,水平保持curHs不变
139133
+ var s = curVs;
139134
+ if (dy1 < 0) {
139135
+ s = curVs + Math.abs(dy1);
139136
+ } else {
139137
+ s = Math.max(curVs - dy1, minStub6);
139138
+ }
139139
+ if (firstEndpoints[1] === -1) {
139140
+ thisConnect.pathMinY = -s;
139141
+ thisConnect.pathMaxY = -s;
139142
+ } else if (firstEndpoints[1] === 1) {
139143
+ thisConnect.pathMinY = s;
139144
+ thisConnect.pathMaxY = s;
139145
+ }
139146
+ // 首次拖拽时初始化水平方向存储
139147
+ if (!thisConnect.pathMinX && !thisConnect.pathMaxX) {
139148
+ var hdir = secondEndpoints[0] || firstEndpoints[0];
139149
+ if (hdir === -1) {
139150
+ thisConnect.pathMinX = -curHs;
139151
+ thisConnect.pathMaxX = -curHs;
139152
+ } else {
139153
+ thisConnect.pathMinX = curHs;
139154
+ thisConnect.pathMaxX = curHs;
139155
+ }
139156
+ }
139157
+ stub = [Math.max(curHs, minStub6), Math.max(s, minStub6)];
139158
+ }
139159
+ }
139160
+ }
139161
+ // 跨轴自环线(lineCount === 4 或 >= 6):用thisConnect存储值修正非拖拽轴stub
139162
+ // 避免lineCount === 4块中Math.abs(initialMaxX)取到画布边界而非真实stub
139163
+ // 注:firstEndpoints为2元素orientation数组,仅索引[0]/[1]有效
139164
+ if (isSameNode && !(hSameSide || vSameSide)) {
139165
+ var hasHAnchor = firstEndpoints[0] !== 0 || secondEndpoints[0] !== 0;
139166
+ var hasVAnchor = firstEndpoints[1] !== 0 || secondEndpoints[1] !== 0;
139167
+ if (hasHAnchor && hasVAnchor) {
139168
+ // Determine which axis was dragged by checking which path value was updated
139169
+ var srcDragged = thisConnect.pathMinX !== undefined && thisConnect.pathMinX !== 0 || thisConnect.pathMaxX !== undefined && thisConnect.pathMaxX !== 0;
139170
+ var srcWasV = firstEndpoints[0] === 0;
139171
+ if (srcDragged) {
139172
+ // Horizontal was dragged → fix vertical stub
139173
+ var vs = Math.abs(thisConnect.pathMinY) || Math.abs(thisConnect.pathMaxY);
139174
+ if (!vs) {
139175
+ if (firstEndpoints[1] === -1 || secondEndpoints[1] === -1) {
139176
+ vs = Math.max(Math.abs(initialMinY) - 5, minStub4 || minStub5 || 30);
139177
+ } else if (firstEndpoints[1] === 1 || secondEndpoints[1] === 1) {
139178
+ vs = Math.max(Math.abs(initialMaxY) - 5, minStub4 || minStub5 || 30);
139179
+ } else {
139180
+ vs = minStub4 || minStub5 || 30;
139181
+ }
139182
+ }
139183
+ stub[srcWasV ? 0 : 1] = Math.max(vs, minStub4 || minStub5 || 30);
139184
+ // 存储修正后的值到thisConnect,防止下个session re-extract画布值
139185
+ var fixedVs = Math.max(vs, minStub4 || minStub5 || 30);
139186
+ if (firstEndpoints[1] === -1 || secondEndpoints[1] === -1) {
139187
+ thisConnect.pathMinY = -fixedVs;
139188
+ thisConnect.pathMaxY = -fixedVs;
139189
+ } else if (firstEndpoints[1] === 1 || secondEndpoints[1] === 1) {
139190
+ thisConnect.pathMinY = fixedVs;
139191
+ thisConnect.pathMaxY = fixedVs;
139192
+ }
139193
+ } else {
139194
+ // Vertical was dragged → fix horizontal stub
139195
+ var hs = Math.abs(thisConnect.pathMinX) || Math.abs(thisConnect.pathMaxX);
139196
+ if (!hs) {
139197
+ if (firstEndpoints[0] === -1 || secondEndpoints[0] === -1) {
139198
+ hs = Math.max(Math.abs(initialMinX) - 5, minStub4 || minStub5 || 30);
139199
+ } else if (firstEndpoints[0] === 1 || secondEndpoints[0] === 1) {
139200
+ hs = Math.max(Math.abs(initialMaxX) - 5, minStub4 || minStub5 || 30);
139201
+ } else {
139202
+ hs = minStub4 || minStub5 || 30;
139203
+ }
139204
+ }
139205
+ stub[srcWasV ? 1 : 0] = Math.max(hs, minStub4 || minStub5 || 30);
139206
+ // 存储修正后的值到thisConnect
139207
+ var fixedHs = Math.max(hs, minStub4 || minStub5 || 30);
139208
+ if (firstEndpoints[0] === -1 || secondEndpoints[0] === -1) {
139209
+ thisConnect.pathMinX = -fixedHs;
139210
+ thisConnect.pathMaxX = -fixedHs;
139211
+ } else if (firstEndpoints[0] === 1 || secondEndpoints[0] === 1) {
139212
+ thisConnect.pathMinX = fixedHs;
139213
+ thisConnect.pathMaxX = fixedHs;
139214
+ }
139215
+ }
139216
+ }
138909
139217
  }
138910
- // 垂直锚点组合2段线:源端延伸全距离,目标端不延伸(自环连接除外)
138911
- var respectStubs = false;
138912
- if (!isSameNode) {
138913
- if (firstEndpoints[0] !== 0 && secondEndpoints[1] !== 0) {
138914
- // 水平出 + 垂直入(如左出上入、右出下入)
138915
- stub = [Math.abs(initialMaxX), 0];
138916
- respectStubs = true;
138917
- } else if (firstEndpoints[1] !== 0 && secondEndpoints[0] !== 0) {
138918
- // 垂直出 + 水平入(如上出左入、下出右入)
138919
- stub = [Math.abs(initialMaxY), 0];
138920
- respectStubs = true;
139218
+ // 自环线同侧连接:用拖拽端的值同时赋给两端,保持stub对称
139219
+ if (isSameNode && (hSameSide || vSameSide)) {
139220
+ var activeStub;
139221
+ if (firstEndpoints[0] !== 0) {
139222
+ // 水平锚点
139223
+ if (Math.abs(canvasMarginLeft + canvasLeft - _this.dragLineObj.disX) <= 10) {
139224
+ activeStub = Math.abs(stub[0]); // 拖拽左侧边
139225
+ } else {
139226
+ activeStub = Math.abs(stub[1]); // 拖拽右侧边
139227
+ }
139228
+ stub = [activeStub, activeStub];
139229
+ if (firstEndpoints[0] === -1) {
139230
+ thisConnect.pathMinX = -activeStub;
139231
+ thisConnect.pathMaxX = -activeStub;
139232
+ } else {
139233
+ thisConnect.pathMinX = activeStub;
139234
+ thisConnect.pathMaxX = activeStub;
139235
+ }
139236
+ } else {
139237
+ // 垂直锚点
139238
+ if (Math.abs(canvasMarginTop + canvasTop - _this.dragLineObj.disY - scrollTop) <= 10) {
139239
+ activeStub = Math.abs(stub[0]); // 拖拽顶部边
139240
+ } else {
139241
+ activeStub = Math.abs(stub[1]); // 拖拽底部边
139242
+ }
139243
+ stub = [activeStub, activeStub];
139244
+ if (firstEndpoints[1] === -1) {
139245
+ thisConnect.pathMinY = -activeStub;
139246
+ thisConnect.pathMaxY = -activeStub;
139247
+ } else {
139248
+ thisConnect.pathMinY = activeStub;
139249
+ thisConnect.pathMaxY = activeStub;
139250
+ }
138921
139251
  }
138922
139252
  }
139253
+ // 垂直锚点组合2段线:源端延伸全距离,目标端不延伸(自环连接除外)
139254
+ var respectStubs = false;
139255
+ if (isSameNode) {
139256
+ // 自环连接始终严格保持stub值,与createPathLine创建行为一致
139257
+ // 跨轴自环线(lineCount不匹配3/4/5分支时stub为[0,0]),使用初始路径值兜底
139258
+ if (stub[0] === 0 && stub[1] === 0) {
139259
+ var s0 = Math.abs(initialMinX) || Math.abs(initialMaxX) || 50;
139260
+ var s1 = Math.abs(initialMinY) || Math.abs(initialMaxY) || 50;
139261
+ stub = [Math.max(s0, 30), Math.max(s1, 30)];
139262
+ }
139263
+ respectStubs = true;
139264
+ } else if (firstEndpoints[0] !== 0 && secondEndpoints[1] !== 0) {
139265
+ // 水平出 + 垂直入(如左出上入、右出下入)
139266
+ stub = [Math.abs(initialMaxX), 0];
139267
+ respectStubs = true;
139268
+ } else if (firstEndpoints[1] !== 0 && secondEndpoints[0] !== 0) {
139269
+ // 垂直出 + 水平入(如上出左入、下出右入)
139270
+ stub = [Math.abs(initialMaxY), 0];
139271
+ respectStubs = true;
139272
+ } else if (firstEndpoints[0] !== 0 && secondEndpoints[0] !== 0) {
139273
+ // 水平出 + 水平入(同轴异向,如右出左入):使用midpoint控制折线,不用alwaysRespectStubs
139274
+ respectStubs = false;
139275
+ } else if (firstEndpoints[1] !== 0 && secondEndpoints[1] !== 0) {
139276
+ // 垂直出 + 垂直入(同轴异向,如下出上入):使用midpoint控制折线,不用alwaysRespectStubs
139277
+ respectStubs = false;
139278
+ }
139279
+ var mp = isSameAxisDiffDir ? _dragMidpoint : respectStubs ? isSameNode ? 0.5 : 0 : 0.5;
138923
139280
  connection.setConnector(['Flowchart', {
138924
139281
  stub: stub,
138925
139282
  gap: 5,
138926
139283
  cornerRadius: 5,
138927
139284
  alwaysRespectStubs: respectStubs,
138928
- midpoint: respectStubs ? 0 : 0.5
138929
- }]);
138930
- connection.addOverlay(['Arrow', {
138931
- width: 10,
138932
- length: 10,
138933
- location: 1
139285
+ midpoint: mp
138934
139286
  }]);
138935
139287
  });
138936
139288
 
138937
139289
  // 鼠标释放
138938
139290
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).bind('mouseup', function (ev) {
138939
139291
  setMoveCursor(false);
139292
+ connection.addOverlay(['Arrow', {
139293
+ width: 10,
139294
+ length: 10,
139295
+ location: 1
139296
+ }]);
138940
139297
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).unbind('mousedown');
138941
139298
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).unbind('mousemove');
138942
139299
  jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).unbind('mouseup');
@@ -139317,6 +139674,30 @@ function createConnect(conn, connector, anchors) {
139317
139674
  }
139318
139675
  return a;
139319
139676
  }
139677
+
139678
+ // ========== 辅助函数:同侧stub提取 ==========
139679
+ // 处理4种同轴同向组合(左左、右右、上上、下下),返回stub数组或null
139680
+ function computeSameSideStub(anchors, pathMinX, pathMaxX, pathMinY, pathMaxY) {
139681
+ if (anchors[0][2] === -1 && anchors[1][2] === -1) {
139682
+ var s0 = Math.abs(pathMinX) || 50;
139683
+ var s1 = Math.abs(pathMaxX) || 50;
139684
+ return [Math.max(s0, 30), Math.max(s1, 30)];
139685
+ } else if (anchors[0][2] === 1 && anchors[1][2] === 1) {
139686
+ var s0 = Math.abs(pathMaxX) || 50;
139687
+ var s1 = Math.abs(pathMinX) || 50;
139688
+ return [Math.max(s0, 30), Math.max(s1, 30)];
139689
+ } else if (anchors[0][3] === -1 && anchors[1][3] === -1) {
139690
+ var s0 = Math.abs(pathMinY) || 50;
139691
+ var s1 = Math.abs(pathMaxY) || 50;
139692
+ return [Math.max(s0, 30), Math.max(s1, 30)];
139693
+ } else if (anchors[0][3] === 1 && anchors[1][3] === 1) {
139694
+ // 下出上入:pathMinY=源端stub,pathMaxY=目标端stub
139695
+ var s0 = Math.abs(pathMinY) || 50;
139696
+ var s1 = Math.abs(pathMaxY) || 50;
139697
+ return [Math.max(s0, 30), Math.max(s1, 30)];
139698
+ }
139699
+ return null;
139700
+ }
139320
139701
  function createPathLine(connectsArr) {
139321
139702
  for (var j = 0; j < connectsArr.length; j++) {
139322
139703
  // console.log(connectsArr[j].label, JSON.stringify(connectsArr[j]), connectsArr[j])
@@ -139340,22 +139721,18 @@ function createPathLine(connectsArr) {
139340
139721
  // 自环连接:minStub=50,必须在isDiffAxis之前判断(自环可能跨轴)
139341
139722
  stub = [50, 50];
139342
139723
  if (connectsArr[j].linesCount && connectsArr[j].linesCount >= 3) {
139343
- if (anchors[0][2] === -1 && anchors[1][2] === -1) {
139344
- var s0 = Math.abs(connectsArr[j].pathMinX) || 50;
139345
- var s1 = Math.abs(connectsArr[j].pathMaxX) || 50;
139346
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139347
- } else if (anchors[0][2] === 1 && anchors[1][2] === 1) {
139348
- var s0 = Math.abs(connectsArr[j].pathMaxX) || 50;
139349
- var s1 = Math.abs(connectsArr[j].pathMinX) || 50;
139350
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139351
- } else if (anchors[0][3] === -1 && anchors[1][3] === -1) {
139352
- var s0 = Math.abs(connectsArr[j].pathMinY) || 50;
139353
- var s1 = Math.abs(connectsArr[j].pathMaxY) || 50;
139354
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139355
- } else if (anchors[0][3] === 1 && anchors[1][3] === 1) {
139356
- var s0 = Math.abs(connectsArr[j].pathMaxY) || 50;
139357
- var s1 = Math.abs(connectsArr[j].pathMinY) || 50;
139358
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139724
+ var sameStub = computeSameSideStub(anchors, connectsArr[j].pathMinX, connectsArr[j].pathMaxX, connectsArr[j].pathMinY, connectsArr[j].pathMaxY);
139725
+ if (sameStub) {
139726
+ stub = sameStub;
139727
+ } else {
139728
+ // 跨轴自环线(如左出上入):取各轴有效path值,minStub=50
139729
+ var absMinX = Math.abs(connectsArr[j].pathMinX) || 0;
139730
+ var absMaxX = Math.abs(connectsArr[j].pathMaxX) || 0;
139731
+ var absMinY = Math.abs(connectsArr[j].pathMinY) || 0;
139732
+ var absMaxY = Math.abs(connectsArr[j].pathMaxY) || 0;
139733
+ var hs = Math.max(absMinX, absMaxX, 30);
139734
+ var vs = Math.max(absMinY, absMaxY, 30);
139735
+ stub = [Math.max(hs, 30), Math.max(vs, 30)];
139359
139736
  }
139360
139737
  }
139361
139738
  alwaysRespectStubs = true;
@@ -139370,67 +139747,46 @@ function createPathLine(connectsArr) {
139370
139747
  // 同侧锚点(不含自环):使用保存的path值,minStub=50保证U型结构
139371
139748
  stub = [50, 50];
139372
139749
  if (connectsArr[j].linesCount && connectsArr[j].linesCount >= 3) {
139373
- if (anchors[0][2] === -1 && anchors[1][2] === -1) {
139374
- var s0 = Math.abs(connectsArr[j].pathMinX) || 50;
139375
- var s1 = Math.abs(connectsArr[j].pathMaxX) || 50;
139376
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139377
- } else if (anchors[0][2] === 1 && anchors[1][2] === 1) {
139378
- var s0 = Math.abs(connectsArr[j].pathMaxX) || 50;
139379
- var s1 = Math.abs(connectsArr[j].pathMinX) || 50;
139380
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139381
- } else if (anchors[0][3] === -1 && anchors[1][3] === -1) {
139382
- var s0 = Math.abs(connectsArr[j].pathMinY) || 50;
139383
- var s1 = Math.abs(connectsArr[j].pathMaxY) || 50;
139384
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139385
- } else if (anchors[0][3] === 1 && anchors[1][3] === 1) {
139386
- var s0 = Math.abs(connectsArr[j].pathMaxY) || 50;
139387
- var s1 = Math.abs(connectsArr[j].pathMinY) || 50;
139388
- stub = [Math.max(s0, 50), Math.max(s1, 50)];
139389
- }
139750
+ var sameStub = computeSameSideStub(anchors, connectsArr[j].pathMinX, connectsArr[j].pathMaxX, connectsArr[j].pathMinY, connectsArr[j].pathMaxY);
139751
+ if (sameStub) stub = sameStub;
139390
139752
  }
139391
139753
  } else if (isSameAxisDiffDir) {
139392
- // 同轴异向:minStub=10,任意一端stub为0或NaN时触发CSS精确计算
139393
- if (anchors[0][2] === -1) {
139394
- stub = [Math.abs(connectsArr[j].pathMinX), Math.abs(connectsArr[j].pathMaxX)];
139395
- } else if (anchors[0][2] === 1) {
139396
- stub = [Math.abs(connectsArr[j].pathMaxX), Math.abs(connectsArr[j].pathMinX)];
139397
- } else if (anchors[0][3] === -1) {
139398
- stub = [Math.abs(connectsArr[j].pathMinY), Math.abs(connectsArr[j].pathMaxY)];
139399
- } else if (anchors[0][3] === 1) {
139400
- stub = [Math.abs(connectsArr[j].pathMaxY), Math.abs(connectsArr[j].pathMinY)];
139401
- }
139402
-
139403
- // 任意一端stub为0或NaN(旧数据):使用CSS坐标精确计算,确保水平段在两节点中间
139404
- if (isNaN(stub[0]) || stub[0] === 0 || isNaN(stub[1]) || stub[1] === 0) {
139405
- var _sourceNode = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + connectsArr[j].PageSourceId);
139406
- var targetNode = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + connectsArr[j].PageTargetId);
139407
- var srcTop = parseInt(_sourceNode.css('top')) || 0;
139408
- var srcLeft = parseInt(_sourceNode.css('left')) || 0;
139409
- var srcW = _sourceNode.outerWidth() || 0;
139410
- var srcH = _sourceNode.outerHeight() || 0;
139411
- var tgtTop = parseInt(targetNode.css('top')) || 0;
139412
- var tgtLeft = parseInt(targetNode.css('left')) || 0;
139413
- var tgtW = targetNode.outerWidth() || 0;
139414
- var tgtH = targetNode.outerHeight() || 0;
139415
- if (anchors[0][2] !== 0) {
139416
- // 水平方向(左出右入、右出左入)
139417
- var srcAnchorX = srcLeft + srcW * anchors[0][0];
139418
- var tgtAnchorX = tgtLeft + tgtW * anchors[1][0];
139419
- var midX = (srcAnchorX + tgtAnchorX) / 2;
139420
- stub[0] = Math.abs(midX - srcAnchorX);
139421
- stub[1] = Math.abs(tgtAnchorX - midX);
139422
- } else if (anchors[0][3] !== 0) {
139423
- // 垂直方向(上出下入、下出上入)
139424
- var srcAnchorY = srcTop + srcH * anchors[0][1];
139425
- var tgtAnchorY = tgtTop + tgtH * anchors[1][1];
139426
- var midY = (srcAnchorY + tgtAnchorY) / 2;
139427
- stub[0] = Math.abs(midY - srcAnchorY);
139428
- stub[1] = Math.abs(tgtAnchorY - midY);
139429
- }
139430
- }
139431
- if (isNaN(stub[0]) || stub[0] === 0) stub[0] = 10;
139432
- if (isNaN(stub[1]) || stub[1] === 0) stub[1] = stub[0];
139433
- alwaysRespectStubs = true;
139754
+ // 同轴异向:小stub + alwaysRespectStubs=false + 动态midpoint控制折线位置
139755
+ stub = [10, 10];
139756
+ var _sourceNode = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + connectsArr[j].PageSourceId);
139757
+ var targetNode = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + connectsArr[j].PageTargetId);
139758
+ var srcTop = parseInt(_sourceNode.css('top')) || 0;
139759
+ var srcLeft = parseInt(_sourceNode.css('left')) || 0;
139760
+ var srcW = _sourceNode.outerWidth() || 0;
139761
+ var srcH = _sourceNode.outerHeight() || 0;
139762
+ var tgtTop = parseInt(targetNode.css('top')) || 0;
139763
+ var tgtLeft = parseInt(targetNode.css('left')) || 0;
139764
+ var tgtW = targetNode.outerWidth() || 0;
139765
+ var tgtH = targetNode.outerHeight() || 0;
139766
+ if (anchors[0][2] !== 0) {
139767
+ // 水平方向(左出右入、右出左入)
139768
+ var srcAnchorX = srcLeft + srcW * anchors[0][0];
139769
+ var tgtAnchorX = tgtLeft + tgtW * anchors[1][0];
139770
+ var totalDistX = Math.abs(tgtAnchorX - srcAnchorX);
139771
+ // 从存储的pathMaxX获取折线距离,无有效值时取中点
139772
+ var foldDist = Math.abs(connectsArr[j].pathMaxX) || Math.abs(connectsArr[j].pathMinX);
139773
+ if (!foldDist || isNaN(foldDist)) foldDist = totalDistX / 2;
139774
+ // stub=10时需扣除stub偏移:midpoint = (foldDist - stub) / (totalDist - 2*stub)
139775
+ var effDist = totalDistX - 20;
139776
+ midpoint = effDist > 0 ? (foldDist - 10) / effDist : 0.5;
139777
+ } else if (anchors[0][3] !== 0) {
139778
+ // 垂直方向(上出下入、下出上入)
139779
+ var srcAnchorY = srcTop + srcH * anchors[0][1];
139780
+ var tgtAnchorY = tgtTop + tgtH * anchors[1][1];
139781
+ var totalDistY = Math.abs(tgtAnchorY - srcAnchorY);
139782
+ var foldDist = Math.abs(connectsArr[j].pathMaxY) || Math.abs(connectsArr[j].pathMinY);
139783
+ if (!foldDist || isNaN(foldDist)) foldDist = totalDistY / 2;
139784
+ // stub=10时需扣除stub偏移:midpoint = (foldDist - stub) / (totalDist - 2*stub)
139785
+ var effDist = totalDistY - 20;
139786
+ midpoint = effDist > 0 ? (foldDist - 10) / effDist : 0.5;
139787
+ }
139788
+ midpoint = Math.max(0, Math.min(1, midpoint));
139789
+ // alwaysRespectStubs保持false(默认值),使opposite分支使用midpoint参数控制折线
139434
139790
  } else if (connectsArr[j].linesCount >= 4) {
139435
139791
  // 其他4段线:使用保存的path值
139436
139792
  stub = [10, 10];
@@ -141281,7 +141637,11 @@ var showProcessDesc = function showProcessDesc(desc, containerHeight, containerL
141281
141637
  scope: 'desc'
141282
141638
  });
141283
141639
  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.process-desc-close').click(function () {
141284
- document.querySelector('.process-desc-container').style.display = 'none';
141640
+ var descContainer = document.querySelector('.process-desc-container');
141641
+ // 隐藏前将当前位置存入data属性,以便保存时能读取到
141642
+ descContainer.dataset.left = descContainer.offsetLeft;
141643
+ descContainer.dataset.top = descContainer.offsetTop;
141644
+ descContainer.style.display = 'none';
141285
141645
  });
141286
141646
  };
141287
141647
  var Transform = {
@@ -167911,7 +168271,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".setting .header[data-v-8cadfe0a]{widt
167911
168271
 
167912
168272
  /***/ }),
167913
168273
 
167914
- /***/ 10138:
168274
+ /***/ 43879:
167915
168275
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
167916
168276
 
167917
168277
  "use strict";
@@ -167925,14 +168285,14 @@ __webpack_require__.r(__webpack_exports__);
167925
168285
 
167926
168286
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
167927
168287
  // Module
167928
- ___CSS_LOADER_EXPORT___.push([module.id, "[data-v-46bbfc1a] .el-scrollbar__wrap{overflow-x:auto}#center[data-v-46bbfc1a]{background-image:-webkit-gradient(linear,left top,right top,color-stop(3%,rgba(50,0,0,.05)),color-stop(3%,transparent)),-webkit-gradient(linear,left bottom,left top,color-stop(3%,rgba(50,0,0,.05)),color-stop(3%,transparent));background-image:linear-gradient(90deg,rgba(50,0,0,.05) 3%,transparent 0),linear-gradient(1turn,rgba(50,0,0,.05) 3%,transparent 0);background-size:20px 20px;background-repeat:repeat;background-position:0 0}#center .add-node-btn[data-v-46bbfc1a]{position:relative;margin:-15px -10px;z-index:4000;display:none}#center .insert-node-btn[data-v-46bbfc1a]{position:fixed;margin:-15px -10px;z-index:4000;display:none}li[data-v-46bbfc1a],ul[data-v-46bbfc1a]{list-style:none}", ""]);
168288
+ ___CSS_LOADER_EXPORT___.push([module.id, "[data-v-0ebbd5f8] .el-scrollbar__wrap{overflow-x:auto}#center[data-v-0ebbd5f8]{background-image:-webkit-gradient(linear,left top,right top,color-stop(3%,rgba(50,0,0,.05)),color-stop(3%,transparent)),-webkit-gradient(linear,left bottom,left top,color-stop(3%,rgba(50,0,0,.05)),color-stop(3%,transparent));background-image:linear-gradient(90deg,rgba(50,0,0,.05) 3%,transparent 0),linear-gradient(1turn,rgba(50,0,0,.05) 3%,transparent 0);background-size:20px 20px;background-repeat:repeat;background-position:0 0}#center .add-node-btn[data-v-0ebbd5f8]{position:relative;margin:-15px -10px;z-index:4000;display:none}#center .insert-node-btn[data-v-0ebbd5f8]{position:fixed;margin:-15px -10px;z-index:4000;display:none}li[data-v-0ebbd5f8],ul[data-v-0ebbd5f8]{list-style:none}", ""]);
167929
168289
  // Exports
167930
168290
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
167931
168291
 
167932
168292
 
167933
168293
  /***/ }),
167934
168294
 
167935
- /***/ 78094:
168295
+ /***/ 80803:
167936
168296
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
167937
168297
 
167938
168298
  "use strict";
@@ -263697,35 +264057,35 @@ var update = add("0ef0df88", content, true, {"sourceMap":false,"shadowMode":fals
263697
264057
 
263698
264058
  /***/ }),
263699
264059
 
263700
- /***/ 28652:
264060
+ /***/ 73537:
263701
264061
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
263702
264062
 
263703
264063
  // style-loader: Adds some css to the DOM by adding a <style> tag
263704
264064
 
263705
264065
  // load the styles
263706
- var content = __webpack_require__(10138);
264066
+ var content = __webpack_require__(43879);
263707
264067
  if(content.__esModule) content = content.default;
263708
264068
  if(typeof content === 'string') content = [[module.id, content, '']];
263709
264069
  if(content.locals) module.exports = content.locals;
263710
264070
  // add the styles to the DOM
263711
264071
  var add = (__webpack_require__(99548)/* ["default"] */ .A)
263712
- var update = add("3a6d492a", content, true, {"sourceMap":false,"shadowMode":false});
264072
+ var update = add("5228d882", content, true, {"sourceMap":false,"shadowMode":false});
263713
264073
 
263714
264074
  /***/ }),
263715
264075
 
263716
- /***/ 28996:
264076
+ /***/ 65089:
263717
264077
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
263718
264078
 
263719
264079
  // style-loader: Adds some css to the DOM by adding a <style> tag
263720
264080
 
263721
264081
  // load the styles
263722
- var content = __webpack_require__(78094);
264082
+ var content = __webpack_require__(80803);
263723
264083
  if(content.__esModule) content = content.default;
263724
264084
  if(typeof content === 'string') content = [[module.id, content, '']];
263725
264085
  if(content.locals) module.exports = content.locals;
263726
264086
  // add the styles to the DOM
263727
264087
  var add = (__webpack_require__(99548)/* ["default"] */ .A)
263728
- var update = add("2c53a235", content, true, {"sourceMap":false,"shadowMode":false});
264088
+ var update = add("d8266c68", content, true, {"sourceMap":false,"shadowMode":false});
263729
264089
 
263730
264090
  /***/ }),
263731
264091
 
@@ -286279,7 +286639,7 @@ var asyncComponents = [
286279
286639
  }],
286280
286640
  // ========== 工作流设计器 + 系统设计器 ==========
286281
286641
  ['WflowDesigner', function () {
286282
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 26173));
286642
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 34660));
286283
286643
  }], ['ImportWf', function () {
286284
286644
  return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 39934));
286285
286645
  }], ['WflowTrace', function () {
@@ -286355,7 +286715,7 @@ var WflowformModule = function WflowformModule() {
286355
286715
  return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 42826));
286356
286716
  };
286357
286717
  var WflowDesignerModule = function WflowDesignerModule() {
286358
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 26173));
286718
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 34660));
286359
286719
  };
286360
286720
  var WflowTraceModule = function WflowTraceModule() {
286361
286721
  return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 85197));