kd-curve-v2 0.0.6 → 0.0.8

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.
package/dist/esm/index.js CHANGED
@@ -2175,7 +2175,7 @@ var script$a = {
2175
2175
  },
2176
2176
  };
2177
2177
 
2178
- var css_248z$b = "@charset \"UTF-8\";\n.function-control-panel[data-v-682ce335] {\n width: 100%;\n height: 100%;\n color: var(--text-color);\n font-size: 14px;\n overflow-x: hidden;\n overflow-y: auto;\n /* 隐藏滚动条 */\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.function-control-panel[data-v-682ce335]::-webkit-scrollbar {\n display: none;\n}\n.function-control-panel .radio-group[data-v-682ce335] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px;\n}\n.el-select-disabled[data-v-682ce335] {\n opacity: 0.5;\n}\n\n/*/* 分割线 */\n.divider[data-v-682ce335] {\n height: 1px;\n background: var(--border-color);\n margin-bottom: 8px;\n}\n\n/* label */\n.label[data-v-682ce335] {\n color: #aaa;\n margin-bottom: 2px;\n}\n\n/* 操作按钮 */\n.actions[data-v-682ce335] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.btn[data-v-682ce335] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n text-align: center;\n font-family: Microsoft YaHei UI, Microsoft YaHei UI;\n font-weight: 400;\n cursor: pointer;\n}\n.btn .icon[data-v-682ce335] {\n width: 54px;\n height: 54px;\n}\n.btn.disabled[data-v-682ce335] {\n color: #666;\n cursor: not-allowed;\n}\n.btn.disabled .icon[data-v-682ce335] {\n opacity: 0.5;\n}\n.fontColor[data-v-682ce335] {\n color: var(--default-text-color);\n}";
2178
+ var css_248z$b = "@charset \"UTF-8\";\n.function-control-panel[data-v-9e2c85ea] {\n width: 100%;\n height: 100%;\n color: var(--text-color);\n font-size: 14px;\n overflow-x: hidden;\n overflow-y: auto;\n /* 隐藏滚动条 */\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.function-control-panel[data-v-9e2c85ea]::-webkit-scrollbar {\n display: none;\n}\n.function-control-panel .radio-group[data-v-9e2c85ea] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px;\n}\n.el-select-disabled[data-v-9e2c85ea] {\n opacity: 0.5;\n}\n\n/*/* 分割线 */\n.divider[data-v-9e2c85ea] {\n height: 1px;\n background: var(--border-color);\n margin-bottom: 8px;\n}\n\n/* label */\n.label[data-v-9e2c85ea] {\n color: #aaa;\n margin-bottom: 2px;\n}\n\n/* 操作按钮 */\n.actions[data-v-9e2c85ea] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.btn[data-v-9e2c85ea] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n text-align: center;\n font-family: Microsoft YaHei UI, Microsoft YaHei UI;\n font-weight: 400;\n cursor: pointer;\n}\n.btn .icon[data-v-9e2c85ea] {\n width: 54px;\n height: 54px;\n}\n.btn.disabled[data-v-9e2c85ea] {\n color: #666;\n cursor: not-allowed;\n}\n.btn.disabled .icon[data-v-9e2c85ea] {\n opacity: 0.5;\n}\n.fontColor[data-v-9e2c85ea] {\n color: var(--default-text-color);\n}";
2179
2179
  styleInject(css_248z$b);
2180
2180
 
2181
2181
  /* script */
@@ -2596,14 +2596,16 @@ var __vue_render__$a = function () {
2596
2596
  })
2597
2597
  : _vm._e(),
2598
2598
  _vm._v(" "),
2599
- _c("div", { staticClass: "btn", on: { click: _vm.refresh } }, [
2600
- _c("img", {
2601
- staticClass: "icon",
2602
- attrs: { src: _vm.refreshIcon, alt: "刷新" },
2603
- }),
2604
- _vm._v(" "),
2605
- _c("span", [_vm._v("刷新")]),
2606
- ]),
2599
+ _vm.toolBarConfig.refreshBtnShow !== false
2600
+ ? _c("div", { staticClass: "btn", on: { click: _vm.refresh } }, [
2601
+ _c("img", {
2602
+ staticClass: "icon",
2603
+ attrs: { src: _vm.refreshIcon, alt: "刷新" },
2604
+ }),
2605
+ _vm._v(" "),
2606
+ _c("span", [_vm._v("刷新")]),
2607
+ ])
2608
+ : _vm._e(),
2607
2609
  _vm._v(" "),
2608
2610
  _vm.toolBarConfig.exportBtnShow !== false
2609
2611
  ? _c(
@@ -3273,7 +3275,7 @@ __vue_render__$a._withStripped = true;
3273
3275
  /* style */
3274
3276
  const __vue_inject_styles__$a = undefined;
3275
3277
  /* scoped */
3276
- const __vue_scope_id__$a = "data-v-682ce335";
3278
+ const __vue_scope_id__$a = "data-v-9e2c85ea";
3277
3279
  /* module identifier */
3278
3280
  const __vue_module_identifier__$a = undefined;
3279
3281
  /* functional template */
@@ -6985,10 +6987,10 @@ var script$2 = {
6985
6987
  window.addEventListener("keyup", this.handleKeyUp);
6986
6988
  window.addEventListener("mousemove", this.resize);
6987
6989
  window.addEventListener("mouseup", this.stopResize);
6988
- // 初始化tooltip显示隐藏
6989
- this.showTooltip = this.formCache.displayType == "float";
6990
6990
  // 初始化大小变化监听器
6991
6991
  this.initResizeObserver();
6992
+ // 初始化tooltip显示隐藏
6993
+ this.showTooltip = this.formCache.displayType == "float";
6992
6994
  },
6993
6995
  beforeDestroy() {
6994
6996
  window.removeEventListener("keydown", this.handleKeyDown);
@@ -7050,6 +7052,12 @@ var script$2 = {
7050
7052
  this.startIndex = targetIndex - Math.ceil(this.windowSize / 2);
7051
7053
  this.updateLanesChartOption("", "series");
7052
7054
  },
7055
+ hiddenContextMenu() {
7056
+ const ctxRef = this.$refs.vueSimpleContextMenu;
7057
+ if (ctxRef) {
7058
+ ctxRef.hideContextMenu();
7059
+ }
7060
+ },
7053
7061
  // 将当前页面px转换为cm
7054
7062
  pxToCm() {
7055
7063
  const container = this.$refs.targetDom;
@@ -7061,13 +7069,21 @@ var script$2 = {
7061
7069
  return cm;
7062
7070
  },
7063
7071
  getXAxisRangeByHeader(lineInfo, validData = []) {
7064
- const headerMin = Number(lineInfo && lineInfo.min);
7065
- const headerMax = Number(lineInfo && lineInfo.max);
7066
- const dataMin = Math.floor(Math.min(...validData));
7067
- const dataMax = Math.ceil(Math.max(...validData));
7072
+ let headerMin = 0;
7073
+ let headerMax = 1;
7074
+ if(lineInfo && Object.prototype.hasOwnProperty.call(lineInfo, "min")){
7075
+ headerMin = Number(lineInfo.min);
7076
+ }else {
7077
+ headerMin = Math.floor(Math.min(...validData));
7078
+ }
7079
+ if(lineInfo && Object.prototype.hasOwnProperty.call(lineInfo, "max")){
7080
+ headerMax = Number(lineInfo.max);
7081
+ }else {
7082
+ headerMax = Math.ceil(Math.max(...validData));
7083
+ }
7068
7084
 
7069
- const min = Number.isFinite(headerMin) ? headerMin : Number.isFinite(dataMin) ? dataMin : 0;
7070
- const max = Number.isFinite(headerMax) ? headerMax : Number.isFinite(dataMax) ? dataMax : 0;
7085
+ const min = headerMin > 0 ? headerMin : 0;
7086
+ const max = headerMax > 0 ? headerMax : 1;
7071
7087
  return { min, max };
7072
7088
  },
7073
7089
  // 通过 laneId 切换指定泳道 x 轴类型(value/log)
@@ -7387,7 +7403,7 @@ var script$2 = {
7387
7403
  const headerKey = entry.target.textContent || entry.target.innerText || "unknown";
7388
7404
  const currentWidth = entry.contentRect.width;
7389
7405
  const cachedWidth = this.headerWidthCache[headerKey];
7390
-
7406
+ // console.log("headerKey", headerKey, "currentWidth", currentWidth, "cachedWidth", cachedWidth);
7391
7407
  // 只有当宽度实际变化时才触发
7392
7408
  if (cachedWidth === undefined || Math.abs(currentWidth - cachedWidth) > 1) {
7393
7409
  this.headerWidthCache[headerKey] = currentWidth;
@@ -7903,15 +7919,11 @@ var script$2 = {
7903
7919
  }
7904
7920
  }
7905
7921
  },
7906
- showContextMenu(event, item) {
7922
+ showContextMenu(event, item) {
7907
7923
  event.stopPropagation();
7924
+ this.$emit("showContextMenu", item);
7908
7925
  this.$refs.vueSimpleContextMenu.showMenu(event, item);
7909
- },
7910
- hiddenContextMenu() {
7911
- const ctxRef = this.$refs.vueSimpleContextMenu;
7912
- if (ctxRef) {
7913
- ctxRef.hideContextMenu();
7914
- }
7926
+
7915
7927
  },
7916
7928
  optionClicked(event) {
7917
7929
  const { option, item } = event;
@@ -7981,8 +7993,25 @@ var script$2 = {
7981
7993
  this.laneWidthOverrides = {};
7982
7994
  }
7983
7995
  this.$emit("template-change", this.currentTemplate);
7996
+ this.reobserveHeaders();
7984
7997
  this.updateLanesChartOption();
7985
7998
  },
7999
+ getFirstDataIndexItem(seriesData) {
8000
+ // 入参校验:确保是数组且非空
8001
+ if (!Array.isArray(seriesData) || seriesData.length === 0) {
8002
+ return null;
8003
+ }
8004
+
8005
+ // 遍历数组,找到第一个包含 dataIndex 的项
8006
+ for (const item of seriesData) {
8007
+ if (typeof item.dataIndex !== "undefined" && item.dataIndex !== null) {
8008
+ return item;
8009
+ }
8010
+ }
8011
+
8012
+ // 无匹配项返回 null
8013
+ return null;
8014
+ },
7986
8015
  getDefaultLaneChartOption() {
7987
8016
  const option = {
7988
8017
  backgroundColor: getCssVariable("--kd-lane-container-item-bg"),
@@ -8023,7 +8052,7 @@ var script$2 = {
8023
8052
  ],
8024
8053
  yAxis: [
8025
8054
  {
8026
- type: this.formCache.axisType == "time" ? "value" : "category",
8055
+ type: "value",
8027
8056
  inverse: true,
8028
8057
  boundaryGap: false,
8029
8058
  scale: true,
@@ -8074,18 +8103,37 @@ var script$2 = {
8074
8103
  formatter: (params) => {
8075
8104
  if (this.formCache.displayType == "header") {
8076
8105
  let dataIndexItem = (params.seriesData && params.seriesData[0] && params.seriesData[0].dataIndex) || null;
8106
+ // let dataIndexItem = this.getFirstDataIndexItem(params.seriesData);
8077
8107
  if (dataIndexItem !== null) {
8078
8108
  this.headerData = this.visibleData[dataIndexItem];
8109
+ // this.headerData = this.visibleData[dataIndexItem.dataIndex];
8079
8110
  } else {
8080
8111
  this.headerData = {};
8081
8112
  }
8082
8113
  }
8083
- // 时间轴模式:格式化时间戳为可读时间
8084
8114
  if (this.formCache.axisType == "time") {
8085
- // 需要显示年月日时分秒
8086
- return this.timestampToYMDHMS(params.value);
8115
+ return this.timestampToHms(params.value);
8116
+ } else {
8117
+ return params.value.toString();
8087
8118
  }
8088
- return params.value;
8119
+ // if (this.formCache.axisType == "time") {
8120
+ // // 时间轴模式:params.value 是时间戳
8121
+ // this.headerData =
8122
+ // this.visibleData.find(
8123
+ // (item) =>
8124
+ // this.toMillisecondTimestamp(item && item[this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]]) == params.value,
8125
+ // ) || {};
8126
+ // } else {
8127
+ // this.headerData =
8128
+ // this.visibleData.find((item) => item && item[this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]] == params.value) ||
8129
+ // {};
8130
+ // }
8131
+ // }
8132
+ // // 时间轴模式:格式化时间戳为可读时间
8133
+ // if (this.formCache.axisType == "time") {
8134
+ // return this.timestampToHms(params.value);
8135
+ // }
8136
+ // return params.value;
8089
8137
  },
8090
8138
  },
8091
8139
  },
@@ -8097,6 +8145,7 @@ var script$2 = {
8097
8145
  color: getCssVariable("---default-text-color"),
8098
8146
  },
8099
8147
  formatter: (series) => {
8148
+ // 根据seriesName去重,保留数值最大的项,或者在有缺失值时保留缺失值的项
8100
8149
  const uniqueSeries = series
8101
8150
  .filter((item) => item.seriesName !== "helper")
8102
8151
  .reduce((acc, current) => {
@@ -8152,15 +8201,14 @@ var script$2 = {
8152
8201
  const outerDiv = document.createElement("div");
8153
8202
  uniqueSeries.forEach((params) => {
8154
8203
  const { seriesName, value, color } = params;
8155
- if (seriesName == "helper") return;
8156
8204
  const innerDiv = document.createElement("div");
8157
8205
  innerDiv.style = "display: flex; align-items: center;";
8158
8206
  const markerDiv = document.createElement("div");
8159
8207
  markerDiv.style = `height: 10px; width:10px;font-size:10px; border-radius:8px; gap: 5px; background-color:${color}`;
8160
8208
  const textSpan = document.createElement("span");
8161
8209
  let xValue = value;
8162
- // 时间轴模式:value 是 [x, y] 格式,取 x 值
8163
- if (this.formCache.axisType == "time" && Array.isArray(value)) {
8210
+ // 时间轴和深度轴模式:value 是 [x, y] 格式,取 x 值
8211
+ if (Array.isArray(value)) {
8164
8212
  xValue = value[0];
8165
8213
  }
8166
8214
  if (xValue == undefined || xValue == null) {
@@ -8196,18 +8244,6 @@ var script$2 = {
8196
8244
 
8197
8245
  return `${h}:${m}:${s}`;
8198
8246
  },
8199
-
8200
- timestampToYMDHMS(timestamp) {
8201
- const date = new Date(timestamp);
8202
- const h = String(date.getHours()).padStart(2, "0");
8203
- const m = String(date.getMinutes()).padStart(2, "0");
8204
- const s = String(date.getSeconds()).padStart(2, "0");
8205
- const y = date.getFullYear();
8206
- const month = String(date.getMonth() + 1).padStart(2, "0");
8207
- const day = String(date.getDate()).padStart(2, "0");
8208
- return `${y}-${month}-${day} ${h}:${m}:${s}`;
8209
- },
8210
-
8211
8247
  toMillisecondTimestamp(time) {
8212
8248
  if (time === null || time === undefined) return Date.now();
8213
8249
  let timestamp = new Date(time).getTime();
@@ -8252,23 +8288,26 @@ var script$2 = {
8252
8288
 
8253
8289
  if (!lanes || lanes.length === 0) return;
8254
8290
 
8255
- // 深度轴数据
8256
8291
  let depthData = [];
8257
- // 时间轴数据
8292
+ let timestamps = [];
8293
+
8258
8294
  let yAxisMin = 0;
8259
8295
  let yAxisMax = 0;
8260
8296
 
8297
+ // 获取当前轴类型的键
8298
+ const axisKey =
8299
+ (this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]) ||
8300
+ (this.formCache.axisType === "time" ? "time" : "depth");
8301
+
8261
8302
  if (this.formCache.axisType == "time") {
8262
8303
  // 时间轴模式:使用毫秒时间戳
8263
- const timestamps = realTimeData.map((item) =>
8264
- this.toMillisecondTimestamp(item[this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]]),
8265
- );
8304
+ timestamps = realTimeData.map((item) => this.toMillisecondTimestamp(item[axisKey]));
8266
8305
  yAxisMin = Math.min(...timestamps);
8267
8306
  yAxisMax = Math.max(...timestamps);
8268
8307
  } else {
8269
- depthData = realTimeData.map(
8270
- (i) => +i[this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]],
8271
- );
8308
+ depthData = realTimeData.map((i) => +i[axisKey]);
8309
+ yAxisMin = Math.min(...depthData);
8310
+ yAxisMax = Math.max(...depthData);
8272
8311
  }
8273
8312
 
8274
8313
  const paramNameMap = {};
@@ -8319,24 +8358,32 @@ var script$2 = {
8319
8358
  }
8320
8359
  }
8321
8360
  } else {
8322
- option.yAxis[0].data = depthData;
8361
+ if (yAxisMin === yAxisMax) {
8362
+ yAxisMin = yAxisMin - 1;
8363
+ yAxisMax = yAxisMax + 1;
8364
+ }
8365
+ option.yAxis[0].min = yAxisMin;
8366
+ option.yAxis[0].max = yAxisMax;
8367
+ // 深度轴不需要 data 属性
8368
+ delete option.yAxis[0].data;
8323
8369
 
8324
8370
  // 深度轴自适应间隔:根据数据量计算合适的间隔
8325
- const dataCount = depthData.length;
8371
+ const depthRange = yAxisMax - yAxisMin;
8372
+ const dataCount = realTimeData.length;
8326
8373
  if (dataCount > 0) {
8327
8374
  // 根据数据量设置合适的间隔
8328
8375
  if (dataCount < 10) {
8329
- // 数据量较少,显示所有标签
8330
- option.yAxis[0].interval = 0;
8376
+ // 数据量较少,间隔可以小一些
8377
+ option.yAxis[0].interval = depthRange / 5;
8331
8378
  } else if (dataCount < 50) {
8332
8379
  // 数据量中等
8333
- option.yAxis[0].interval = Math.floor(dataCount / 10);
8380
+ option.yAxis[0].interval = depthRange / 10;
8334
8381
  } else if (dataCount < 100) {
8335
8382
  // 数据量较多
8336
- option.yAxis[0].interval = Math.floor(dataCount / 15);
8383
+ option.yAxis[0].interval = depthRange / 15;
8337
8384
  } else {
8338
8385
  // 数据量很多
8339
- option.yAxis[0].interval = Math.floor(dataCount / 20);
8386
+ option.yAxis[0].interval = depthRange / 20;
8340
8387
  }
8341
8388
  }
8342
8389
  }
@@ -8403,9 +8450,13 @@ var script$2 = {
8403
8450
  lane &&
8404
8451
  lane.lines &&
8405
8452
  lane.lines.forEach((lineInfo, lineIndex) => {
8406
- // if (lineInfo.isUsed === "0") return;
8407
8453
  let seriesData = [];
8408
8454
  let validData = [];
8455
+ // 获取当前轴类型的键
8456
+ const axisKey =
8457
+ (this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]) ||
8458
+ (this.formCache.axisType === "time" ? "time" : "depth");
8459
+
8409
8460
  if (this.formCache.axisType == "time") {
8410
8461
  // 时间轴模式:数据格式为 [x, y],其中 y 是时间戳
8411
8462
  let currentParam = this.params.find((p) => p.paramId == lineInfo.paramId);
@@ -8425,7 +8476,7 @@ var script$2 = {
8425
8476
  }
8426
8477
  }
8427
8478
  // 返回 [x, y] 格式,y 是时间戳
8428
- return [value, this.toMillisecondTimestamp(item[this.toolBarConfig.axisTypeList[this.formCache.axisType]])];
8479
+ return [value, this.toMillisecondTimestamp(item[axisKey])];
8429
8480
  });
8430
8481
  validData = seriesData.filter((v) => Number.isFinite(+v[0]));
8431
8482
  } else {
@@ -8446,9 +8497,10 @@ var script$2 = {
8446
8497
  });
8447
8498
  }
8448
8499
  }
8449
- return value;
8500
+ // 返回 [x, y] 格式,y 是深度值
8501
+ return [value, +item[axisKey]];
8450
8502
  });
8451
- validData = seriesData.filter((v) => Number.isFinite(+v));
8503
+ validData = seriesData.filter((v) => Number.isFinite(+v[0]));
8452
8504
  }
8453
8505
  const { min, max } = this.getXAxisRangeByHeader(lineInfo, validData);
8454
8506
 
@@ -8489,9 +8541,9 @@ var script$2 = {
8489
8541
  baseSeries.markLine = {
8490
8542
  symbol: "none",
8491
8543
  lineStyle: {
8492
- color: "red",
8544
+ color: getCssVariable("--default-text-color"),
8493
8545
  type: "dashed",
8494
- width: 2,
8546
+ width: 1,
8495
8547
  },
8496
8548
  label: {
8497
8549
  show: false,
@@ -8501,13 +8553,13 @@ var script$2 = {
8501
8553
  },
8502
8554
  data: this.markLineData
8503
8555
  .map((item, index) => {
8504
- // 时间轴模式:将深度值转换为时间戳
8556
+ // 尝试精确匹配
8505
8557
  const findItem = this.realTimeData.find((d) => d[this.toolBarConfig.axisTypeList[this.formCache.axisType]] == item);
8506
8558
  if (findItem) {
8507
8559
  if (this.formCache.axisType == "time") {
8508
8560
  return { yAxis: this.toMillisecondTimestamp(findItem[this.toolBarConfig.axisTypeList[this.formCache.axisType]]) };
8509
8561
  } else {
8510
- return { yAxis: findItem[this.toolBarConfig.axisTypeList[this.formCache.axisType]] + "" };
8562
+ return { yAxis: Number(findItem[this.toolBarConfig.axisTypeList[this.formCache.axisType]]) };
8511
8563
  }
8512
8564
  } else {
8513
8565
  // 精确匹配失败,找到最接近的深度值
@@ -8541,7 +8593,7 @@ var script$2 = {
8541
8593
  // ===== 面积图 =====
8542
8594
  if (lineInfo.lineType === "area") {
8543
8595
  // 只对时间轴模式生效
8544
- if (this.formCache.axisType == "time" && seriesData.length > 0) {
8596
+ if (seriesData.length > 0) {
8545
8597
  // 找到第一个有效的数据点
8546
8598
  const firstValidPoint = seriesData.find((point) => Number.isFinite(+point[0]));
8547
8599
  if (firstValidPoint) {
@@ -8577,13 +8629,18 @@ var script$2 = {
8577
8629
 
8578
8630
  colors.push(color);
8579
8631
  });
8632
+ // 获取当前轴类型的键
8633
+ const axisKey =
8634
+ (this.toolBarConfig.axisTypeList && this.toolBarConfig.axisTypeList[this.formCache.axisType]) ||
8635
+ (this.formCache.axisType === "time" ? "time" : "depth");
8636
+
8580
8637
  if (series.length > 0 && this.formCache.axisType == "depth") {
8581
8638
  let min = Math.max(...lane.lines.map((item) => this.getXAxisRangeByHeader(item).min));
8582
- // 兜底
8639
+ // 兜底:深度轴模式使用 [x, y] 格式
8583
8640
  series.unshift({
8584
8641
  name: "helper",
8585
8642
  type: "line",
8586
- data: realTimeData.map(() => min),
8643
+ data: realTimeData.map((item) => [min, +item[axisKey]]),
8587
8644
  lineStyle: {
8588
8645
  opacity: 0,
8589
8646
  },
@@ -8596,10 +8653,7 @@ var script$2 = {
8596
8653
  series.unshift({
8597
8654
  name: "helper",
8598
8655
  type: "line",
8599
- data: realTimeData.map((item) => [
8600
- min,
8601
- this.toMillisecondTimestamp(item[this.toolBarConfig.axisTypeList[this.formCache.axisType]]),
8602
- ]),
8656
+ data: realTimeData.map((item) => [min, this.toMillisecondTimestamp(item[axisKey])]),
8603
8657
  lineStyle: {
8604
8658
  opacity: 0,
8605
8659
  },
@@ -8624,14 +8678,6 @@ var script$2 = {
8624
8678
  } catch (e) {
8625
8679
  console.error(e);
8626
8680
  this.clearEcharts();
8627
- this.realTimeDataLoading = false;
8628
- } finally {
8629
- // 延迟重置标记,给ECharts足够的时间完成渲染
8630
- setTimeout(() => {
8631
- this.isUpdatingChart = false;
8632
- // 图表更新后重新监听车道头部元素
8633
- this.reobserveHeaders();
8634
- }, 100);
8635
8681
  }
8636
8682
  },
8637
8683
  async clearEcharts() {
@@ -8756,44 +8802,15 @@ var script$2 = {
8756
8802
  const { sortOrder = "asc" } = options;
8757
8803
  const newDataArr = Array.isArray(newData) ? newData : [newData];
8758
8804
  let resultData = JSON.parse(JSON.stringify(existingData));
8759
-
8760
- // 检查两个对象是否所有字段都相同
8761
- const isObjectsEqual = (obj1, obj2) => {
8762
- const keys1 = Object.keys(obj1);
8763
- const keys2 = Object.keys(obj2);
8764
-
8765
- if (keys1.length !== keys2.length) {
8766
- return false;
8767
- }
8768
-
8769
- for (const key of keys1) {
8770
- if (obj1[key] !== obj2[key]) {
8771
- return false;
8772
- }
8773
- }
8774
-
8775
- return true;
8776
- };
8777
-
8778
8805
  newDataArr.forEach((newItem) => {
8779
8806
  if (!newItem || !newItem[uniqueKey]) return;
8780
-
8781
- // 首先根据 uniqueKey 查找匹配项
8782
- const itemsWithSameKey = resultData.filter((item) => item[uniqueKey] === newItem[uniqueKey]);
8783
-
8784
- // 检查是否存在完全相同的项
8785
- const hasExactDuplicate = itemsWithSameKey.some((item) => isObjectsEqual(item, newItem));
8786
-
8787
- if (hasExactDuplicate) {
8788
- // 如果存在完全相同的项,则不做操作
8789
- return;
8807
+ const duplicateIndex = resultData.findIndex((item) => item[uniqueKey] === newItem[uniqueKey]);
8808
+ if (duplicateIndex > -1) {
8809
+ resultData[duplicateIndex] = newItem;
8810
+ } else {
8811
+ resultData.push(newItem);
8790
8812
  }
8791
-
8792
- // 如果没有完全相同的项,则添加到结果中
8793
- resultData.push(newItem);
8794
8813
  });
8795
-
8796
- // 去重后排序
8797
8814
  resultData.sort((a, b) => {
8798
8815
  const valA = a[uniqueKey];
8799
8816
  const valB = b[uniqueKey];
@@ -8807,8 +8824,7 @@ var script$2 = {
8807
8824
 
8808
8825
  return resultData;
8809
8826
  },
8810
-
8811
- // 根据 uniqueKey 去重并排序(只考虑 uniqueKey)
8827
+ // 根据 uniqueKey 去重并排序(只考虑 uniqueKey)
8812
8828
  deduplicateByUniqueKey(existingData, newData, uniqueKey, options = {}) {
8813
8829
  // 处理默认配置
8814
8830
  const { sortOrder = "asc" } = options;
@@ -9110,6 +9126,7 @@ var script$2 = {
9110
9126
  handler(newVal) {
9111
9127
  this.$nextTick(() => {
9112
9128
  this.markLineData = newVal;
9129
+ this.updateLanesChartOption(null , 'series');
9113
9130
  });
9114
9131
  },
9115
9132
  deep: true,
@@ -9149,15 +9166,13 @@ var script$2 = {
9149
9166
  const firstValue = first && first[axisKey];
9150
9167
  const lastValue = last && last[axisKey];
9151
9168
 
9152
- const newParams = { firstValue, lastValue, settings: this.formCache };
9169
+ const newParams = { firstValue, lastValue, settings: cloneDeep(this.formCache) };
9153
9170
 
9154
9171
  // 比较是否与上次触发时的参数相同
9155
- if (
9156
- this.lastVisibleDataChangeParams &&
9157
- this.lastVisibleDataChangeParams.firstValue === firstValue &&
9158
- this.lastVisibleDataChangeParams.lastValue === lastValue &&
9159
- JSON.stringify(this.lastVisibleDataChangeParams.settings) === JSON.stringify(newParams.settings)
9160
- ) {
9172
+ if (this.lastVisibleDataChangeParams &&
9173
+ this.lastVisibleDataChangeParams.firstValue === firstValue &&
9174
+ this.lastVisibleDataChangeParams.lastValue === lastValue &&
9175
+ JSON.stringify(this.lastVisibleDataChangeParams.settings) === JSON.stringify(newParams.settings)) {
9161
9176
  return;
9162
9177
  }
9163
9178
 
@@ -9226,7 +9241,7 @@ var script$2 = {
9226
9241
  },
9227
9242
  };
9228
9243
 
9229
- var css_248z$3 = ".kd-lane-chart-container[data-v-27c6a5a2] {\n height: 100%;\n width: 100%;\n overflow: hidden;\n position: relative;\n border: 1px solid var(--kd-lane-container-border-color, #333);\n display: flex;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container[data-v-27c6a5a2] {\n height: 100%;\n min-width: 0;\n z-index: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle[data-v-27c6a5a2] {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n z-index: 10;\n background-color: transparent;\n transition: background-color 0.2s;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle[data-v-27c6a5a2]:hover,\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle[data-v-27c6a5a2]:hover {\n background-color: var(--resizer-bg-color);\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle.kd-lane-resize-handle-left[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle.kd-lane-resize-handle-left[data-v-27c6a5a2] {\n left: 0;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle.kd-lane-resize-handle-right[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle.kd-lane-resize-handle-right[data-v-27c6a5a2] {\n right: -2px;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header[data-v-27c6a5a2] {\n max-height: 40%;\n overflow: hidden;\n z-index: 2;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2] {\n display: flex;\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2] ::-webkit-scrollbar,\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2] ::-webkit-scrollbar {\n display: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-27c6a5a2] {\n flex-direction: column;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container-echart[data-v-27c6a5a2] {\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container-echart .kd-lane-chart-lane-container-echart-content[data-v-27c6a5a2] {\n height: 100%;\n overflow: hidden;\n}\n.kd-lane-chart-container .border-left[data-v-27c6a5a2] {\n border-left: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .border-bottom[data-v-27c6a5a2] {\n border-bottom: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .border-right[data-v-27c6a5a2] {\n border-right: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .kd-lane-chart-container-draw-area[data-v-27c6a5a2] {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n border: none;\n}";
9244
+ var css_248z$3 = ".kd-lane-chart-container[data-v-5a97fc52] {\n height: 100%;\n width: 100%;\n overflow: hidden;\n position: relative;\n border: 1px solid var(--kd-lane-container-border-color, #333);\n display: flex;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container[data-v-5a97fc52] {\n height: 100%;\n min-width: 0;\n z-index: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle[data-v-5a97fc52] {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n z-index: 10;\n background-color: transparent;\n transition: background-color 0.2s;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle[data-v-5a97fc52]:hover,\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle[data-v-5a97fc52]:hover {\n background-color: var(--resizer-bg-color);\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle.kd-lane-resize-handle-left[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle.kd-lane-resize-handle-left[data-v-5a97fc52] {\n left: 0;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-resize-handle.kd-lane-resize-handle-right[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-resize-handle.kd-lane-resize-handle-right[data-v-5a97fc52] {\n right: -2px;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header[data-v-5a97fc52] {\n max-height: 30%;\n overflow: hidden;\n z-index: 2;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52] {\n display: flex;\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52] ::-webkit-scrollbar,\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52] ::-webkit-scrollbar {\n display: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52],\n.kd-lane-chart-container .kd-lane-chart-lane-slot-container .kd-lane-chart-lane-header .header-list-gap[data-v-5a97fc52] {\n flex-direction: column;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container-echart[data-v-5a97fc52] {\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-lane-chart-container .kd-lane-chart-lane-container-echart .kd-lane-chart-lane-container-echart-content[data-v-5a97fc52] {\n height: 100%;\n overflow: hidden;\n}\n.kd-lane-chart-container .border-left[data-v-5a97fc52] {\n border-left: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .border-bottom[data-v-5a97fc52] {\n border-bottom: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .border-right[data-v-5a97fc52] {\n border-right: 1px solid var(--kd-lane-container-border-color, #333);\n}\n.kd-lane-chart-container .kd-lane-chart-container-draw-area[data-v-5a97fc52] {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n border: none;\n}";
9230
9245
  styleInject(css_248z$3);
9231
9246
 
9232
9247
  /* script */
@@ -9291,8 +9306,7 @@ var __vue_render__$2 = function () {
9291
9306
  _c(
9292
9307
  "div",
9293
9308
  {
9294
- staticClass:
9295
- "kd-lane-chart-lane-header header-content-area",
9309
+ staticClass: "kd-lane-chart-lane-header",
9296
9310
  class: { "border-bottom": true },
9297
9311
  style: _vm.slotHeaderStyle,
9298
9312
  },
@@ -9401,8 +9415,7 @@ var __vue_render__$2 = function () {
9401
9415
  _c(
9402
9416
  "draggable",
9403
9417
  {
9404
- staticClass:
9405
- "header-list-gap header-content-area",
9418
+ staticClass: "header-list-gap",
9406
9419
  style: { gap: _vm.itemGap + "px" },
9407
9420
  attrs: {
9408
9421
  animation: 200,
@@ -9557,6 +9570,7 @@ var __vue_render__$2 = function () {
9557
9570
  _c(
9558
9571
  "el-dialog",
9559
9572
  {
9573
+ staticClass: "function-control-panel-dialog",
9560
9574
  attrs: { title: "泳道模板设置", visible: _vm.curveConfigVisible },
9561
9575
  on: {
9562
9576
  "update:visible": function ($event) {
@@ -9595,7 +9609,7 @@ __vue_render__$2._withStripped = true;
9595
9609
  /* style */
9596
9610
  const __vue_inject_styles__$2 = undefined;
9597
9611
  /* scoped */
9598
- const __vue_scope_id__$2 = "data-v-27c6a5a2";
9612
+ const __vue_scope_id__$2 = "data-v-5a97fc52";
9599
9613
  /* module identifier */
9600
9614
  const __vue_module_identifier__$2 = undefined;
9601
9615
  /* functional template */
@@ -9864,29 +9878,29 @@ var script = {
9864
9878
  };
9865
9879
  },
9866
9880
  created() {
9867
- this.depthTimeChartData = this.WellBitDepthTimePlotConfig && this.WellBitDepthTimePlotConfig.data || [];
9881
+ this.depthTimeChartData = (this.WellBitDepthTimePlotConfig && this.WellBitDepthTimePlotConfig.data) || [];
9868
9882
  // 初始化数据
9869
- this.initialFormCache = cloneDeep(this.toolBarConfig && this.toolBarConfig.form || {});
9870
- this.formCache = cloneDeep(this.toolBarConfig && this.toolBarConfig.form || {});
9883
+ this.initialFormCache = cloneDeep((this.toolBarConfig && this.toolBarConfig.form) || {});
9884
+ this.formCache = cloneDeep((this.toolBarConfig && this.toolBarConfig.form) || {});
9871
9885
  // 初始化curveDatas副本
9872
9886
  this.cachedCurveDatas = cloneDeep(this.curveDatas || {});
9873
9887
  // 缓存初始化时的curveDatas
9874
9888
  this.initialCurveDatas = cloneDeep(this.curveDatas || {});
9875
9889
  },
9876
9890
  mounted() {
9877
- let form = cloneDeep(this.toolBarConfig && this.toolBarConfig.form || {});
9891
+ let form = cloneDeep((this.toolBarConfig && this.toolBarConfig.form) || {});
9878
9892
  this.config = form.axisType === "depth" ? this.depthConfig : this.timeConfig;
9879
9893
  this.showChartContainer = true;
9880
9894
  // 初始化:获取容器宽度并转换百分比为像素
9881
9895
  this.$nextTick(() => {
9882
- this.containerWidth = this.$refs.container && this.$refs.container.offsetWidth || 800;
9883
- this.initWidth(); // 转换百分比为像素
9884
- });
9896
+ this.containerWidth = (this.$refs.container && this.$refs.container.offsetWidth) || 800;
9897
+ this.initWidth(); // 转换百分比为像素
9898
+ });
9885
9899
 
9886
9900
  // 监听窗口大小变化,更新容器宽度
9887
9901
  window.addEventListener("resize", () => {
9888
9902
  this.$nextTick(() => {
9889
- this.containerWidth = this.$refs.container && this.$refs.container.offsetWidth || 800;
9903
+ this.containerWidth = (this.$refs.container && this.$refs.container.offsetWidth) || 800;
9890
9904
  });
9891
9905
  });
9892
9906
  },
@@ -9900,11 +9914,15 @@ var script = {
9900
9914
  dialogFunction(data) {
9901
9915
  if (data.type === 1) {
9902
9916
  // 井深段
9903
- this.$refs.functionControlPanel.form.dataType = "history";
9917
+ if (this.$refs.functionControlPanel) {
9918
+ this.$refs.functionControlPanel.form.dataType = "history";
9919
+ }
9904
9920
  this.formCache.dataType = "history";
9905
9921
  } else if (data.type === 2) {
9906
9922
  // 时间段
9907
- this.$refs.functionControlPanel.form.dataType = "history";
9923
+ if (this.$refs.functionControlPanel) {
9924
+ this.$refs.functionControlPanel.form.dataType = "history";
9925
+ }
9908
9926
  this.formCache.dataType = "history";
9909
9927
  } else if (data.type === 3) ;
9910
9928
  },
@@ -9925,7 +9943,9 @@ var script = {
9925
9943
  },
9926
9944
  // 新增:跳转到下一个标记线
9927
9945
  jumpToNextMarkLine() {
9928
- this.$refs.chartContainer.jumpToNextMarkLine();
9946
+ if (this.$refs.chartContainer) {
9947
+ this.$refs.chartContainer.jumpToNextMarkLine();
9948
+ }
9929
9949
  },
9930
9950
  // 新增:刷新数据,重置为初始化时的数据
9931
9951
  refresh() {
@@ -9965,7 +9985,9 @@ var script = {
9965
9985
  // 新增:更新scale缓存
9966
9986
  updateScale(newVal) {
9967
9987
  this.formCache.scale = newVal;
9968
- this.$refs.functionControlPanel.form.scale = newVal;
9988
+ if (this.$refs.functionControlPanel) {
9989
+ this.$refs.functionControlPanel.form.scale = newVal;
9990
+ }
9969
9991
  },
9970
9992
  /**
9971
9993
  * 工具函数:百分比转像素
@@ -10040,7 +10062,7 @@ var script = {
10040
10062
  const dx = e.clientX - this.startX;
10041
10063
  const min = this.minWidth;
10042
10064
 
10043
- const containerWidth = this.$refs.container && this.$refs.container.offsetWidth - this.lineWidth || 0;
10065
+ const containerWidth = (this.$refs.container && this.$refs.container.offsetWidth - this.lineWidth) || 0;
10044
10066
 
10045
10067
  // ✅ 拖拽第1条分隔线(panel1 和 panel2)
10046
10068
  if (this.currentResizer === 1) {
@@ -10130,7 +10152,9 @@ var script = {
10130
10152
  this.initWidth();
10131
10153
  }
10132
10154
  if (newVal.form !== oldVal.form) {
10133
- this.$refs.functionControlPanel.updateForm(newVal.form);
10155
+ if (this.$refs.functionControlPanel) {
10156
+ this.$refs.functionControlPanel.updateForm(newVal.form);
10157
+ }
10134
10158
  }
10135
10159
  }
10136
10160
  },
@@ -10154,29 +10178,37 @@ var script = {
10154
10178
  if (JSON.stringify(this.initialCurveDatas) === "{}") {
10155
10179
  this.initialCurveDatas = cloneDeep(newVal || {});
10156
10180
  }
10157
- if (Object.prototype.hasOwnProperty.call(newVal, "dataType")) {
10181
+ if (
10182
+ Object.prototype.hasOwnProperty.call(newVal, "dataType") &&
10183
+ newVal.dataType !== this.formCache.dataType &&
10184
+ newVal.dataType !== "" &&
10185
+ newVal.dataType !== undefined &&
10186
+ newVal.dataType !== null
10187
+ ) {
10158
10188
  this.formCache.dataType = newVal.dataType;
10159
- this.$refs.functionControlPanel.form.dataType = newVal.dataType;
10189
+ if (this.$refs.functionControlPanel) {
10190
+ this.$refs.functionControlPanel.form.dataType = newVal.dataType;
10191
+ }
10160
10192
  }
10161
10193
  this.cachedCurveDatas = cloneDeep(newVal || {});
10162
10194
  }
10163
10195
  },
10164
10196
  deep: true,
10165
10197
  },
10166
- themeName:{
10167
- handler(newVal){
10198
+ themeName: {
10199
+ handler(newVal) {
10168
10200
  document.body.setAttribute("data-theme", newVal);
10169
10201
  },
10170
- deep:true,
10171
- immediate:true
10172
- }
10202
+ deep: true,
10203
+ immediate: true,
10204
+ },
10173
10205
  },
10174
10206
  };
10175
10207
 
10176
10208
  var css_248z$1 = "@charset \"UTF-8\";\n[data-theme=dark] {\n --bg-color: #1e1e1e;\n --card-color: #252526;\n --card-border-color: #4b4b4b;\n --card-label-color: #d6d6d6;\n --card-value-color: #ffffff;\n --panel-item-bg-color: #1e1e1e;\n --resizer-bg-color: rgb(177, 177, 177, 0.4);\n --panel-item-border-color: #4b4b4b;\n --default-text-color: #ffffff;\n --radio-border-color: #4b4b4b;\n --radio-checked-border-color: #f86c59;\n --radio-checked-color: #f86c59;\n --radio-checked-text-color: #ffffff;\n --radio-checked-border-color: #f86c59;\n --split-line-color: #4b4b4b;\n /* 边框颜色 */\n --border-color: #4b4b4b;\n --label-float-bg-color: rgba(255, 255, 255, 0.1);\n --slider-gradient-start: #333333;\n --slider-gradient-end: #656668;\n --slider-gradient-color: linear-gradient(0deg, #333333 0%, #656668 100%);\n --slider-content-color: #f86c59;\n --tooltip-bg-color: rgb(51, 51, 51,0.8);\n --kd-lane-container-border-color: #4b4b4b;\n --kd-lane-container-header-item-color: #ffffff;\n --kd-lane-container-header-item-warning-color: rgba(248, 108, 89, 0.6);\n --kd-lane-container-header-bg: #333333;\n --kd-lane-container-item-bg: #252526;\n --kd-lane-container-item-line-color: #4b4b4b66;\n --select-hover-bg-color: #333333;\n --select-selected-text-color: #ffcc33;\n --dialog-header: #333333;\n --dialog-button-default: #252526;\n --dialog-button-disabled-text: #ffffff;\n --in-range-text-color: #ffffff;\n --dialog-tree-text-color: #ffffff;\n}\n[data-theme=white] {\n --bg-color: #ffffff;\n --card-color: #ffffff;\n --card-border-color: #C9C9C9;\n --card-label-color: #666666;\n --card-value-color: #333333;\n --panel-item-bg-color: #ffffff;\n --resizer-bg-color: rgb(177, 177, 177,.4);\n --panel-item-border-color: #C9C9C9;\n --default-text-color: #333333;\n --radio-border-color: #C9C9C9;\n --radio-checked-border-color: #EC4521;\n --radio-checked-color: #EC4521;\n --radio-checked-text-color: #000000;\n --radio-checked-border-color: #EC4521;\n --split-line-color: #C9C9C9;\n /* 边框颜色 */\n --border-color: #C9C9C9;\n --label-float-bg-color: rgba(27, 79, 217, 0.1);\n --slider-gradient-start: #B0C2F5;\n --slider-gradient-end: #DBE5FF;\n --slider-gradient-color: linear-gradient(0deg, #B0C2F5 0%, #DBE5FF 100%);\n --slider-content-color: #EC4521;\n --tooltip-bg-color: rgba(246, 247, 248, 0.8);\n --kd-lane-container-border-color: #C9C9C9;\n --kd-lane-container-header-item-color: #333333;\n --kd-lane-container-header-item-warning-color: rgba(200, 23, 29, 0.6);\n --kd-lane-container-header-bg: #ecf4ff;\n --kd-lane-container-item-bg: #eff3ff;\n --kd-lane-container-item-line-color: #dddddd;\n --select-hover-bg-color: #E0E9FE;\n --select-selected-text-color: #1B4FD9;\n --dialog-header:#1B4FD9;\n --dialog-header-text-color: #ffffff;\n --dialog-button-default:#ffffff;\n --dialog-button-disabled-text: #FFFFFF;\n --in-range-text-color: #ffffff;\n --dialog-tree-text-color: #ffffff;\n}\n[data-theme=gray] {\n --bg-color: #ffffff;\n --card-color: #f6f7f8;\n --card-border-color: #b1b1b1;\n --card-label-color: #666666;\n --card-value-color: #333333;\n --panel-item-bg-color: #ffffff;\n --resizer-bg-color: rgb(177, 177, 177,.4);\n --panel-item-border-color: #b1b1b1;\n --default-text-color: #333333;\n --radio-border-color: #b1b1b1;\n --radio-checked-border-color: #f86c59;\n --radio-checked-color: #f86c59;\n --radio-checked-text-color: #000000;\n --radio-checked-border-color: #f86c59;\n --split-line-color: #b1b1b1;\n /* 边框颜色 */\n --border-color: #b1b1b1;\n --label-float-bg-color: rgba(128, 128, 128, 0.1);\n --slider-gradient-start: #a6a6a6;\n --slider-gradient-end: #dfdfdf;\n --slider-gradient-color: linear-gradient(0deg, #a6a6a6 0%, #dfdfdf 100%);\n --slider-content-color: #f86c59;\n --tooltip-bg-color: rgba(246, 247, 248, 0.8);\n --kd-lane-container-border-color: #b1b1b1;\n --kd-lane-container-header-item-color: #333333;\n --kd-lane-container-header-item-warning-color: rgba(177, 42, 39,0.6);\n --kd-lane-container-header-bg: #eeeeee;\n --kd-lane-container-item-bg: #f6f7f8;\n --kd-lane-container-item-line-color: #dddddd;\n --select-hover-bg-color: #dfdfdf;\n --select-selected-text-color: #ffcc33;\n --dialog-header:#EBEBEB;\n --dialog-button-default:#f6f7f8;\n --dialog-button-disabled-text: #ffffff;\n --in-range-text-color: #333333;\n --dialog-tree-text-color: #333333;\n}\n\n/* 下拉框 */\n.kd-curve-2d-select-popup {\n background: var(--bg-color) !important;\n border: 1px solid var(--border-color) !important;\n /* 列表容器(关键) */\n}\n.kd-curve-2d-select-popup .el-scrollbar__wrap {\n margin-bottom: 0 !important;\n margin-right: 0 !important;\n background: var(--bg-color) !important;\n /* 隐藏滚动条 */\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-curve-2d-select-popup .el-scrollbar__wrap::-webkit-scrollbar {\n display: none;\n}\n.kd-curve-2d-select-popup {\n /* 每一项(默认) */\n}\n.kd-curve-2d-select-popup .el-select-dropdown__item {\n background: var(--bg-color) !important;\n color: var(--default-text-color) !important;\n /* hover */\n}\n.kd-curve-2d-select-popup .el-select-dropdown__item.hover, .kd-curve-2d-select-popup .el-select-dropdown__item:hover {\n background: var(--select-hover-bg-color) !important;\n color: var(--default-text-color) !important;\n}\n.kd-curve-2d-select-popup .el-select-dropdown__item.selected {\n background: var(--bg-color) !important; /* 不要灰色 */\n color: var(--select-selected-text-color) !important; /* 高亮文字(可选) */\n font-weight: bold;\n}\n.kd-curve-2d-select-popup .el-select-dropdown__item.selected.hover, .kd-curve-2d-select-popup .el-select-dropdown__item.selected:hover {\n background: var(--select-hover-bg-color) !important;\n}\n.kd-curve-2d-select-popup {\n /* 三角箭头 */\n}\n.kd-curve-2d-select-popup[x-placement^=bottom] .popper__arrow {\n border-bottom-color: var(--border-color) !important;\n}\n.kd-curve-2d-select-popup[x-placement^=bottom] .popper__arrow::after {\n border-bottom-color: var(--bg-color) !important;\n}\n.kd-curve-2d-select-popup[x-placement^=top] .popper__arrow {\n border-top-color: var(--border-color) !important;\n}\n.kd-curve-2d-select-popup[x-placement^=top] .popper__arrow::after {\n border-top-color: var(--bg-color) !important;\n}\n.kd-curve-2d-select-popup .el-time-panel {\n background: var(--bg-color) !important;\n box-shadow: 0 2px 12px 0 transparent;\n border: 1px solid var(--border-color);\n}\n.kd-curve-2d-select-popup .el-time-panel .el-time-panel__btn {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-time-panel .el-time-spinner__item {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-time-panel .el-time-spinner__item.active:not(.disabled) {\n color: var(--select-selected-text-color);\n font-weight: bold;\n}\n.kd-curve-2d-select-popup .el-time-panel .el-time-panel__footer {\n border-top: 1px solid var(--border-color);\n}\n.kd-curve-2d-select-popup .el-time-panel .el-time-spinner__item:hover:not(.disabled):not(.active) {\n background: var(--select-hover-bg-color);\n}\n.kd-curve-2d-select-popup .el-color-picker__trigger {\n border: 1px solid var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-color-picker__panel {\n background: var(--bg-color) !important;\n border: 1px solid var(--dialog-header);\n border-radius: 0px;\n}\n.kd-curve-2d-select-popup .el-color-picker__panel .el-button--text {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-color-picker__panel .el-button--default {\n background: var(--dialog-button-default);\n color: var(--default-text-color);\n border: none;\n border-radius: 0px;\n}\n.kd-curve-2d-select-popup .el-color-picker__panel .el-button.is-plain:hover {\n background: var(--dialog-button-default);\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper {\n background: var(--bg-color);\n border: 1px solid var(--dialog-header);\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-input__inner {\n background: var(--bg-color) !important;\n border: 1px solid var(--border-color) !important;\n color: var(--text-color) !important;\n height: 32px !important;\n line-height: 32px !important;\n box-sizing: border-box;\n border-radius: 0px;\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-picker__header-label {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-picker__header-label:hover {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-range-picker__time-header > .el-icon-arrow-right {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-button--text {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-picker-panel__icon-btn {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-range-picker__time-header {\n border-bottom: 1px solid var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-range-picker__content.is-left {\n border-right: 1px solid var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table th {\n border-bottom: 1px solid var(--dialog-header);\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.today span {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.available:hover {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.next-month,\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.prev-month {\n color: var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.available {\n color: var(--default-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.available.in-range {\n color: var(--in-range-text-color) !important;\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.end-date span,\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.start-date span {\n background: var(--select-selected-text-color);\n}\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.in-range div,\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table td.in-range div:hover,\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table.is-week-mode .el-date-table__row.current div,\n.kd-curve-2d-select-popup .el-picker-panel__body-wrapper .el-date-table.is-week-mode .el-date-table__row:hover div {\n background: var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-picker-panel__footer {\n background: var(--bg-color);\n border-top: 1px solid var(--dialog-header);\n}\n.kd-curve-2d-select-popup .el-picker-panel__footer .el-button--default {\n background: var(--dialog-button-default);\n color: var(--default-text-color);\n border: none;\n border-radius: 0px;\n}\n.kd-curve-2d-select-popup .el-picker-panel__footer .el-button.is-disabled.is-plain,\n.kd-curve-2d-select-popup .el-picker-panel__footer .el-button.is-disabled.is-plain:focus,\n.kd-curve-2d-select-popup .el-picker-panel__footer .el-button.is-disabled.is-plain:hover {\n background: var(--dialog-button-default);\n color: var(--dialog-button-disabled-text);\n}\n.kd-curve-2d-select-popup .el-picker-panel__footer .el-button.is-disabled.is-plain {\n background: var(--dialog-button-default);\n color: var(--dialog-button-disabled-text) !important;\n}\n.kd-curve-2d-select-popup .el-popper[x-placement^=bottom] .popper__arrow::after {\n border-bottom-color: var(--bg-color) !important;\n}\n.kd-curve-2d-container {\n /* radio 自定义样式 */\n}\n.kd-curve-2d-container .el-radio {\n display: flex;\n align-items: center;\n vertical-align: middle;\n color: var(--radio-default-text-color);\n font-family: Microsoft YaHei UI, Microsoft YaHei UI;\n font-size: 14px;\n}\n.kd-curve-2d-container .el-radio__inner {\n width: 14px;\n height: 14px;\n background: transparent;\n border: 1px solid var(--radio-border-color);\n}\n.kd-curve-2d-container .el-radio__input.is-checked .el-radio__inner {\n border-color: var(--radio-checked-border-color);\n background: transparent;\n}\n.kd-curve-2d-container .el-radio__input.is-disabled .el-radio__inner {\n background-color: transparent;\n border-color: var(--radio-border-color);\n}\n.kd-curve-2d-container .el-radio__inner::after {\n width: 7px;\n height: 7px;\n background: var(--radio-checked-color);\n}\n.kd-curve-2d-container .el-radio.is-checked .el-radio__label {\n color: var(--radio-checked-text-color);\n font-weight: bold;\n}\n.kd-curve-2d-container {\n /* select */\n}\n.kd-curve-2d-container .el-input__inner {\n background: var(--bg-color) !important;\n border: 1px solid var(--border-color) !important;\n color: var(--text-color) !important;\n height: 32px !important;\n line-height: 32px !important;\n box-sizing: border-box;\n border-radius: 0px;\n}\n.kd-curve-2d-container {\n /* 下拉箭头 */\n}\n.kd-curve-2d-container .el-select .el-input__suffix i {\n display: none !important;\n}\n.kd-curve-2d-container .el-select .el-input__suffix {\n right: 0;\n width: 28px;\n height: 32px !important;\n line-height: 32px !important;\n background: var(--slider-gradient-color);\n display: flex;\n align-items: center;\n justify-content: center;\n border-left: 1px solid var(--border-color);\n}\n.kd-curve-2d-container .el-select .el-input__suffix::after {\n content: \"\";\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n border-top: 6px solid var(--slider-content-color); /* 橙色三角 */\n}\n.kd-curve-2d-container .el-select .el-input__suffix::after {\n transition: transform 0.2s ease;\n}\n.kd-curve-2d-container .el-select .el-input.is-focus .el-input__suffix::after {\n transform: rotate(180deg);\n}\n.kd-curve-2d-container .el-dialog {\n border: 1px solid var(--card-border-color);\n}\n.kd-curve-2d-container .el-dialog .el-form-item__label {\n color: var(--default-text-color);\n font-size: 14px;\n}\n.kd-curve-2d-container .el-dialog .el-dialog__headerbtn {\n top: 11px;\n width: 24px;\n height: 24px;\n background: linear-gradient(270deg, #c73521 0%, #f86c59 100%);\n border-radius: 100px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.kd-curve-2d-container .el-dialog .el-dialog__headerbtn .el-dialog__close {\n color: #fff;\n font-size: 14px;\n font-weight: 700;\n}\n.kd-curve-2d-container .el-button {\n border-radius: 0px;\n border: none;\n}\n.kd-curve-2d-container .el-button--primary {\n background-image: linear-gradient(to bottom, #2057ea, #12338d);\n}\n.kd-curve-2d-container .el-button--default {\n background: var(--dialog-button-default);\n color: var(--default-text-color);\n}\n.kd-curve-2d-container .el-button--primary.is-disabled {\n background-image: linear-gradient(to bottom, #2f5ede, #1e3677);\n color: var(--dialog-button-disabled-text);\n}\n.kd-curve-2d-container .el-tabs .el-tabs__nav-wrap::after {\n background-color: var(--card-border-color);\n}\n.kd-curve-2d-container .el-tabs .el-tabs__item {\n color: var(--default-text-color);\n}\n.kd-curve-2d-container .el-tabs .el-tabs__item.is-active {\n color: var(--select-selected-text-color);\n}\n.kd-curve-2d-container .el-tabs .el-tabs__active-bar {\n background: var(--select-selected-text-color);\n}\n.kd-curve-2d-container .el-tree {\n background: var(--bg-color) !important;\n color: var(--default-text-color);\n font-size: 14px;\n}\n.kd-curve-2d-container .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {\n background: var(--dialog-header) !important;\n color: var(--dialog-tree-text-color);\n}\n.kd-curve-2d-container .el-tree-node__content:hover,\n.kd-curve-2d-container .el-upload-list__item:hover {\n background: var(--dialog-header) !important;\n color: var(--dialog-tree-text-color);\n}\n.kd-curve-2d-container .vue-simple-context-menu__item,\n.kd-curve-2d-container .vue-simple-context-menu__item {\n font-size: 14px !important;\n}\n.kd-curve-2d-container .kd-lane-el-container {\n border: 1px solid var(--card-border-color);\n}\n.kd-curve-2d-container .kd-lane-el-container .rtd-config-side {\n border-right: 1px solid var(--card-border-color);\n}\n.kd-curve-2d-container .el-dialog__header {\n background: var(--dialog-header);\n text-align: center;\n}\n.kd-curve-2d-container .el-dialog__header .el-dialog__title {\n color: var(--dialog-header-text-color);\n}\n.kd-curve-2d-container .el-dialog__header {\n padding: 10px 10px 10px;\n}\n.kd-curve-2d-container .el-dialog__body {\n background: var(--bg-color);\n padding: 30px 30px 10px 30px;\n}\n.kd-curve-2d-container .el-dialog__body .input-number-container .el-input__inner {\n width: calc(100% - 80px) !important;\n margin-left: 40px !important;\n}\n.kd-curve-2d-container .el-dialog__body .el-input__inner {\n color: var(--default-text-color) !important;\n}\n.kd-curve-2d-container .el-dialog__body .el-input-number__decrease,\n.kd-curve-2d-container .el-dialog__body .el-input-number__increase {\n color: var(--default-text-color);\n}\n.kd-curve-2d-container .el-dialog__body .el-input-number__increase {\n background: var(--card-color);\n color: var(--default-text-color);\n border-radius: 0px 0px 0px 0px;\n border: 1px solid var(--card-border-color);\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.kd-curve-2d-container .el-dialog__body .el-input-number__decrease {\n background: var(--card-color);\n border-radius: 0px 0px 0px 0px;\n border: 1px solid var(--card-border-color);\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.kd-curve-2d-container .el-dialog__footer {\n text-align: center;\n background: var(--bg-color);\n}\n.kd-curve-2d-container .el-date-editor {\n background: var(--bg-color) !important;\n}\n.kd-curve-2d-container .el-date-editor .el-range-input {\n background: var(--bg-color) !important;\n border-top: 1px solid var(--border-color) !important;\n border-bottom: 1px solid var(--border-color) !important;\n color: var(--text-color) !important;\n height: 32px !important;\n line-height: 32px !important;\n box-sizing: border-box;\n border-radius: 0px;\n}\n.kd-curve-2d-container .el-date-editor .el-range-separator {\n color: var(--default-text-color);\n}";
10177
10209
  styleInject(css_248z$1);
10178
10210
 
10179
- var css_248z = "@charset \"UTF-8\";\n.kd-curve-2d-resize-container[data-v-18d00693] {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--bg-color);\n color: var(--default-text-color);\n overflow: hidden;\n /* 主容器 */\n}\n.kd-curve-2d-resize-container .container[data-v-18d00693] {\n display: flex;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n.kd-curve-2d-resize-container[data-v-18d00693] {\n /* 面板通用样式 */\n}\n.kd-curve-2d-resize-container .panel[data-v-18d00693] {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n flex-shrink: 0;\n background: var(--panel-item-bg-color);\n border: 1px solid var(--panel-item-border-color);\n padding: 8px;\n /* 隐藏滚动条 */\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-curve-2d-resize-container .panel[data-v-18d00693]::-webkit-scrollbar {\n display: none;\n}\n.kd-curve-2d-resize-container .panel-3[data-v-18d00693] {\n flex: 1;\n min-width: 100px;\n}\n.kd-curve-2d-resize-container[data-v-18d00693] {\n /* 拖拽条样式 */\n}\n.kd-curve-2d-resize-container .resizer[data-v-18d00693] {\n width: 6px;\n cursor: col-resize;\n}\n.kd-curve-2d-resize-container .resizer[data-v-18d00693]:hover {\n background-color: var(--resizer-bg-color);\n transition: background-color 0.2s ease;\n}";
10211
+ var css_248z = "@charset \"UTF-8\";\n.kd-curve-2d-resize-container[data-v-815b84b2] {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--bg-color);\n color: var(--default-text-color);\n overflow: hidden;\n /* 主容器 */\n}\n.kd-curve-2d-resize-container .container[data-v-815b84b2] {\n display: flex;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n.kd-curve-2d-resize-container[data-v-815b84b2] {\n /* 面板通用样式 */\n}\n.kd-curve-2d-resize-container .panel[data-v-815b84b2] {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n flex-shrink: 0;\n background: var(--panel-item-bg-color);\n border: 1px solid var(--panel-item-border-color);\n padding: 8px;\n /* 隐藏滚动条 */\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.kd-curve-2d-resize-container .panel[data-v-815b84b2]::-webkit-scrollbar {\n display: none;\n}\n.kd-curve-2d-resize-container .panel-3[data-v-815b84b2] {\n flex: 1;\n min-width: 100px;\n}\n.kd-curve-2d-resize-container[data-v-815b84b2] {\n /* 拖拽条样式 */\n}\n.kd-curve-2d-resize-container .resizer[data-v-815b84b2] {\n width: 6px;\n cursor: col-resize;\n}\n.kd-curve-2d-resize-container .resizer[data-v-815b84b2]:hover {\n background-color: var(--resizer-bg-color);\n transition: background-color 0.2s ease;\n}";
10180
10212
  styleInject(css_248z);
10181
10213
 
10182
10214
  /* script */
@@ -10374,7 +10406,7 @@ __vue_render__._withStripped = true;
10374
10406
  /* style */
10375
10407
  const __vue_inject_styles__ = undefined;
10376
10408
  /* scoped */
10377
- const __vue_scope_id__ = "data-v-18d00693";
10409
+ const __vue_scope_id__ = "data-v-815b84b2";
10378
10410
  /* module identifier */
10379
10411
  const __vue_module_identifier__ = undefined;
10380
10412
  /* functional template */