kd-lane-chart-v3 0.1.13 → 0.1.14

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
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { ref, onMounted, onBeforeUnmount, resolveDirective, openBlock, createElementBlock, withDirectives, Fragment, renderList, normalizeClass, withModifiers, createElementVNode, toRaw, inject, watch, resolveComponent, createVNode, withCtx, createBlock, createTextVNode, createCommentVNode, vShow, computed, provide, toDisplayString, unref, mergeProps, normalizeStyle, isRef, isReadonly, getCurrentInstance, nextTick, renderSlot, markRaw, reactive, useAttrs, onActivated, onUnmounted, createSlots } from "vue";
4
+ import { ref, onMounted, onBeforeUnmount, resolveDirective, openBlock, createElementBlock, withDirectives, Fragment, renderList, normalizeClass, withModifiers, createElementVNode, toRaw, reactive, computed, getCurrentInstance, inject, watch, resolveComponent, createVNode, withCtx, unref, createBlock, createTextVNode, toDisplayString, createCommentVNode, vShow, provide, mergeProps, normalizeStyle, isRef, isReadonly, nextTick, renderSlot, markRaw, useAttrs, onActivated, onUnmounted, createSlots } from "vue";
5
5
  import { cloneDeep, debounce } from "lodash-es";
6
6
  import { VueDraggable } from "vue-draggable-plus";
7
7
  import { Star, Search } from "@element-plus/icons-vue";
@@ -198,43 +198,31 @@ function splitArrayByDepth(arr, key = "depth") {
198
198
  return [];
199
199
  }
200
200
  if (arr.length < 2) {
201
- return [arr];
201
+ return arr.length ? [arr] : [];
202
202
  }
203
203
  const result = [];
204
- function processSegment(segment) {
205
- if (segment.length < 2) {
206
- if (segment.length === 1) {
207
- result.push([segment[0]]);
208
- }
209
- return;
210
- }
211
- const splitIndices = [];
212
- for (let i = 1; i < segment.length; i++) {
213
- const prevDepth = Number(segment[i - 1][key]);
214
- const currDepth = Number(segment[i][key]);
215
- if (currDepth < prevDepth) {
216
- splitIndices.push(i);
217
- }
218
- }
219
- if (splitIndices.length === 0) {
220
- result.push(segment);
221
- return;
222
- }
223
- let startIndex = 0;
224
- for (const splitIndex of splitIndices) {
225
- const subSegment = segment.slice(startIndex, splitIndex);
226
- if (subSegment.length > 0) {
227
- result.push(subSegment);
228
- }
229
- startIndex = splitIndex;
230
- }
231
- const lastSegment = segment.slice(startIndex);
232
- if (lastSegment.length > 0) {
233
- result.push(lastSegment);
204
+ let start = 0;
205
+ let dir = 0;
206
+ for (let i = 1; i < arr.length; i++) {
207
+ const prevDepth = Number(arr[i - 1][key]);
208
+ const currDepth = Number(arr[i][key]);
209
+ if (!Number.isFinite(prevDepth) || !Number.isFinite(currDepth)) continue;
210
+ if (currDepth === prevDepth) continue;
211
+ const step = currDepth > prevDepth ? 1 : -1;
212
+ if (dir === 0) {
213
+ dir = step;
214
+ continue;
215
+ }
216
+ if (step !== dir) {
217
+ const seg = arr.slice(start, i);
218
+ if (seg.length) result.push(seg);
219
+ start = i - 1;
220
+ dir = step;
234
221
  }
235
222
  }
236
- processSegment(arr);
237
- return result;
223
+ const last = arr.slice(start);
224
+ if (last.length) result.push(last);
225
+ return result.length ? result : [arr];
238
226
  }
239
227
  const estimateAttrGap = (arr, key, sampleCount = 512) => {
240
228
  if (!arr || arr.length < 2 || !key) return 1;
@@ -1425,6 +1413,567 @@ class StrategyFactory {
1425
1413
  }
1426
1414
  }
1427
1415
  }
1416
+ const zhCN = {
1417
+ "common.loading": "加载中...",
1418
+ "common.export": "导出",
1419
+ "common.refresh": "刷新",
1420
+ "common.date.to": "至",
1421
+ "common.cancel": "取消",
1422
+ "common.confirm": "确定",
1423
+ "common.yes": "是",
1424
+ "common.no": "否",
1425
+ "common.edit": "编辑",
1426
+ "common.save": "保存",
1427
+ "common.placeholder.select": "请选择",
1428
+ "common.info": "提示",
1429
+ "message.saveSuccess": "保存成功",
1430
+ "dashboard.msg.deleteFail": "删除失败",
1431
+ "drillOptimize.label.inputEndDepth": "请输入结束井深",
1432
+ "drillOptimize.title.laneTemplateSetting": "泳道模板设置",
1433
+ "drillOptimize.label.paramName": "参数名称",
1434
+ "drillOptimize.label.lineType": "线型",
1435
+ "drillOptimize.label.lineSort": "曲线顺序",
1436
+ "drillOptimize.label.isUsed": "是否启用",
1437
+ "drillOptimize.lineType.area": "面积",
1438
+ "drillOptimize.validation.inputMinValue": "请输入最小值",
1439
+ "drillOptimize.validation.inputLineSort": "请输入曲线顺序(1-10)",
1440
+ "drillOptimize.validation.sortMustBeNumber": "顺序必须为数字值",
1441
+ "drillOptimize.validation.inputMaxValue": "请输入最大值",
1442
+ "drillOptimize.validation.selectLineWidth": "请选择曲线粗细",
1443
+ "drillOptimize.validation.selectCurveColor": "请选择曲线颜色",
1444
+ "drillOptimize.validation.selectLineType": "请选择线型",
1445
+ "drillOptimize.validation.selectParamName": "请选择参数名称",
1446
+ "drillOptimize.btn.addTemplate": "新增模板",
1447
+ "drillOptimize.msg.confirmDeleteTemplate": "此操作将删除该模板, 是否继续?",
1448
+ "drillOptimize.msg.confirmDeleteLane": "此操作将删除该泳道, 是否继续?",
1449
+ "drillOptimize.msg.confirmDeleteParam": "此操作将删除该参数, 是否继续?",
1450
+ "drillOptimize.btn.addLane": "新增泳道",
1451
+ "drillOptimize.btn.addParam": "新增参数",
1452
+ "drillOptimize.btn.deleteLane": "删除泳道",
1453
+ "drillOptimize.btn.deleteParam": "删除参数",
1454
+ "drillOptimize.label.templateName": "模板名称",
1455
+ "drillOptimize.label.defaultTemplate": "默认模板",
1456
+ "drillOptimize.label.curveHeightRatio": "曲线高度占比",
1457
+ "drillOptimize.label.selectBaseTemplate": "选择基础模板",
1458
+ "drillOptimize.validation.inputTemplateName": "请输入模板名称",
1459
+ "drillOptimize.template.blankTemplate": "空白模板",
1460
+ "dynamicAnalysis.title.realTimeData": "实时数据",
1461
+ "init.column.startTime": "开始时间",
1462
+ "init.column.endTime": "结束时间",
1463
+ "kdLaneChart.tip.timeNoScale": "时间轴类型下不支持设置比例尺",
1464
+ "kdLaneChart.label.depthSegment": "井深段",
1465
+ "kdLaneChart.label.warningPosition": "预警定位",
1466
+ "kdLaneChart.validation.selectTime": "请选择时间",
1467
+ "kdLaneChart.placeholder.selectTime": "选择时间",
1468
+ "kdLaneChart.validation.enterStartDepth": "请输入起始井深",
1469
+ "kdLaneChart.label.depth": "深度",
1470
+ "kdLaneChart.validation.selectTimeRange": "请选择时间范围",
1471
+ "kdLaneChart.validation.enterEndDepth": "请输入终止井深",
1472
+ "kdLaneChart.label.historyData": "历史数据",
1473
+ "kdLaneChart.label.headerData": "表头数据",
1474
+ "kdLaneChart.label.floatData": "悬浮数据",
1475
+ "kdLaneChart.label.scaleLabel": "比例尺:",
1476
+ "kdLaneChart.label.timeRangeLabel": "时间范围:",
1477
+ "kdLaneChart.label.depthRangeLabel": "井深范围({unit}):",
1478
+ "kdLaneChart.label.wellSectionQueryLabel": "井段查询({unit}):",
1479
+ "kdLaneChart.label.timeSegment": "时间段",
1480
+ "kdLaneChart.title.setTimeSegment": "设置时间段",
1481
+ "kdLaneChart.title.setDepthSegment": "设置井深段",
1482
+ "kdLaneChart.label.startDepthLabel": "起始井深:",
1483
+ "kdLaneChart.label.endDepthLabel": "结束井深:",
1484
+ "kdLaneChart.msg.wellSectionNonNegative": "输入的井段不能小于0{unit}",
1485
+ "kdLaneChart.msg.querySuccess": "查询成功",
1486
+ "kdLaneChart.validation.selectValidTimeRange": "请选择有效的时间范围",
1487
+ "kdLaneChart.validation.enterValidDepth": "请填写有效的井深值",
1488
+ "kdLaneChart.validation.startLessThanEnd": "起始井深必须小于终止井深",
1489
+ "kdLaneChart.validation.selectValidTime": "请选择有效的时间",
1490
+ "kdLaneChart.validation.depthMustBePositive": "井深值必须大于0",
1491
+ "kdLaneChart.validation.startDepthNonNegative": "起始井深值不能小于0",
1492
+ "kdLaneChart.validation.endDepthMustBePositive": "终止井深值必须大于0",
1493
+ "kdLaneChart.validation.endGreaterThanStart": "结束井深必须大于起始井深",
1494
+ "kdLaneChart.validation.endMustBeGreaterThanStart": "终止井深必须大于起始井深",
1495
+ "kdLaneChart.tip.realTimeNoTimeSegment": "实时数据不支持设置时间段",
1496
+ "kdLaneChart.tip.realTimeNoDepthSegment": "实时数据不支持设置井深段",
1497
+ "kdLaneChart.tip.depthNoTimeRange": "深度轴类型不支持设置时间范围",
1498
+ "kdLaneChart.tip.depthNoWellSectionQuery": "深度轴类型不支持井段查询",
1499
+ "kdLaneChart.tip.timeNoDepthRange": "时间轴类型不支持设置井深范围",
1500
+ "kdLaneChart.menu.editTemplate": "编辑模板",
1501
+ "kdLaneChart.menu.restoreDefault": "恢复默认",
1502
+ "kdLaneChart.label.laneSort": "泳道顺序",
1503
+ "kdLaneChart.label.logScale": "对数轴",
1504
+ "kdLaneChart.validation.enterLaneSort": "请输入泳道顺序",
1505
+ "kdLaneChart.msg.noLaneManager": "没有配置泳道管理方法",
1506
+ "kdLaneChart.validation.enterNumberValue": "请输入数字值",
1507
+ "kdLaneChart.msg.noLineManager": "未配置线条设置函数",
1508
+ "kdLaneChart.msg.systemTemplateReadOnly": "系统模板不能编辑",
1509
+ "kdLaneChart.msg.noDeleteTemplateFn": "未配置删除模板函数",
1510
+ "kdLaneChart.msg.noDeleteLineFn": "未配置删除线条函数",
1511
+ "kdLaneChart.label.lanePrefix": "泳道{index}",
1512
+ "kdLaneChart.msg.noTemplateManager": "没有配置模板管理方法",
1513
+ "kdLaneChart.label.endDepthLabel2": "终止井深:",
1514
+ "org.btn.dataExport": "数据导出",
1515
+ "riskWarning.param.time": "时间",
1516
+ "riskWarning.label.minValue": "最小值",
1517
+ "riskWarning.label.maxValue": "最大值",
1518
+ "riskWarning.label.lineWidth": "曲线粗细",
1519
+ "riskWarning.label.lineColor": "曲线颜色",
1520
+ "riskWarning.lineType.solidLine": "直线",
1521
+ "riskWarning.lineType.dashedLine": "虚线",
1522
+ "riskWarning.lineType.dottedLine": "点线",
1523
+ "trackDesign.msg.invalidNumber": "请输入有效的数字",
1524
+ "trackDesign.label.fullscreen": "全屏",
1525
+ "kdLaneChart.label.actualValue": "实际值",
1526
+ "kdLaneChart.label.recommendValue": "推荐值",
1527
+ "drillOptimize.validation.lineWidthRange": "曲线粗细必须在1-4之间",
1528
+ "drillOptimize.validation.numberRange14": "数字必须在1-4之间",
1529
+ "kdLaneChart.tooltip.customTitle": "自定义数据信息",
1530
+ "kdLaneChart.tooltip.timestamp": "时间戳",
1531
+ "drillOptimize.validation.inputLineWidth": "请输入曲线粗细"
1532
+ };
1533
+ const en = {
1534
+ "common.loading": "Loading...",
1535
+ "common.export": "Export",
1536
+ "common.refresh": "Refresh",
1537
+ "common.date.to": "To",
1538
+ "common.cancel": "Cancel",
1539
+ "common.confirm": "OK",
1540
+ "common.yes": "Yes",
1541
+ "common.no": "No",
1542
+ "common.edit": "Edit",
1543
+ "common.save": "Save",
1544
+ "common.placeholder.select": "Select",
1545
+ "common.info": "Hint",
1546
+ "message.saveSuccess": "Saved",
1547
+ "dashboard.msg.deleteFail": "Delete failed",
1548
+ "drillOptimize.label.inputEndDepth": "Enter End MD",
1549
+ "drillOptimize.title.laneTemplateSetting": "Lane Template",
1550
+ "drillOptimize.label.paramName": "Param Name",
1551
+ "drillOptimize.label.lineType": "Line Type",
1552
+ "drillOptimize.label.lineSort": "Curve Order",
1553
+ "drillOptimize.label.isUsed": "Enabled",
1554
+ "drillOptimize.lineType.area": "Area",
1555
+ "drillOptimize.validation.inputMinValue": "Enter Min",
1556
+ "drillOptimize.validation.inputLineSort": "Enter curve order (1-10)",
1557
+ "drillOptimize.validation.sortMustBeNumber": "Must be a number",
1558
+ "drillOptimize.validation.inputMaxValue": "Enter Max",
1559
+ "drillOptimize.validation.selectLineWidth": "Select line width",
1560
+ "drillOptimize.validation.selectCurveColor": "Select line color",
1561
+ "drillOptimize.validation.selectLineType": "Select line type",
1562
+ "drillOptimize.validation.selectParamName": "Select param name",
1563
+ "drillOptimize.btn.addTemplate": "Add Template",
1564
+ "drillOptimize.msg.confirmDeleteTemplate": "Delete this template?",
1565
+ "drillOptimize.msg.confirmDeleteLane": "Delete this lane?",
1566
+ "drillOptimize.msg.confirmDeleteParam": "Delete this param?",
1567
+ "drillOptimize.btn.addLane": "Add Lane",
1568
+ "drillOptimize.btn.addParam": "Add Param",
1569
+ "drillOptimize.btn.deleteLane": "Del Lane",
1570
+ "drillOptimize.btn.deleteParam": "Del Param",
1571
+ "drillOptimize.label.templateName": "Template Name",
1572
+ "drillOptimize.label.defaultTemplate": "Default Tpl",
1573
+ "drillOptimize.label.curveHeightRatio": "Height Ratio",
1574
+ "drillOptimize.label.selectBaseTemplate": "Base Template",
1575
+ "drillOptimize.validation.inputTemplateName": "Enter template name",
1576
+ "drillOptimize.template.blankTemplate": "Blank",
1577
+ "dynamicAnalysis.title.realTimeData": "Realtime",
1578
+ "init.column.startTime": "Start Time",
1579
+ "init.column.endTime": "End Time",
1580
+ "kdLaneChart.tip.timeNoScale": "Scale not supported for time axis",
1581
+ "kdLaneChart.label.depthSegment": "Depth Segment",
1582
+ "kdLaneChart.label.warningPosition": "Warning Pos",
1583
+ "kdLaneChart.validation.selectTime": "Select time",
1584
+ "kdLaneChart.placeholder.selectTime": "Select time",
1585
+ "kdLaneChart.validation.enterStartDepth": "Enter start MD",
1586
+ "kdLaneChart.label.depth": "Depth",
1587
+ "kdLaneChart.validation.selectTimeRange": "Select time range",
1588
+ "kdLaneChart.validation.enterEndDepth": "Enter end MD",
1589
+ "kdLaneChart.label.historyData": "History",
1590
+ "kdLaneChart.label.headerData": "Header Data",
1591
+ "kdLaneChart.label.floatData": "Float Data",
1592
+ "kdLaneChart.label.scaleLabel": "Scale:",
1593
+ "kdLaneChart.label.timeRangeLabel": "Time Range:",
1594
+ "kdLaneChart.label.depthRangeLabel": "Depth Range({unit}):",
1595
+ "kdLaneChart.label.wellSectionQueryLabel": "Well Section({unit}):",
1596
+ "kdLaneChart.label.timeSegment": "Time Segment",
1597
+ "kdLaneChart.title.setTimeSegment": "Set Time Segment",
1598
+ "kdLaneChart.title.setDepthSegment": "Set Depth Segment",
1599
+ "kdLaneChart.label.startDepthLabel": "Start MD:",
1600
+ "kdLaneChart.label.endDepthLabel": "End MD:",
1601
+ "kdLaneChart.msg.wellSectionNonNegative": "Well section cannot be < 0{unit}",
1602
+ "kdLaneChart.msg.querySuccess": "Query OK",
1603
+ "kdLaneChart.validation.selectValidTimeRange": "Select valid time range",
1604
+ "kdLaneChart.validation.enterValidDepth": "Enter valid MD value",
1605
+ "kdLaneChart.validation.startLessThanEnd": "Start MD must be less than end MD",
1606
+ "kdLaneChart.validation.selectValidTime": "Select valid time",
1607
+ "kdLaneChart.validation.depthMustBePositive": "MD must be > 0",
1608
+ "kdLaneChart.validation.startDepthNonNegative": "Start MD must be >= 0",
1609
+ "kdLaneChart.validation.endDepthMustBePositive": "End MD must be > 0",
1610
+ "kdLaneChart.validation.endGreaterThanStart": "End MD must be greater than start MD",
1611
+ "kdLaneChart.validation.endMustBeGreaterThanStart": "End MD must be greater than start MD",
1612
+ "kdLaneChart.tip.realTimeNoTimeSegment": "Realtime: time segment not supported",
1613
+ "kdLaneChart.tip.realTimeNoDepthSegment": "Realtime: depth segment not supported",
1614
+ "kdLaneChart.tip.depthNoTimeRange": "Depth axis: time range not supported",
1615
+ "kdLaneChart.tip.depthNoWellSectionQuery": "Depth axis: well section query not supported",
1616
+ "kdLaneChart.tip.timeNoDepthRange": "Time axis: depth range not supported",
1617
+ "kdLaneChart.menu.editTemplate": "Edit Template",
1618
+ "kdLaneChart.menu.restoreDefault": "Restore Default",
1619
+ "kdLaneChart.label.laneSort": "Lane Order",
1620
+ "kdLaneChart.label.logScale": "Log Scale",
1621
+ "kdLaneChart.validation.enterLaneSort": "Enter lane order",
1622
+ "kdLaneChart.msg.noLaneManager": "Lane manager not configured",
1623
+ "kdLaneChart.validation.enterNumberValue": "Enter a number",
1624
+ "kdLaneChart.msg.noLineManager": "Line manager not configured",
1625
+ "kdLaneChart.msg.systemTemplateReadOnly": "System template is read-only",
1626
+ "kdLaneChart.msg.noDeleteTemplateFn": "Delete template fn not configured",
1627
+ "kdLaneChart.msg.noDeleteLineFn": "Delete line fn not configured",
1628
+ "kdLaneChart.label.lanePrefix": "Lane {index}",
1629
+ "kdLaneChart.msg.noTemplateManager": "Template manager not configured",
1630
+ "kdLaneChart.label.endDepthLabel2": "End MD:",
1631
+ "org.btn.dataExport": "Data Export",
1632
+ "riskWarning.param.time": "Time",
1633
+ "riskWarning.label.minValue": "Min",
1634
+ "riskWarning.label.maxValue": "Max",
1635
+ "riskWarning.label.lineWidth": "Line Width",
1636
+ "riskWarning.label.lineColor": "Line Color",
1637
+ "riskWarning.lineType.solidLine": "Solid",
1638
+ "riskWarning.lineType.dashedLine": "Dash",
1639
+ "riskWarning.lineType.dottedLine": "Dot",
1640
+ "trackDesign.msg.invalidNumber": "Enter valid number",
1641
+ "trackDesign.label.fullscreen": "Fullscreen",
1642
+ "kdLaneChart.label.actualValue": "Actual",
1643
+ "kdLaneChart.label.recommendValue": "Recommended",
1644
+ "drillOptimize.validation.lineWidthRange": "Line width must be 1-4",
1645
+ "drillOptimize.validation.numberRange14": "Number must be 1-4",
1646
+ "drillOptimize.validation.inputLineWidth": "Enter line width",
1647
+ "kdLaneChart.tooltip.customTitle": "Custom Data",
1648
+ "kdLaneChart.tooltip.timestamp": "Timestamp"
1649
+ };
1650
+ const PARAM_NAME_EN = {
1651
+ 井深: "Depth",
1652
+ 大钩高度: "Hook Height",
1653
+ 钻压: "WOB",
1654
+ 转盘转速: "RPM",
1655
+ 扭矩: "Torque",
1656
+ 大钩负荷: "Hook Load",
1657
+ 立压: "SPP",
1658
+ 套压: "Casing Pressure",
1659
+ 泵冲1: "Pump Stroke 1",
1660
+ 泵冲2: "Pump Stroke 2",
1661
+ 泵冲3: "Pump Stroke 3",
1662
+ 总池体积: "Total Pit Volume",
1663
+ 出口流量: "Outlet Flow",
1664
+ 入口流量: "Inlet Flow",
1665
+ 出口温度: "Outlet Temp",
1666
+ 进口温度: "Inlet Temp",
1667
+ 出口密度: "Outlet Density",
1668
+ 进口密度: "Inlet Density",
1669
+ 出口电导: "Outlet Conductivity",
1670
+ 进口电导: "Inlet Conductivity",
1671
+ "dc指数(录井)": "d-exponent (Mud Logging)",
1672
+ "dc指数(模型)": "d-exponent (Model)",
1673
+ ddc指数: "ddc Index",
1674
+ sigma指数: "Sigma Index",
1675
+ 全烃: "Total Gas",
1676
+ C1: "C1",
1677
+ C2: "C2",
1678
+ C3: "C3",
1679
+ iC4: "iC4",
1680
+ NC4: "NC4",
1681
+ iC5: "iC5",
1682
+ NC5: "NC5",
1683
+ H2S: "H2S",
1684
+ CO2: "CO2",
1685
+ H2: "H2",
1686
+ ECD: "ECD",
1687
+ 孔隙压力: "Pore Pressure",
1688
+ 坍塌压力: "Collapse Pressure",
1689
+ 破裂压力: "Fracture Pressure",
1690
+ 理论负荷: "Theoretical Load",
1691
+ 负荷偏差: "Load Deviation",
1692
+ 理论立压: "Theoretical SPP",
1693
+ 立压偏差: "SPP Deviation",
1694
+ 理论扭矩: "Theoretical Torque",
1695
+ 扭矩偏差: "Torque Deviation",
1696
+ 卡钻风险: "Stuck Pipe Risk",
1697
+ 悬重: "Hook Load",
1698
+ 泵压: "Pump Pressure",
1699
+ "1号肋板工具面": "Rib 1 Toolface",
1700
+ 地面转速: "Surface RPM",
1701
+ 排量: "Flow Rate",
1702
+ 旋转方位: "Rotary Azimuth",
1703
+ 旋转井斜: "Rotary Inclination",
1704
+ 机械钻速: "ROP",
1705
+ 导向头转速: "Steering Head RPM",
1706
+ 涡轮转速: "Turbine RPM",
1707
+ 旋导导向模式: "RSS Mode",
1708
+ 近钻头井斜: "Near-Bit Inclination",
1709
+ 目标井斜: "Target Inclination",
1710
+ MWD工具面: "MWD Toolface",
1711
+ 横向振动: "Lateral Vibration",
1712
+ 轴向振动: "Axial Vibration",
1713
+ 切向振动: "Torsional Vibration",
1714
+ 粘滑: "Stick-Slip",
1715
+ "造斜力 稳斜模式": "Build Force (Hold)",
1716
+ "扭方位力 稳斜模式": "Walk Force (Hold)",
1717
+ "目标井斜 稳斜模式": "Target Inc (Hold)",
1718
+ "工具力 定向模式": "Tool Force (Steer)",
1719
+ "工具面 定向模式": "Toolface (Steer)"
1720
+ };
1721
+ const LANE_NAME_EN = {
1722
+ 井深: "Depth",
1723
+ 地层: "Formation",
1724
+ 时间: "Time"
1725
+ };
1726
+ const LABEL_EN = {
1727
+ 上提下钻速度: "Trip Speed",
1728
+ 钻机状态: "Rig Status",
1729
+ "出口流量(L/s)": "Outlet Flow (L/s)",
1730
+ "入口温度(℃)": "Inlet Temp (°C)",
1731
+ "出口温度(℃)": "Outlet Temp (°C)",
1732
+ "入口电导率(S/m)": "Inlet Conductivity (S/m)",
1733
+ "出口电导率(S/m)": "Outlet Conductivity (S/m)",
1734
+ "旋转时间(s)": "Rotation Time (s)",
1735
+ "入口压力(kPa)": "Inlet Pressure (kPa)",
1736
+ "出口压力(kPa)": "Outlet Pressure (kPa)",
1737
+ "流速(m/s)": "Flow Velocity (m/s)",
1738
+ "管道直径(mm)": "Pipe Diameter (mm)",
1739
+ "液位高度(m)": "Liquid Level (m)",
1740
+ "泵转速(r/min)": "Pump RPM (r/min)",
1741
+ "电机功率(kW)": "Motor Power (kW)",
1742
+ "系统效率(%)": "System Efficiency (%)",
1743
+ "累计运行时间(h)": "Running Hours (h)",
1744
+ "瞬时能耗(kWh)": "Instant Energy (kWh)"
1745
+ };
1746
+ const localeMessages = {
1747
+ "zh-CN": zhCN,
1748
+ en
1749
+ };
1750
+ const localeState = reactive({
1751
+ current: "zh-CN"
1752
+ });
1753
+ function normalizeLocale(lang) {
1754
+ if (!lang) return "zh-CN";
1755
+ const raw = String(lang);
1756
+ if (localeMessages[raw]) return raw;
1757
+ const lower = raw.toLowerCase();
1758
+ if (lower === "en" || lower.startsWith("en-")) return "en";
1759
+ if (lower === "zh" || lower.startsWith("zh-")) return "zh-CN";
1760
+ return raw;
1761
+ }
1762
+ function isEnglishLocale(lang) {
1763
+ const l = String(lang || "").toLowerCase();
1764
+ return l === "en" || l.startsWith("en-");
1765
+ }
1766
+ function setCurrentLocale(lang) {
1767
+ const next = normalizeLocale(lang);
1768
+ if (!localeMessages[next]) {
1769
+ console.warn(
1770
+ `[kd-lane-chart] 语言包 "${lang}" 不存在,可用: ${Object.keys(localeMessages).join(", ")}`
1771
+ );
1772
+ return;
1773
+ }
1774
+ localeState.current = next;
1775
+ }
1776
+ function getAppGlobalProperties(context) {
1777
+ const instance = context && context.$ || getCurrentInstance() || null;
1778
+ return instance && instance.appContext && instance.appContext.config && instance.appContext.config.globalProperties || null;
1779
+ }
1780
+ function readVueI18nLocale(context) {
1781
+ const gp = getAppGlobalProperties(context);
1782
+ const i18n = gp && gp.$i18n;
1783
+ if (!i18n || i18n.locale == null) return "";
1784
+ const loc = i18n.locale;
1785
+ return typeof loc === "object" && loc && "value" in loc ? loc.value : loc;
1786
+ }
1787
+ function getCurrentLocale(context) {
1788
+ const vueLocale = readVueI18nLocale(context);
1789
+ if (vueLocale) return normalizeLocale(vueLocale);
1790
+ return localeState.current;
1791
+ }
1792
+ function lookup(messages, key) {
1793
+ if (!messages) return void 0;
1794
+ if (messages[key] !== void 0) return messages[key];
1795
+ const value = key.split(".").reduce((o, k) => o && o[k] !== void 0 ? o[k] : void 0, messages);
1796
+ return value !== void 0 ? value : void 0;
1797
+ }
1798
+ function substitute(template, params) {
1799
+ if (!params || typeof template !== "string") return template;
1800
+ return template.replace(/\{(\w+)\}/g, (_, key) => {
1801
+ return params[key] !== void 0 ? String(params[key]) : `{${key}}`;
1802
+ });
1803
+ }
1804
+ function innerTrans(key, params) {
1805
+ const gp = getAppGlobalProperties();
1806
+ if (gp && typeof gp.$t === "function") {
1807
+ const result = gp.$t(key, params);
1808
+ if (result !== key) return result;
1809
+ }
1810
+ const lang = getCurrentLocale();
1811
+ const current = lookup(localeMessages[lang], key);
1812
+ if (current !== void 0) return substitute(current, params);
1813
+ if (lang !== "zh-CN") {
1814
+ const fallback = lookup(localeMessages["zh-CN"], key);
1815
+ if (fallback !== void 0) return substitute(fallback, params);
1816
+ }
1817
+ return key;
1818
+ }
1819
+ function outerTrans(item, textField = "label") {
1820
+ if (!item) return "";
1821
+ if (isEnglishLocale(getCurrentLocale())) {
1822
+ const zh = item[textField] || "";
1823
+ const enVal = item[`${textField}En`];
1824
+ if (enVal && enVal !== zh) return enVal;
1825
+ if (textField === "label" && zh && LABEL_EN[zh]) return LABEL_EN[zh];
1826
+ if (enVal) return enVal;
1827
+ }
1828
+ if (item.i18nKey) {
1829
+ return innerTrans(item.i18nKey, item.i18nParams || {});
1830
+ }
1831
+ return item[textField] || "";
1832
+ }
1833
+ function resolveLocalizedText(item, zhField, enField, nameMap) {
1834
+ if (!item) return "";
1835
+ const zh = item[zhField] || "";
1836
+ if (isEnglishLocale(getCurrentLocale())) {
1837
+ const enVal = enField ? item[enField] : "";
1838
+ if (enVal && enVal !== zh) return enVal;
1839
+ if (zh && nameMap && nameMap[zh]) return nameMap[zh];
1840
+ if (enVal) return enVal;
1841
+ if (item.i18nKey) return innerTrans(item.i18nKey, item.i18nParams || {});
1842
+ return zh;
1843
+ }
1844
+ if (item.i18nKey) return innerTrans(item.i18nKey, item.i18nParams || {});
1845
+ return zh;
1846
+ }
1847
+ function resolveParamName(item) {
1848
+ return resolveLocalizedText(item, "paramName", "paramNameEn", PARAM_NAME_EN);
1849
+ }
1850
+ function resolveLaneName(item) {
1851
+ if (!item) return "";
1852
+ if (isEnglishLocale(getCurrentLocale())) {
1853
+ const zh = item.laneName || "";
1854
+ const enVal = item.laneNameEn || "";
1855
+ if (enVal && enVal !== zh) return enVal;
1856
+ if (item.laneKey && LANE_NAME_EN[item.laneKey]) return LANE_NAME_EN[item.laneKey];
1857
+ if (zh && LANE_NAME_EN[zh]) return LANE_NAME_EN[zh];
1858
+ if (enVal) return enVal;
1859
+ if (item.i18nKey) return innerTrans(item.i18nKey, item.i18nParams || {});
1860
+ return zh;
1861
+ }
1862
+ if (item.i18nKey) return innerTrans(item.i18nKey, item.i18nParams || {});
1863
+ return item.laneName || "";
1864
+ }
1865
+ function formatParamLabel(item) {
1866
+ if (!item) return "";
1867
+ const name = resolveParamName(item);
1868
+ if (!name) return "";
1869
+ return `${name}${item.paramUnit ? `(${item.paramUnit})` : ""}`;
1870
+ }
1871
+ function mergeCurveI18nFromDataSource(dbDatas, dataSource) {
1872
+ const ds = dataSource || {};
1873
+ const srcParamMap = /* @__PURE__ */ Object.create(null);
1874
+ (ds.params || []).forEach((p) => {
1875
+ if (p && p.paramId != null) srcParamMap[String(p.paramId)] = p;
1876
+ });
1877
+ const params = (dbDatas && dbDatas.params ? dbDatas.params : []).map((p) => {
1878
+ const src = srcParamMap[String(p.paramId)];
1879
+ if (!src) {
1880
+ if (p && p.paramName && (!p.paramNameEn || p.paramNameEn === p.paramName)) {
1881
+ const mapped2 = PARAM_NAME_EN[p.paramName] || PARAM_NAME_EN[p.paramId];
1882
+ if (mapped2) return { ...p, paramNameEn: mapped2 };
1883
+ }
1884
+ return p;
1885
+ }
1886
+ const mapped = PARAM_NAME_EN[src.paramName || p.paramName] || PARAM_NAME_EN[src.paramId || p.paramId];
1887
+ const nextEn = src.paramNameEn && src.paramNameEn !== (src.paramName || p.paramName) && src.paramNameEn || p.paramNameEn && p.paramNameEn !== (p.paramName || src.paramName) && p.paramNameEn || mapped || src.paramNameEn || p.paramNameEn;
1888
+ return {
1889
+ ...p,
1890
+ paramName: p.paramName || src.paramName,
1891
+ paramNameEn: nextEn,
1892
+ i18nKey: p.i18nKey || src.i18nKey,
1893
+ i18nParams: p.i18nParams || src.i18nParams
1894
+ };
1895
+ });
1896
+ const srcLaneMap = /* @__PURE__ */ Object.create(null);
1897
+ const collectLanes = (lanes) => {
1898
+ (lanes || []).forEach((lane) => {
1899
+ if (!lane) return;
1900
+ if (lane.laneKey) srcLaneMap[`key:${lane.laneKey}`] = lane;
1901
+ if (lane.laneName) srcLaneMap[`name:${lane.laneName}`] = lane;
1902
+ });
1903
+ };
1904
+ collectLanes(ds.lanes);
1905
+ (ds.templates || []).forEach((tpl) => collectLanes(tpl && tpl.lanes));
1906
+ const mergeLane = (lane) => {
1907
+ if (!lane) return lane;
1908
+ const src = lane.laneKey && srcLaneMap[`key:${lane.laneKey}`] || lane.laneName && srcLaneMap[`name:${lane.laneName}`];
1909
+ const mapped = src && (LANE_NAME_EN[src.laneName] || LANE_NAME_EN[src.laneKey]) || LANE_NAME_EN[lane.laneName] || LANE_NAME_EN[lane.laneKey];
1910
+ const srcEn = src && src.laneNameEn;
1911
+ const laneEn = lane.laneNameEn;
1912
+ const zhName = src && src.laneName || lane.laneName;
1913
+ const nextEn = srcEn && srcEn !== zhName && srcEn || laneEn && laneEn !== zhName && laneEn || mapped || srcEn || laneEn;
1914
+ const next = src || nextEn ? {
1915
+ ...lane,
1916
+ laneNameEn: nextEn
1917
+ } : lane;
1918
+ if (next.lanes) next.lanes = next.lanes.map(mergeLane);
1919
+ return next;
1920
+ };
1921
+ const templates = (dbDatas && dbDatas.templates ? dbDatas.templates : []).map((tpl) => ({
1922
+ ...tpl,
1923
+ lanes: (tpl.lanes || []).map(mergeLane)
1924
+ }));
1925
+ return { ...dbDatas || {}, params, templates };
1926
+ }
1927
+ function useKdI18n() {
1928
+ const currentLocale = computed(() => localeState.current);
1929
+ function $kdInnerTrans(key, params) {
1930
+ void localeState.current;
1931
+ return innerTrans(key, params);
1932
+ }
1933
+ function $kdOuterTrans(item, textField = "label") {
1934
+ void localeState.current;
1935
+ return outerTrans(item, textField);
1936
+ }
1937
+ function resolveParamDisplayName(item) {
1938
+ void localeState.current;
1939
+ return resolveParamName(item);
1940
+ }
1941
+ function resolveLaneDisplayName(item) {
1942
+ void localeState.current;
1943
+ return resolveLaneName(item);
1944
+ }
1945
+ function formatParamDisplayLabel(item) {
1946
+ void localeState.current;
1947
+ return formatParamLabel(item);
1948
+ }
1949
+ function resolveText(item, zhField, enField) {
1950
+ void localeState.current;
1951
+ return resolveLocalizedText(item, zhField, enField);
1952
+ }
1953
+ return {
1954
+ currentLocale,
1955
+ localeState,
1956
+ $kdInnerTrans,
1957
+ $kdOuterTrans,
1958
+ resolveParamName: resolveParamDisplayName,
1959
+ resolveLaneName: resolveLaneDisplayName,
1960
+ formatParamLabel: formatParamDisplayLabel,
1961
+ resolveLocalizedText: resolveText,
1962
+ setCurrentLocale,
1963
+ getCurrentLocale
1964
+ };
1965
+ }
1966
+ function installKdI18n(app) {
1967
+ if (!app || !app.config || !app.config.globalProperties) return;
1968
+ app.config.globalProperties.$kdInnerTrans = function(key, params) {
1969
+ void localeState.current;
1970
+ return innerTrans(key, params);
1971
+ };
1972
+ app.config.globalProperties.$kdOuterTrans = function(item, textField = "label") {
1973
+ void localeState.current;
1974
+ return outerTrans(item, textField);
1975
+ };
1976
+ }
1428
1977
  const _hoisted_1$c = { class: "kd-lane-lane-content" };
1429
1978
  const _hoisted_2$b = { class: "template-buttons" };
1430
1979
  const _sfc_main$d = {
@@ -1446,13 +1995,14 @@ const _sfc_main$d = {
1446
1995
  const upsertLane = inject("upsertLane");
1447
1996
  const setTargetData = inject("setTargetData");
1448
1997
  inject("setExpanded");
1998
+ const { $kdInnerTrans } = useKdI18n();
1449
1999
  const props = __props;
1450
2000
  const emit = __emit;
1451
2001
  const template = ref(null);
1452
2002
  const formData = ref(Object.assign(props.laneInfo));
1453
- const rules = {
1454
- sort: [{ required: true, message: "请输入泳道顺序", trigger: "blur" }]
1455
- };
2003
+ const rules = computed(() => ({
2004
+ sort: [{ required: true, message: $kdInnerTrans("kdLaneChart.validation.enterLaneSort"), trigger: "blur" }]
2005
+ }));
1456
2006
  const saving = ref(false);
1457
2007
  function editable() {
1458
2008
  emit("editable");
@@ -1463,7 +2013,7 @@ const _sfc_main$d = {
1463
2013
  return;
1464
2014
  }
1465
2015
  if (typeof upsertLane !== "function") {
1466
- ElMessage({ type: "error", message: "没有配置泳道管理方法" });
2016
+ ElMessage({ type: "error", message: $kdInnerTrans("kdLaneChart.msg.noLaneManager") });
1467
2017
  return;
1468
2018
  }
1469
2019
  saving.value = true;
@@ -1478,7 +2028,7 @@ const _sfc_main$d = {
1478
2028
  }).then(() => {
1479
2029
  ElMessage({
1480
2030
  type: "success",
1481
- message: "保存成功"
2031
+ message: $kdInnerTrans("message.saveSuccess")
1482
2032
  });
1483
2033
  }).finally(() => {
1484
2034
  saving.value = false;
@@ -1504,7 +2054,7 @@ const _sfc_main$d = {
1504
2054
  const _component_el_button = resolveComponent("el-button");
1505
2055
  return openBlock(), createElementBlock("div", _hoisted_1$c, [
1506
2056
  createVNode(_component_el_form, {
1507
- rules,
2057
+ rules: rules.value,
1508
2058
  ref_key: "template",
1509
2059
  ref: template,
1510
2060
  model: formData.value,
@@ -1512,7 +2062,7 @@ const _sfc_main$d = {
1512
2062
  }, {
1513
2063
  default: withCtx(() => [
1514
2064
  createVNode(_component_el_form_item, {
1515
- label: "泳道顺序",
2065
+ label: unref($kdInnerTrans)("kdLaneChart.label.laneSort"),
1516
2066
  prop: "sort"
1517
2067
  }, {
1518
2068
  default: withCtx(() => [
@@ -1523,10 +2073,10 @@ const _sfc_main$d = {
1523
2073
  }, null, 8, ["modelValue", "disabled"])
1524
2074
  ]),
1525
2075
  _: 1
1526
- }),
2076
+ }, 8, ["label"]),
1527
2077
  formData.value.createUser !== "SYSTEM_USER" ? (openBlock(), createBlock(_component_el_form_item, {
1528
2078
  key: 0,
1529
- label: "对数轴",
2079
+ label: unref($kdInnerTrans)("kdLaneChart.label.logScale"),
1530
2080
  prop: "isLogScale"
1531
2081
  }, {
1532
2082
  default: withCtx(() => [
@@ -1538,15 +2088,15 @@ const _sfc_main$d = {
1538
2088
  }, {
1539
2089
  default: withCtx(() => [
1540
2090
  createVNode(_component_el_radio, { value: "1" }, {
1541
- default: withCtx(() => [..._cache[3] || (_cache[3] = [
1542
- createTextVNode("", -1)
1543
- ])]),
2091
+ default: withCtx(() => [
2092
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.yes")), 1)
2093
+ ]),
1544
2094
  _: 1
1545
2095
  }),
1546
2096
  createVNode(_component_el_radio, { value: "0" }, {
1547
- default: withCtx(() => [..._cache[4] || (_cache[4] = [
1548
- createTextVNode("", -1)
1549
- ])]),
2097
+ default: withCtx(() => [
2098
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.no")), 1)
2099
+ ]),
1550
2100
  _: 1
1551
2101
  })
1552
2102
  ]),
@@ -1554,15 +2104,15 @@ const _sfc_main$d = {
1554
2104
  }, 8, ["modelValue", "disabled"])
1555
2105
  ]),
1556
2106
  _: 1
1557
- })) : createCommentVNode("", true)
2107
+ }, 8, ["label"])) : createCommentVNode("", true)
1558
2108
  ]),
1559
2109
  _: 1
1560
- }, 8, ["model"]),
2110
+ }, 8, ["rules", "model"]),
1561
2111
  createElementVNode("div", _hoisted_2$b, [
1562
2112
  createVNode(_component_el_button, { onClick: editable }, {
1563
- default: withCtx(() => [..._cache[5] || (_cache[5] = [
1564
- createTextVNode("编辑", -1)
1565
- ])]),
2113
+ default: withCtx(() => [
2114
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.edit")), 1)
2115
+ ]),
1566
2116
  _: 1
1567
2117
  }),
1568
2118
  createVNode(_component_el_button, {
@@ -1571,9 +2121,9 @@ const _sfc_main$d = {
1571
2121
  onClick: _cache[2] || (_cache[2] = ($event) => submitForm()),
1572
2122
  loading: saving.value
1573
2123
  }, {
1574
- default: withCtx(() => [..._cache[6] || (_cache[6] = [
1575
- createTextVNode("保存", -1)
1576
- ])]),
2124
+ default: withCtx(() => [
2125
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.save")), 1)
2126
+ ]),
1577
2127
  _: 1
1578
2128
  }, 8, ["disabled", "loading"])
1579
2129
  ])
@@ -1581,7 +2131,7 @@ const _sfc_main$d = {
1581
2131
  };
1582
2132
  }
1583
2133
  };
1584
- const LaneEdit = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-dd1accfd"]]);
2134
+ const LaneEdit = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-6d94a7c2"]]);
1585
2135
  const _hoisted_1$b = { class: "kd-lane-line-content" };
1586
2136
  const _hoisted_2$a = { class: "template-buttons" };
1587
2137
  const _sfc_main$c = {
@@ -1603,18 +2153,19 @@ const _sfc_main$c = {
1603
2153
  const setTargetData = inject("setTargetData");
1604
2154
  inject("setExpanded");
1605
2155
  const getThemeName = inject("getThemeName");
2156
+ const { $kdInnerTrans, resolveParamName: resolveParamName2 } = useKdI18n();
1606
2157
  const props = __props;
1607
2158
  const emit = __emit;
1608
2159
  const validatorNumber = (rule, value, callback) => {
1609
2160
  if (isNaN(value)) {
1610
- callback(new Error("请输入数字值"));
2161
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.enterNumberValue")));
1611
2162
  } else {
1612
2163
  callback();
1613
2164
  }
1614
2165
  };
1615
2166
  const sizeLimit = (rule, value, callback) => {
1616
2167
  if (value < 1 || value > 4) {
1617
- callback(new Error("数字必须在1-4之间"));
2168
+ callback(new Error($kdInnerTrans("drillOptimize.validation.numberRange14")));
1618
2169
  } else {
1619
2170
  callback();
1620
2171
  }
@@ -1624,56 +2175,56 @@ const _sfc_main$c = {
1624
2175
  const saving = ref(false);
1625
2176
  const lines = [
1626
2177
  {
1627
- name: "直线",
2178
+ name: "riskWarning.lineType.solidLine",
1628
2179
  value: "solid"
1629
2180
  },
1630
2181
  {
1631
- name: "虚线",
2182
+ name: "riskWarning.lineType.dashedLine",
1632
2183
  value: "dashed"
1633
2184
  },
1634
2185
  {
1635
- name: "点线",
2186
+ name: "riskWarning.lineType.dottedLine",
1636
2187
  value: "dotted"
1637
2188
  },
1638
2189
  {
1639
- name: "面积",
2190
+ name: "drillOptimize.lineType.area",
1640
2191
  value: "area"
1641
2192
  }
1642
2193
  ];
1643
- const rules = {
2194
+ const rules = computed(() => ({
1644
2195
  min: [
1645
- { required: true, message: "请输入最小值", trigger: "blur" },
2196
+ { required: true, message: $kdInnerTrans("drillOptimize.validation.inputMinValue"), trigger: "blur" },
1646
2197
  { validator: validatorNumber, trigger: "blur" }
1647
2198
  ],
1648
2199
  lineSort: [
1649
2200
  {
1650
2201
  required: true,
1651
- message: "请输入曲线顺序(1-10)",
2202
+ message: $kdInnerTrans("drillOptimize.validation.inputLineSort"),
1652
2203
  trigger: "blur"
1653
2204
  },
1654
- { type: "number", message: "顺序必须为数字值" }
2205
+ { type: "number", message: $kdInnerTrans("drillOptimize.validation.sortMustBeNumber") }
1655
2206
  ],
1656
2207
  max: [
1657
- { required: true, message: "请输入最大值", trigger: "blur" },
2208
+ { required: true, message: $kdInnerTrans("drillOptimize.validation.inputMaxValue"), trigger: "blur" },
1658
2209
  { validator: validatorNumber, trigger: "blur" }
1659
2210
  ],
1660
2211
  lineSize: [
1661
- { required: true, message: "请输入曲线粗细", trigger: "blur" },
2212
+ { required: true, message: $kdInnerTrans("drillOptimize.validation.inputLineWidth"), trigger: "blur" },
1662
2213
  { validator: validatorNumber, trigger: "blur" },
1663
2214
  {
1664
2215
  validator: sizeLimit,
1665
- message: "曲线粗细必须在1-4之间",
2216
+ message: $kdInnerTrans("drillOptimize.validation.lineWidthRange"),
1666
2217
  trigger: "blur"
1667
2218
  }
1668
2219
  ],
1669
2220
  lineColor: [
1670
- { required: true, message: "请选择曲线颜色", trigger: "blur" }
2221
+ { required: true, message: $kdInnerTrans("drillOptimize.validation.selectCurveColor"), trigger: "blur" }
1671
2222
  ],
1672
- lineType: [{ required: true, message: "请选择线型", trigger: "blur" }],
2223
+ lineType: [{ required: true, message: $kdInnerTrans("drillOptimize.validation.selectLineType"), trigger: "blur" }],
1673
2224
  paramId: [
1674
- { required: true, message: "请选择参数名称", trigger: "blur" }
2225
+ { required: true, message: $kdInnerTrans("drillOptimize.validation.selectParamName"), trigger: "blur" }
1675
2226
  ]
1676
- };
2227
+ }));
1677
2228
  function editable() {
1678
2229
  emit("editable");
1679
2230
  }
@@ -1688,8 +2239,9 @@ const _sfc_main$c = {
1688
2239
  }
1689
2240
  saving.value = true;
1690
2241
  const origin = props.template || {};
1691
- const rangeChanged = Number(formData.value.min) !== Number(origin.min) || Number(formData.value.max) !== Number(origin.max);
1692
- formData.value.templateRangeSaved = !!rangeChanged;
2242
+ const isUnset = (v) => v === void 0 || v === null || v === "";
2243
+ const rangeChanged = isUnset(origin.min) || isUnset(origin.max) || Number(formData.value.min) !== Number(origin.min) || Number(formData.value.max) !== Number(origin.max);
2244
+ formData.value.templateRangeSaved = !!(origin.templateRangeSaved || rangeChanged);
1693
2245
  const result = upsertLine(formData.value);
1694
2246
  if (result instanceof Promise) {
1695
2247
  result.then((res) => {
@@ -1697,7 +2249,7 @@ const _sfc_main$c = {
1697
2249
  }).then(() => {
1698
2250
  ElMessage({
1699
2251
  type: "success",
1700
- message: "保存成功"
2252
+ message: $kdInnerTrans("message.saveSuccess")
1701
2253
  });
1702
2254
  }).finally(() => {
1703
2255
  saving.value = false;
@@ -1706,7 +2258,7 @@ const _sfc_main$c = {
1706
2258
  saving.value = false;
1707
2259
  }
1708
2260
  } else {
1709
- return Promise.reject(new Error("未配置线条设置函数"));
2261
+ return Promise.reject(new Error($kdInnerTrans("kdLaneChart.msg.noLineManager")));
1710
2262
  }
1711
2263
  }).catch((e) => {
1712
2264
  console.log(e);
@@ -1745,7 +2297,7 @@ const _sfc_main$c = {
1745
2297
  const _component_el_button = resolveComponent("el-button");
1746
2298
  return openBlock(), createElementBlock("div", _hoisted_1$b, [
1747
2299
  createVNode(_component_el_form, {
1748
- rules,
2300
+ rules: rules.value,
1749
2301
  ref_key: "templateForm",
1750
2302
  ref: templateForm,
1751
2303
  model: formData.value,
@@ -1753,7 +2305,7 @@ const _sfc_main$c = {
1753
2305
  }, {
1754
2306
  default: withCtx(() => [
1755
2307
  createVNode(_component_el_form_item, {
1756
- label: "参数名称",
2308
+ label: unref($kdInnerTrans)("drillOptimize.label.paramName"),
1757
2309
  prop: "paramId",
1758
2310
  "label-width": "120px"
1759
2311
  }, {
@@ -1762,25 +2314,25 @@ const _sfc_main$c = {
1762
2314
  modelValue: formData.value.paramId,
1763
2315
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => formData.value.paramId = $event),
1764
2316
  filterable: "",
1765
- placeholder: "请选择",
2317
+ placeholder: unref($kdInnerTrans)("common.placeholder.select"),
1766
2318
  "popper-class": "kd-curve-2d-select-popup"
1767
2319
  }, {
1768
2320
  default: withCtx(() => [
1769
2321
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.params, (item) => {
1770
2322
  return openBlock(), createBlock(_component_el_option, {
1771
2323
  key: item.paramId,
1772
- label: item.paramName,
2324
+ label: unref(resolveParamName2)(item),
1773
2325
  value: item.paramId
1774
2326
  }, null, 8, ["label", "value"]);
1775
2327
  }), 128))
1776
2328
  ]),
1777
2329
  _: 1
1778
- }, 8, ["modelValue"])
2330
+ }, 8, ["modelValue", "placeholder"])
1779
2331
  ]),
1780
2332
  _: 1
1781
- }),
2333
+ }, 8, ["label"]),
1782
2334
  createVNode(_component_el_form_item, {
1783
- label: "最小值",
2335
+ label: unref($kdInnerTrans)("riskWarning.label.minValue"),
1784
2336
  prop: "min",
1785
2337
  "label-width": "120px"
1786
2338
  }, {
@@ -1791,9 +2343,9 @@ const _sfc_main$c = {
1791
2343
  }, null, 8, ["modelValue"])
1792
2344
  ]),
1793
2345
  _: 1
1794
- }),
2346
+ }, 8, ["label"]),
1795
2347
  createVNode(_component_el_form_item, {
1796
- label: "最大值",
2348
+ label: unref($kdInnerTrans)("riskWarning.label.maxValue"),
1797
2349
  prop: "max",
1798
2350
  "label-width": "120px"
1799
2351
  }, {
@@ -1804,9 +2356,9 @@ const _sfc_main$c = {
1804
2356
  }, null, 8, ["modelValue"])
1805
2357
  ]),
1806
2358
  _: 1
1807
- }),
2359
+ }, 8, ["label"]),
1808
2360
  createVNode(_component_el_form_item, {
1809
- label: "曲线粗细",
2361
+ label: unref($kdInnerTrans)("riskWarning.label.lineWidth"),
1810
2362
  prop: "lineSize",
1811
2363
  "label-width": "120px"
1812
2364
  }, {
@@ -1819,9 +2371,9 @@ const _sfc_main$c = {
1819
2371
  }, null, 8, ["modelValue"])
1820
2372
  ]),
1821
2373
  _: 1
1822
- }),
2374
+ }, 8, ["label"]),
1823
2375
  createVNode(_component_el_form_item, {
1824
- label: "曲线颜色",
2376
+ label: unref($kdInnerTrans)("riskWarning.label.lineColor"),
1825
2377
  prop: "lineColor",
1826
2378
  "label-width": "120px"
1827
2379
  }, {
@@ -1835,9 +2387,9 @@ const _sfc_main$c = {
1835
2387
  }, null, 8, ["modelValue", "disabled"])
1836
2388
  ]),
1837
2389
  _: 1
1838
- }),
2390
+ }, 8, ["label"]),
1839
2391
  createVNode(_component_el_form_item, {
1840
- label: "线型",
2392
+ label: unref($kdInnerTrans)("drillOptimize.label.lineType"),
1841
2393
  prop: "lineType",
1842
2394
  "label-width": "120px"
1843
2395
  }, {
@@ -1845,7 +2397,7 @@ const _sfc_main$c = {
1845
2397
  createVNode(_component_el_select, {
1846
2398
  modelValue: formData.value.lineType,
1847
2399
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => formData.value.lineType = $event),
1848
- placeholder: "请选择",
2400
+ placeholder: unref($kdInnerTrans)("common.placeholder.select"),
1849
2401
  disabled: formData.value.isGradient || __props.formDisable || Object.prototype.hasOwnProperty.call(formData.value, "recommendParamId"),
1850
2402
  "popper-class": "kd-curve-2d-select-popup"
1851
2403
  }, {
@@ -1853,18 +2405,18 @@ const _sfc_main$c = {
1853
2405
  (openBlock(), createElementBlock(Fragment, null, renderList(lines, (item) => {
1854
2406
  return createVNode(_component_el_option, {
1855
2407
  key: item.value,
1856
- label: item.name,
2408
+ label: unref($kdInnerTrans)(item.name),
1857
2409
  value: item.value
1858
2410
  }, null, 8, ["label", "value"]);
1859
2411
  }), 64))
1860
2412
  ]),
1861
2413
  _: 1
1862
- }, 8, ["modelValue", "disabled"])
2414
+ }, 8, ["modelValue", "placeholder", "disabled"])
1863
2415
  ]),
1864
2416
  _: 1
1865
- }),
2417
+ }, 8, ["label"]),
1866
2418
  createVNode(_component_el_form_item, {
1867
- label: "曲线顺序",
2419
+ label: unref($kdInnerTrans)("drillOptimize.label.lineSort"),
1868
2420
  prop: "lineSort",
1869
2421
  "label-width": "120px"
1870
2422
  }, {
@@ -1876,16 +2428,16 @@ const _sfc_main$c = {
1876
2428
  }, null, 8, ["modelValue"])
1877
2429
  ]),
1878
2430
  _: 1
1879
- }),
2431
+ }, 8, ["label"]),
1880
2432
  createCommentVNode("", true)
1881
2433
  ]),
1882
2434
  _: 1
1883
- }, 8, ["model", "disabled"]),
2435
+ }, 8, ["rules", "model", "disabled"]),
1884
2436
  withDirectives(createElementVNode("div", _hoisted_2$a, [
1885
2437
  createVNode(_component_el_button, { onClick: editable }, {
1886
- default: withCtx(() => [..._cache[11] || (_cache[11] = [
1887
- createTextVNode("编辑", -1)
1888
- ])]),
2438
+ default: withCtx(() => [
2439
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.edit")), 1)
2440
+ ]),
1889
2441
  _: 1
1890
2442
  }),
1891
2443
  createVNode(_component_el_button, {
@@ -1893,9 +2445,9 @@ const _sfc_main$c = {
1893
2445
  disabled: __props.formDisable,
1894
2446
  onClick: _cache[8] || (_cache[8] = ($event) => submitForm())
1895
2447
  }, {
1896
- default: withCtx(() => [..._cache[12] || (_cache[12] = [
1897
- createTextVNode("保存", -1)
1898
- ])]),
2448
+ default: withCtx(() => [
2449
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.save")), 1)
2450
+ ]),
1899
2451
  _: 1
1900
2452
  }, 8, ["disabled"])
1901
2453
  ], 512), [
@@ -1905,7 +2457,7 @@ const _sfc_main$c = {
1905
2457
  };
1906
2458
  }
1907
2459
  };
1908
- const LineEdit = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-9c0ae8d5"]]);
2460
+ const LineEdit = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-b4e2fdcd"]]);
1909
2461
  const _hoisted_1$a = { class: "kd-lane-template-content" };
1910
2462
  const _hoisted_2$9 = { class: "template-buttons" };
1911
2463
  const _sfc_main$b = {
@@ -1930,13 +2482,14 @@ const _sfc_main$b = {
1930
2482
  const upsertTemplate = inject("upsertTemplate");
1931
2483
  const setTargetData = inject("setTargetData");
1932
2484
  inject("setExpanded");
2485
+ const { $kdInnerTrans } = useKdI18n();
1933
2486
  const props = __props;
1934
2487
  const emit = __emit;
1935
2488
  const template = ref(null);
1936
2489
  const formData = ref(Object.assign({ sort: void 0 }, props.currentTemplate));
1937
- const rules = {
1938
- templateName: [{ required: true, message: "请输入模板名称", trigger: "blur" }]
1939
- };
2490
+ const rules = computed(() => ({
2491
+ templateName: [{ required: true, message: $kdInnerTrans("drillOptimize.validation.inputTemplateName"), trigger: "blur" }]
2492
+ }));
1940
2493
  const saving = ref(false);
1941
2494
  function editable() {
1942
2495
  emit("editable");
@@ -1947,7 +2500,7 @@ const _sfc_main$b = {
1947
2500
  return;
1948
2501
  }
1949
2502
  if (typeof upsertTemplate !== "function") {
1950
- ElMessage({ type: "error", message: "没有配置模板管理方法" });
2503
+ ElMessage({ type: "error", message: $kdInnerTrans("kdLaneChart.msg.noTemplateManager") });
1951
2504
  return;
1952
2505
  }
1953
2506
  saving.value = true;
@@ -1962,7 +2515,7 @@ const _sfc_main$b = {
1962
2515
  }).then(() => {
1963
2516
  ElMessage({
1964
2517
  type: "success",
1965
- message: "保存成功"
2518
+ message: $kdInnerTrans("message.saveSuccess")
1966
2519
  });
1967
2520
  }).finally(() => {
1968
2521
  saving.value = false;
@@ -1974,10 +2527,10 @@ const _sfc_main$b = {
1974
2527
  }
1975
2528
  const baseTemplate = computed(() => {
1976
2529
  if (!props.userTemplate) {
1977
- return [{ name: "空白模板", value: "" }];
2530
+ return [{ name: $kdInnerTrans("drillOptimize.template.blankTemplate"), i18nKey: "drillOptimize.template.blankTemplate", value: "" }];
1978
2531
  } else {
1979
2532
  return [
1980
- { name: "空白模板", value: "" },
2533
+ { name: $kdInnerTrans("drillOptimize.template.blankTemplate"), i18nKey: "drillOptimize.template.blankTemplate", value: "" },
1981
2534
  ...props.userTemplate.map((item) => {
1982
2535
  return {
1983
2536
  name: item.templateName,
@@ -2005,7 +2558,7 @@ const _sfc_main$b = {
2005
2558
  const _component_el_button = resolveComponent("el-button");
2006
2559
  return openBlock(), createElementBlock("div", _hoisted_1$a, [
2007
2560
  createVNode(_component_el_form, {
2008
- rules,
2561
+ rules: rules.value,
2009
2562
  ref_key: "template",
2010
2563
  ref: template,
2011
2564
  model: formData.value,
@@ -2013,7 +2566,7 @@ const _sfc_main$b = {
2013
2566
  }, {
2014
2567
  default: withCtx(() => [
2015
2568
  createVNode(_component_el_form_item, {
2016
- label: "模板名称",
2569
+ label: unref($kdInnerTrans)("drillOptimize.label.templateName"),
2017
2570
  prop: "templateName"
2018
2571
  }, {
2019
2572
  default: withCtx(() => [
@@ -2024,9 +2577,9 @@ const _sfc_main$b = {
2024
2577
  }, null, 8, ["modelValue", "disabled"])
2025
2578
  ]),
2026
2579
  _: 1
2027
- }),
2580
+ }, 8, ["label"]),
2028
2581
  createVNode(_component_el_form_item, {
2029
- label: "默认模板",
2582
+ label: unref($kdInnerTrans)("drillOptimize.label.defaultTemplate"),
2030
2583
  prop: "isPublic"
2031
2584
  }, {
2032
2585
  default: withCtx(() => [
@@ -2038,15 +2591,15 @@ const _sfc_main$b = {
2038
2591
  }, {
2039
2592
  default: withCtx(() => [
2040
2593
  createVNode(_component_el_radio, { value: "1" }, {
2041
- default: withCtx(() => [..._cache[6] || (_cache[6] = [
2042
- createTextVNode("", -1)
2043
- ])]),
2594
+ default: withCtx(() => [
2595
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.yes")), 1)
2596
+ ]),
2044
2597
  _: 1
2045
2598
  }),
2046
2599
  createVNode(_component_el_radio, { value: "0" }, {
2047
- default: withCtx(() => [..._cache[7] || (_cache[7] = [
2048
- createTextVNode("", -1)
2049
- ])]),
2600
+ default: withCtx(() => [
2601
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.no")), 1)
2602
+ ]),
2050
2603
  _: 1
2051
2604
  })
2052
2605
  ]),
@@ -2054,9 +2607,9 @@ const _sfc_main$b = {
2054
2607
  }, 8, ["modelValue", "disabled"])
2055
2608
  ]),
2056
2609
  _: 1
2057
- }),
2610
+ }, 8, ["label"]),
2058
2611
  createVNode(_component_el_form_item, {
2059
- label: "曲线高度占比",
2612
+ label: unref($kdInnerTrans)("drillOptimize.label.curveHeightRatio"),
2060
2613
  prop: "col1"
2061
2614
  }, {
2062
2615
  default: withCtx(() => [
@@ -2089,16 +2642,16 @@ const _sfc_main$b = {
2089
2642
  }),
2090
2643
  createVNode(_component_el_option, {
2091
2644
  value: "1",
2092
- label: "全屏"
2093
- })
2645
+ label: unref($kdInnerTrans)("trackDesign.label.fullscreen")
2646
+ }, null, 8, ["label"])
2094
2647
  ]),
2095
2648
  _: 1
2096
2649
  }, 8, ["modelValue", "disabled"])
2097
2650
  ]),
2098
2651
  _: 1
2099
- }),
2652
+ }, 8, ["label"]),
2100
2653
  withDirectives(createVNode(_component_el_form_item, {
2101
- label: "选择基础模板",
2654
+ label: unref($kdInnerTrans)("drillOptimize.label.selectBaseTemplate"),
2102
2655
  prop: "lineType",
2103
2656
  disabled: __props.formDisable
2104
2657
  }, {
@@ -2106,27 +2659,27 @@ const _sfc_main$b = {
2106
2659
  createVNode(_component_el_select, {
2107
2660
  modelValue: formData.value.baseTemplate,
2108
2661
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => formData.value.baseTemplate = $event),
2109
- placeholder: "请选择",
2662
+ placeholder: unref($kdInnerTrans)("common.placeholder.select"),
2110
2663
  "popper-class": "kd-curve-2d-select-popup"
2111
2664
  }, {
2112
2665
  default: withCtx(() => [
2113
2666
  (openBlock(true), createElementBlock(Fragment, null, renderList(baseTemplate.value, (item) => {
2114
2667
  return openBlock(), createBlock(_component_el_option, {
2115
2668
  key: item.value,
2116
- label: item.name,
2669
+ label: item.i18nKey ? unref($kdInnerTrans)(item.i18nKey) : item.name,
2117
2670
  value: item.value
2118
2671
  }, null, 8, ["label", "value"]);
2119
2672
  }), 128))
2120
2673
  ]),
2121
2674
  _: 1
2122
- }, 8, ["modelValue"])
2675
+ }, 8, ["modelValue", "placeholder"])
2123
2676
  ]),
2124
2677
  _: 1
2125
- }, 8, ["disabled"]), [
2678
+ }, 8, ["label", "disabled"]), [
2126
2679
  [vShow, !__props.currentTemplate.templateId]
2127
2680
  ]),
2128
2681
  createVNode(_component_el_form_item, {
2129
- label: "顺序",
2682
+ label: unref($kdInnerTrans)("drillOptimize.label.lineSort"),
2130
2683
  prop: "sort",
2131
2684
  "label-width": "120px"
2132
2685
  }, {
@@ -2139,15 +2692,15 @@ const _sfc_main$b = {
2139
2692
  }, null, 8, ["modelValue", "disabled"])
2140
2693
  ]),
2141
2694
  _: 1
2142
- })
2695
+ }, 8, ["label"])
2143
2696
  ]),
2144
2697
  _: 1
2145
- }, 8, ["model"]),
2698
+ }, 8, ["rules", "model"]),
2146
2699
  createElementVNode("div", _hoisted_2$9, [
2147
2700
  createVNode(_component_el_button, { onClick: editable }, {
2148
- default: withCtx(() => [..._cache[8] || (_cache[8] = [
2149
- createTextVNode("编辑", -1)
2150
- ])]),
2701
+ default: withCtx(() => [
2702
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.edit")), 1)
2703
+ ]),
2151
2704
  _: 1
2152
2705
  }),
2153
2706
  createVNode(_component_el_button, {
@@ -2156,9 +2709,9 @@ const _sfc_main$b = {
2156
2709
  onClick: _cache[5] || (_cache[5] = ($event) => submitForm()),
2157
2710
  loading: saving.value
2158
2711
  }, {
2159
- default: withCtx(() => [..._cache[9] || (_cache[9] = [
2160
- createTextVNode("保存", -1)
2161
- ])]),
2712
+ default: withCtx(() => [
2713
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.save")), 1)
2714
+ ]),
2162
2715
  _: 1
2163
2716
  }, 8, ["disabled", "loading"])
2164
2717
  ])
@@ -2166,7 +2719,7 @@ const _sfc_main$b = {
2166
2719
  };
2167
2720
  }
2168
2721
  };
2169
- const TemplateEdit = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-7a2c89bf"]]);
2722
+ const TemplateEdit = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-11f6c16c"]]);
2170
2723
  const _hoisted_1$9 = ["onContextmenu"];
2171
2724
  const _hoisted_2$8 = ["onMouseover", "onMouseleave"];
2172
2725
  const _hoisted_3$7 = { style: { "padding-left": "5px" } };
@@ -2216,6 +2769,7 @@ const _sfc_main$a = {
2216
2769
  const delTemplate = inject("delTemplate");
2217
2770
  const delLane = inject("delLane");
2218
2771
  const delLine = inject("delLine");
2772
+ const { $kdInnerTrans, resolveParamName: resolveParamName2, resolveLaneName: resolveLaneName2 } = useKdI18n();
2219
2773
  const props = __props;
2220
2774
  const templateContentShow = ref(false);
2221
2775
  const templateDisable = ref(false);
@@ -2243,7 +2797,7 @@ const _sfc_main$a = {
2243
2797
  if (!nameConfig) {
2244
2798
  return line.paramId;
2245
2799
  }
2246
- return nameConfig.paramName;
2800
+ return resolveParamName2(nameConfig);
2247
2801
  }
2248
2802
  function handleMouseEnter(event, nodeId) {
2249
2803
  const target = event.currentTarget;
@@ -2345,7 +2899,7 @@ const _sfc_main$a = {
2345
2899
  const nextDataType = judgeDataType(node);
2346
2900
  dataType.value = nextDataType;
2347
2901
  if (data.createUser == "SYSTEM_USER") {
2348
- ElMessage.warning("系统模板不能编辑");
2902
+ ElMessage.warning($kdInnerTrans("kdLaneChart.msg.systemTemplateReadOnly"));
2349
2903
  return;
2350
2904
  }
2351
2905
  vueSimpleContextMenu.value.showMenu(event, data);
@@ -2389,9 +2943,9 @@ const _sfc_main$a = {
2389
2943
  lineInfo.value = { laneId: nodeData.laneId, isUsed: "1", lineSize: 2 };
2390
2944
  }
2391
2945
  function askForDelTemplate(nodeData) {
2392
- ElMessageBox.confirm("此操作将删除该模板, 是否继续?", "提示", {
2393
- confirmButtonText: "确定",
2394
- cancelButtonText: "取消",
2946
+ ElMessageBox.confirm($kdInnerTrans("drillOptimize.msg.confirmDeleteTemplate"), $kdInnerTrans("common.info"), {
2947
+ confirmButtonText: $kdInnerTrans("common.confirm"),
2948
+ cancelButtonText: $kdInnerTrans("common.cancel"),
2395
2949
  type: "warning"
2396
2950
  }).then(() => {
2397
2951
  nodeData.bsflag = "1";
@@ -2399,18 +2953,18 @@ const _sfc_main$a = {
2399
2953
  if (delTemplate instanceof Function) {
2400
2954
  return delTemplate(nodeData);
2401
2955
  } else {
2402
- return Promise.reject(new Error("未配置删除模板函数"));
2956
+ return Promise.reject(new Error($kdInnerTrans("kdLaneChart.msg.noDeleteTemplateFn")));
2403
2957
  }
2404
2958
  }).catch((e) => {
2405
- ElMessage.error(e.message || "删除失败");
2959
+ ElMessage.error(e.message || $kdInnerTrans("dashboard.msg.deleteFail"));
2406
2960
  }).finally(() => {
2407
2961
  curveConfigLoading.value = false;
2408
2962
  });
2409
2963
  }
2410
2964
  function askForDelLane(nodeData) {
2411
- ElMessageBox.confirm("此操作将删除该泳道, 是否继续?", "提示", {
2412
- confirmButtonText: "确定",
2413
- cancelButtonText: "取消",
2965
+ ElMessageBox.confirm($kdInnerTrans("drillOptimize.msg.confirmDeleteLane"), $kdInnerTrans("common.info"), {
2966
+ confirmButtonText: $kdInnerTrans("common.confirm"),
2967
+ cancelButtonText: $kdInnerTrans("common.cancel"),
2414
2968
  type: "warning"
2415
2969
  }).then(() => {
2416
2970
  nodeData.bsflag = "1";
@@ -2418,44 +2972,44 @@ const _sfc_main$a = {
2418
2972
  if (delLane instanceof Function) {
2419
2973
  return delLane(nodeData);
2420
2974
  } else {
2421
- return Promise.reject(new Error("未配置删除模板函数"));
2975
+ return Promise.reject(new Error($kdInnerTrans("kdLaneChart.msg.noDeleteTemplateFn")));
2422
2976
  }
2423
2977
  }).catch(() => {
2424
- ElMessage.error("删除失败");
2978
+ ElMessage.error($kdInnerTrans("dashboard.msg.deleteFail"));
2425
2979
  }).finally(() => {
2426
2980
  curveConfigLoading.value = false;
2427
2981
  });
2428
2982
  }
2429
2983
  function delParam(nodeData) {
2430
- ElMessageBox.confirm("此操作将删除该参数, 是否继续?", "提示", {
2431
- confirmButtonText: "确定",
2432
- cancelButtonText: "取消",
2984
+ ElMessageBox.confirm($kdInnerTrans("drillOptimize.msg.confirmDeleteParam"), $kdInnerTrans("common.info"), {
2985
+ confirmButtonText: $kdInnerTrans("common.confirm"),
2986
+ cancelButtonText: $kdInnerTrans("common.cancel"),
2433
2987
  type: "warning"
2434
2988
  }).then(() => {
2435
2989
  nodeData.bsflag = "1";
2436
2990
  if (delLine instanceof Function) {
2437
2991
  return delLine(nodeData);
2438
2992
  } else {
2439
- return Promise.reject(new Error("未配置删除线条函数"));
2993
+ return Promise.reject(new Error($kdInnerTrans("kdLaneChart.msg.noDeleteLineFn")));
2440
2994
  }
2441
2995
  }).catch((e) => {
2442
- ElMessage.error(e.message || "删除失败");
2996
+ ElMessage.error(e.message || $kdInnerTrans("dashboard.msg.deleteFail"));
2443
2997
  });
2444
2998
  }
2445
2999
  const contextMenuOptions = computed(() => {
2446
3000
  switch (dataType.value) {
2447
3001
  case "template":
2448
3002
  return [
2449
- { name: "新增泳道", key: "addLane" }
3003
+ { name: $kdInnerTrans("drillOptimize.btn.addLane"), key: "addLane" }
2450
3004
  // { name: "删除模板", key: "delTemplate" },
2451
3005
  ];
2452
3006
  case "lane":
2453
3007
  return [
2454
- { name: "新增参数", key: "addParam" },
2455
- { name: "删除泳道", key: "delLane" }
3008
+ { name: $kdInnerTrans("drillOptimize.btn.addParam"), key: "addParam" },
3009
+ { name: $kdInnerTrans("drillOptimize.btn.deleteLane"), key: "delLane" }
2456
3010
  ];
2457
3011
  case "line":
2458
- return [{ name: "删除参数", key: "delParam" }];
3012
+ return [{ name: $kdInnerTrans("drillOptimize.btn.deleteParam"), key: "delParam" }];
2459
3013
  default:
2460
3014
  return [];
2461
3015
  }
@@ -2472,7 +3026,8 @@ const _sfc_main$a = {
2472
3026
  template.lanes = [];
2473
3027
  }
2474
3028
  template.lanes.forEach((lane, index2) => {
2475
- const laneData = { ...lane, id: lane.laneId, label: `泳道${index2 + 1}` };
3029
+ const laneLabel = resolveLaneName2(lane) || $kdInnerTrans("kdLaneChart.label.lanePrefix", { index: index2 + 1 });
3030
+ const laneData = { ...lane, id: lane.laneId, label: laneLabel };
2476
3031
  tData.children.push(laneData);
2477
3032
  if (!laneData.lines) {
2478
3033
  laneData.lines = [];
@@ -2580,9 +3135,9 @@ const _sfc_main$a = {
2580
3135
  }, 8, ["data", "current-node-key", "default-expanded-keys"])),
2581
3136
  createElementVNode("div", _hoisted_4$6, [
2582
3137
  createVNode(_component_el_button, { onClick: addTemplate }, {
2583
- default: withCtx(() => [..._cache[0] || (_cache[0] = [
2584
- createTextVNode("新增模板", -1)
2585
- ])]),
3138
+ default: withCtx(() => [
3139
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("drillOptimize.btn.addTemplate")), 1)
3140
+ ]),
2586
3141
  _: 1
2587
3142
  })
2588
3143
  ])
@@ -2634,7 +3189,7 @@ const _sfc_main$a = {
2634
3189
  };
2635
3190
  }
2636
3191
  };
2637
- const RealTimeCurveConfig = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-f0fbd600"]]);
3192
+ const RealTimeCurveConfig = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-4151dba3"]]);
2638
3193
  const ACTION_TYPE = {
2639
3194
  UPSERT_LINE: "upsertLine",
2640
3195
  DELETE_LINE: "delLine"
@@ -3008,6 +3563,7 @@ const _sfc_main$8 = /* @__PURE__ */ Object.assign({
3008
3563
  },
3009
3564
  emits: ["updateLine"],
3010
3565
  setup(__props, { emit: __emit }) {
3566
+ const { formatParamLabel: formatParamLabel2, currentLocale } = useKdI18n();
3011
3567
  const props = __props;
3012
3568
  const emit = __emit;
3013
3569
  function getFontSize(type) {
@@ -3068,11 +3624,12 @@ const _sfc_main$8 = /* @__PURE__ */ Object.assign({
3068
3624
  return typeof +raw === "number" ? Number(Number(raw).toFixed(3)) : raw;
3069
3625
  }
3070
3626
  function getParamName(line) {
3627
+ void currentLocale.value;
3071
3628
  const nameConfig = props.paramsNameMap[line.paramId];
3072
3629
  if (!nameConfig) {
3073
3630
  return "";
3074
3631
  }
3075
- return `${nameConfig.paramName}${nameConfig.paramUnit ? `(${nameConfig.paramUnit})` : ""}`;
3632
+ return formatParamLabel2(nameConfig);
3076
3633
  }
3077
3634
  function toggleIsUsed() {
3078
3635
  const temp = { ...props.line };
@@ -3174,7 +3731,7 @@ const _sfc_main$8 = /* @__PURE__ */ Object.assign({
3174
3731
  };
3175
3732
  }
3176
3733
  });
3177
- const HeaderItem = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-c18f2812"]]);
3734
+ const HeaderItem = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-bea65042"]]);
3178
3735
  const _hoisted_1$7 = { class: "legend-label" };
3179
3736
  const _hoisted_2$6 = { class: "legend-content" };
3180
3737
  const _hoisted_3$5 = { class: "scale-left" };
@@ -3244,14 +3801,16 @@ const _sfc_main$7 = /* @__PURE__ */ Object.assign({
3244
3801
  },
3245
3802
  emits: ["updateLine"],
3246
3803
  setup(__props, { emit: __emit }) {
3804
+ const { formatParamLabel: formatParamLabel2, $kdInnerTrans, currentLocale } = useKdI18n();
3247
3805
  const props = __props;
3248
3806
  const emit = __emit;
3249
3807
  function getParamName() {
3808
+ void currentLocale.value;
3250
3809
  const nameConfig = props.paramsNameMap[props.line.paramId];
3251
3810
  if (!nameConfig) {
3252
3811
  return "";
3253
3812
  }
3254
- return `${nameConfig.paramName}${nameConfig.paramUnit ? `(${nameConfig.paramUnit})` : ""}`;
3813
+ return formatParamLabel2(nameConfig);
3255
3814
  }
3256
3815
  function getCurrentData(paramId) {
3257
3816
  if (props.formCache.displayType == "float") {
@@ -3270,9 +3829,11 @@ const _sfc_main$7 = /* @__PURE__ */ Object.assign({
3270
3829
  }
3271
3830
  function toggleLegend(label) {
3272
3831
  const temp = { ...props.line };
3273
- if (label === "实际值") {
3832
+ const actualLabel = $kdInnerTrans("kdLaneChart.label.actualValue");
3833
+ const recommendLabel = $kdInnerTrans("kdLaneChart.label.recommendValue");
3834
+ if (label === actualLabel || label === "实际值") {
3274
3835
  temp.isUsed = temp.isUsed == "1" || temp.isUsed == 1 ? "0" : "1";
3275
- } else if (label === "推荐值") {
3836
+ } else if (label === recommendLabel || label === "推荐值") {
3276
3837
  temp.recommendIsUsed = temp.recommendIsUsed == "1" || temp.recommendIsUsed == 1 ? "0" : "1";
3277
3838
  }
3278
3839
  emit("updateLine", temp);
@@ -3284,8 +3845,8 @@ const _sfc_main$7 = /* @__PURE__ */ Object.assign({
3284
3845
  }
3285
3846
  const color = lineColor || props.line.lineColor;
3286
3847
  return [
3287
- { label: "实际值", color, lineType: "solid", isUsed: props.line.isUsed == "1" || props.line.isUsed == 1, data: getCurrentData(props.line.paramId) },
3288
- { label: "推荐值", color, lineType: "dashed", isUsed: props.line.recommendIsUsed == "1" || props.line.recommendIsUsed == 1, data: getCurrentData(props.line.recommendParamId) }
3848
+ { label: $kdInnerTrans("kdLaneChart.label.actualValue"), color, lineType: "solid", isUsed: props.line.isUsed == "1" || props.line.isUsed == 1, data: getCurrentData(props.line.paramId) },
3849
+ { label: $kdInnerTrans("kdLaneChart.label.recommendValue"), color, lineType: "dashed", isUsed: props.line.recommendIsUsed == "1" || props.line.recommendIsUsed == 1, data: getCurrentData(props.line.recommendParamId) }
3289
3850
  ];
3290
3851
  });
3291
3852
  const legendItemStyle = computed(() => {
@@ -3348,7 +3909,7 @@ const _sfc_main$7 = /* @__PURE__ */ Object.assign({
3348
3909
  };
3349
3910
  }
3350
3911
  });
3351
- const LegendItem = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-f3759b70"]]);
3912
+ const LegendItem = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-bd30757b"]]);
3352
3913
  const TREND_LINE_STYLE = {
3353
3914
  stroke: "#FF9800",
3354
3915
  lineWidth: 2,
@@ -5717,6 +6278,44 @@ function bindSetupState(bag, map) {
5717
6278
  if (!bag || !map) return;
5718
6279
  Object.assign(bag, map);
5719
6280
  }
6281
+ function isRangeValueUnset(v) {
6282
+ return v === void 0 || v === null || v === "";
6283
+ }
6284
+ function seedHasExplicitRange(seed) {
6285
+ if (!seed) return false;
6286
+ const hasMin = Object.prototype.hasOwnProperty.call(seed, "min") && !isRangeValueUnset(seed.min);
6287
+ const hasMax = Object.prototype.hasOwnProperty.call(seed, "max") && !isRangeValueUnset(seed.max);
6288
+ return hasMin || hasMax;
6289
+ }
6290
+ function ensureUserSavedLineRanges(dbDatas, dataSource) {
6291
+ if (!dbDatas || !Array.isArray(dbDatas.templates)) return dbDatas;
6292
+ const seedMap = /* @__PURE__ */ Object.create(null);
6293
+ (dataSource && dataSource.templates || []).forEach((tpl) => {
6294
+ (tpl && tpl.lanes || []).forEach((lane) => {
6295
+ (lane && lane.lines || []).forEach((line) => {
6296
+ if (line && line.lineId != null) seedMap[String(line.lineId)] = line;
6297
+ });
6298
+ });
6299
+ });
6300
+ dbDatas.templates.forEach((tpl) => {
6301
+ (tpl && tpl.lanes || []).forEach((lane) => {
6302
+ (lane && lane.lines || []).forEach((line) => {
6303
+ if (!line || line.templateRangeSaved) return;
6304
+ const dbHas = !isRangeValueUnset(line.min) || !isRangeValueUnset(line.max);
6305
+ if (!dbHas) return;
6306
+ const seed = seedMap[String(line.lineId)];
6307
+ if (!seedHasExplicitRange(seed)) {
6308
+ line.templateRangeSaved = true;
6309
+ return;
6310
+ }
6311
+ if (Number(line.min) !== Number(seed.min) || Number(line.max) !== Number(seed.max)) {
6312
+ line.templateRangeSaved = true;
6313
+ }
6314
+ });
6315
+ });
6316
+ });
6317
+ return dbDatas;
6318
+ }
5720
6319
  const _hoisted_1$6 = ["id", "lane-id"];
5721
6320
  const _hoisted_2$5 = {
5722
6321
  key: 0,
@@ -5746,8 +6345,10 @@ const _hoisted_13$1 = {
5746
6345
  class: "kd-lane-chart-lane-container",
5747
6346
  ref: "refLaneDiv"
5748
6347
  };
5749
- const _hoisted_14$1 = { class: "custom-dialog__body RealTimeCurveConfig_area" };
5750
- const _hoisted_15$1 = { class: "custom-dialog__footer" };
6348
+ const _hoisted_14$1 = { class: "custom-dialog__header" };
6349
+ const _hoisted_15$1 = { class: "custom-dialog__title" };
6350
+ const _hoisted_16$1 = { class: "custom-dialog__body RealTimeCurveConfig_area" };
6351
+ const _hoisted_17$1 = { class: "custom-dialog__footer" };
5751
6352
  const _sfc_main$6 = /* @__PURE__ */ Object.assign({
5752
6353
  name: "KdLaneContainer"
5753
6354
  }, {
@@ -5839,12 +6440,14 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
5839
6440
  "lane-width-change",
5840
6441
  "template-change",
5841
6442
  "confirm",
6443
+ "config-change",
5842
6444
  "showContextMenu",
5843
6445
  "onCustomMenuClicked",
5844
6446
  "line-change",
5845
6447
  "params-change"
5846
6448
  ],
5847
6449
  setup(__props, { expose: __expose, emit: __emit }) {
6450
+ const { $kdInnerTrans } = useKdI18n();
5848
6451
  const props = __props;
5849
6452
  const emit = __emit;
5850
6453
  const instance = getCurrentInstance();
@@ -6127,10 +6730,13 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6127
6730
  function onLineDragEnd() {
6128
6731
  proxy.syncLinesLaneIdsFromCurrent();
6129
6732
  proxy.notifyTemplateChangeImmediately();
6733
+ proxy.emitConfigChange("drag");
6130
6734
  const lines = proxy.collectAllLinesFromCurrent();
6131
- if (lines.length === 0) return;
6132
- Promise.all(lines.map((line) => proxy.dragUpdateLine(line))).then(() => {
6133
- proxy.setDefaultAndNotify();
6735
+ if (lines.length === 0) {
6736
+ proxy.isLineDragging = false;
6737
+ return;
6738
+ }
6739
+ Promise.all(lines.map((line) => proxy.dragUpdateLine(line))).finally(() => {
6134
6740
  proxy.isLineDragging = false;
6135
6741
  });
6136
6742
  }
@@ -6144,8 +6750,8 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6144
6750
  sortLanes(lanes);
6145
6751
  if (hasChanged) {
6146
6752
  proxy.notifyTemplateChangeImmediately();
6147
- Promise.all(lanes.map((lane) => proxy.dragUpdateLane(lane))).then(() => {
6148
- proxy.setDefaultAndNotify();
6753
+ proxy.emitConfigChange("drag");
6754
+ Promise.all(lanes.map((lane) => proxy.dragUpdateLane(lane))).finally(() => {
6149
6755
  proxy.isLaneDragging = false;
6150
6756
  });
6151
6757
  } else {
@@ -6325,9 +6931,32 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6325
6931
  proxy.curveConfigClosing = false;
6326
6932
  }, 300);
6327
6933
  }
6934
+ function buildCurrentConfigSnapshot() {
6935
+ const base = cloneDeep(proxy.config || {});
6936
+ return {
6937
+ ...base,
6938
+ dataSource: {
6939
+ ...base.dataSource || {},
6940
+ templates: cloneDeep(proxy.treeTemplates || []),
6941
+ params: cloneDeep(proxy.params || [])
6942
+ }
6943
+ };
6944
+ }
6945
+ function emitConfigChange(reason) {
6946
+ const payload = {
6947
+ reason: reason || "update",
6948
+ config: buildCurrentConfigSnapshot()
6949
+ };
6950
+ emit("config-change", payload);
6951
+ return payload;
6952
+ }
6953
+ function getCurrentConfig() {
6954
+ return buildCurrentConfigSnapshot();
6955
+ }
6328
6956
  function confirmCurveConfigDialog() {
6329
6957
  proxy.closeCurveConfigDialog();
6330
- emit("confirm");
6958
+ const payload = proxy.emitConfigChange("confirm");
6959
+ emit("confirm", payload);
6331
6960
  }
6332
6961
  function delLine(data) {
6333
6962
  return proxy.strategy.delLine(data).then(() => {
@@ -6406,8 +7035,9 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6406
7035
  currentLanes[laneIndex] = lane;
6407
7036
  sortLaneLines(lane);
6408
7037
  proxy.onLineChange(savedData, ACTION_TYPE.UPSERT_LINE);
6409
- return savedData;
6410
7038
  }
7039
+ proxy.emitConfigChange("save");
7040
+ return savedData;
6411
7041
  });
6412
7042
  }
6413
7043
  function delLane(data) {
@@ -6453,6 +7083,7 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6453
7083
  proxy.setDefaultAndNotify("changeNumber");
6454
7084
  }
6455
7085
  }
7086
+ proxy.emitConfigChange("save");
6456
7087
  return savedData;
6457
7088
  });
6458
7089
  }
@@ -6486,6 +7117,7 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6486
7117
  }
6487
7118
  sortTemplates(proxy.treeTemplates);
6488
7119
  proxy.setDefaultAndNotify();
7120
+ proxy.emitConfigChange("save");
6489
7121
  return savedData;
6490
7122
  });
6491
7123
  }
@@ -6631,6 +7263,7 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6631
7263
  nextLanes[laneIndex] = restored;
6632
7264
  template.lanes = nextLanes;
6633
7265
  proxy.setDefaultAndNotify("changeNumber");
7266
+ proxy.emitConfigChange("restore");
6634
7267
  return Promise.all([
6635
7268
  ...deleteJobs,
6636
7269
  proxy.strategy.upsertLane(restored),
@@ -6642,7 +7275,12 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6642
7275
  function loadConfig() {
6643
7276
  proxy.isLoading = true;
6644
7277
  proxy.strategy.getUserTemplates().then((dbDatas) => {
6645
- const { templates = [], params: params2 = [] } = dbDatas;
7278
+ const dataSource = proxy.config && proxy.config.dataSource;
7279
+ const merged = ensureUserSavedLineRanges(
7280
+ mergeCurveI18nFromDataSource(dbDatas, dataSource),
7281
+ dataSource
7282
+ );
7283
+ const { templates = [], params: params2 = [] } = merged;
6646
7284
  proxy.params = params2;
6647
7285
  sortTemplates(templates);
6648
7286
  proxy.treeTemplates = templates;
@@ -6700,11 +7338,8 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6700
7338
  const needsUpdate = lanes.some(
6701
7339
  (lane) => !proxy.laneWidthOverrides[String(lane.laneId)]
6702
7340
  );
6703
- console.log(needsUpdate, "needsUpdate");
6704
7341
  if (needsUpdate) {
6705
7342
  proxy.updateLaneWidthOverrides();
6706
- } else {
6707
- emit("lane-width-change", proxy.laneWidthOverrides);
6708
7343
  }
6709
7344
  });
6710
7345
  }
@@ -6717,23 +7352,35 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6717
7352
  const contextMenuOptions = computed(() => {
6718
7353
  if (proxy.config.type == "local") {
6719
7354
  return [
6720
- { name: "编辑模板", key: "editTemplate" },
6721
- { name: "恢复默认", key: "restoreSetting" },
7355
+ { name: $kdInnerTrans("kdLaneChart.menu.editTemplate"), key: "editTemplate" },
7356
+ { name: $kdInnerTrans("kdLaneChart.menu.restoreDefault"), key: "restoreSetting" },
6722
7357
  ...proxy.customMenuList
6723
7358
  ];
6724
7359
  } else {
6725
7360
  return [
6726
- { name: "编辑模板", key: "editTemplate" },
7361
+ { name: $kdInnerTrans("kdLaneChart.menu.editTemplate"), key: "editTemplate" },
6727
7362
  ...proxy.customMenuList
6728
7363
  ];
6729
7364
  }
6730
7365
  });
6731
7366
  const paramsNameMap = computed(() => {
7367
+ void localeState.current;
6732
7368
  const result = {};
7369
+ const srcMap = /* @__PURE__ */ Object.create(null);
7370
+ const srcParams = proxy.config && proxy.config.dataSource && proxy.config.dataSource.params || [];
7371
+ srcParams.forEach((p) => {
7372
+ if (p && p.paramId != null) srcMap[String(p.paramId)] = p;
7373
+ });
6733
7374
  for (const param of proxy.params) {
7375
+ const src = srcMap[String(param.paramId)] || {};
7376
+ const zhName = param.paramName || src.paramName;
7377
+ const enCandidate = src.paramNameEn || param.paramNameEn;
6734
7378
  result[param.paramId] = {
6735
- paramName: param.paramName,
6736
- paramUnit: param.paramUnit
7379
+ paramName: zhName,
7380
+ paramNameEn: enCandidate && enCandidate !== zhName ? enCandidate : src.paramNameEn || param.paramNameEn,
7381
+ paramUnit: param.paramUnit || src.paramUnit,
7382
+ i18nKey: param.i18nKey || src.i18nKey,
7383
+ i18nParams: param.i18nParams || src.i18nParams
6737
7384
  };
6738
7385
  }
6739
7386
  return result;
@@ -6978,7 +7625,8 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
6978
7625
  headerStyle,
6979
7626
  slotHeaderStyle,
6980
7627
  laneDragFilter,
6981
- darwAreaStyle
7628
+ darwAreaStyle,
7629
+ $kdInnerTrans
6982
7630
  });
6983
7631
  provide("upsertTemplate", upsertTemplate);
6984
7632
  provide("delTemplate", delTemplate);
@@ -7039,6 +7687,9 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
7039
7687
  setExpanded,
7040
7688
  closeCurveConfigDialog,
7041
7689
  confirmCurveConfigDialog,
7690
+ buildCurrentConfigSnapshot,
7691
+ emitConfigChange,
7692
+ getCurrentConfig,
7042
7693
  delLine,
7043
7694
  upsertLine,
7044
7695
  delLane,
@@ -7129,6 +7780,9 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
7129
7780
  setExpanded,
7130
7781
  closeCurveConfigDialog,
7131
7782
  confirmCurveConfigDialog,
7783
+ buildCurrentConfigSnapshot,
7784
+ emitConfigChange,
7785
+ getCurrentConfig,
7132
7786
  delLine,
7133
7787
  upsertLine,
7134
7788
  delLane,
@@ -7454,8 +8108,8 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
7454
8108
  "align-center": ""
7455
8109
  }, {
7456
8110
  header: withCtx(() => [
7457
- createElementVNode("div", { class: "custom-dialog__header" }, [
7458
- _cache[2] || (_cache[2] = createElementVNode("span", { class: "custom-dialog__title" }, "泳道模板设置", -1)),
8111
+ createElementVNode("div", _hoisted_14$1, [
8112
+ createElementVNode("span", _hoisted_15$1, toDisplayString(unref($kdInnerTrans)("drillOptimize.title.laneTemplateSetting")), 1),
7459
8113
  createElementVNode("button", {
7460
8114
  class: "custom-dialog__close",
7461
8115
  onClick: closeCurveConfigDialog
@@ -7463,26 +8117,26 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
7463
8117
  ])
7464
8118
  ]),
7465
8119
  footer: withCtx(() => [
7466
- createElementVNode("div", _hoisted_15$1, [
8120
+ createElementVNode("div", _hoisted_17$1, [
7467
8121
  createVNode(_component_el_button, { onClick: closeCurveConfigDialog }, {
7468
- default: withCtx(() => [..._cache[3] || (_cache[3] = [
7469
- createTextVNode("取消", -1)
7470
- ])]),
8122
+ default: withCtx(() => [
8123
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.cancel")), 1)
8124
+ ]),
7471
8125
  _: 1
7472
8126
  }),
7473
8127
  createVNode(_component_el_button, {
7474
8128
  type: "primary",
7475
8129
  onClick: confirmCurveConfigDialog
7476
8130
  }, {
7477
- default: withCtx(() => [..._cache[4] || (_cache[4] = [
7478
- createTextVNode("确定", -1)
7479
- ])]),
8131
+ default: withCtx(() => [
8132
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.confirm")), 1)
8133
+ ]),
7480
8134
  _: 1
7481
8135
  })
7482
8136
  ])
7483
8137
  ]),
7484
8138
  default: withCtx(() => [
7485
- createElementVNode("div", _hoisted_14$1, [
8139
+ createElementVNode("div", _hoisted_16$1, [
7486
8140
  createVNode(RealTimeCurveConfig, mergeProps({
7487
8141
  ref_key: "curveConfig",
7488
8142
  ref: curveConfig,
@@ -7502,7 +8156,7 @@ const _sfc_main$6 = /* @__PURE__ */ Object.assign({
7502
8156
  };
7503
8157
  }
7504
8158
  });
7505
- const KdLaneContainerComponent = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-55d9b803"]]);
8159
+ const KdLaneContainerComponent = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-0e3b2f24"]]);
7506
8160
  const _hoisted_1$5 = { class: "header" };
7507
8161
  const _hoisted_2$4 = { class: "label-card" };
7508
8162
  const _hoisted_3$3 = { class: "label-row" };
@@ -7534,6 +8188,10 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
7534
8188
  },
7535
8189
  emits: ["loadingChange", "depth-time-chart-scroll", "depthTimeChange", "slider-point"],
7536
8190
  setup(__props, { expose: __expose, emit: __emit }) {
8191
+ const { $kdInnerTrans, resolveLocalizedText: resolveLocalizedText2 } = useKdI18n();
8192
+ function resolveSeriesYName(series) {
8193
+ return resolveLocalizedText2(series, "yName", "yNameEn");
8194
+ }
7537
8195
  function pad2(n) {
7538
8196
  return n < 10 ? "0" + n : "" + n;
7539
8197
  }
@@ -7664,7 +8322,9 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
7664
8322
  const yCode = curveConfig.yCode;
7665
8323
  return {
7666
8324
  xName: curveConfig.xName,
8325
+ xNameEn: curveConfig.xNameEn,
7667
8326
  yName: curveConfig.yName,
8327
+ yNameEn: curveConfig.yNameEn,
7668
8328
  xCode,
7669
8329
  yCode,
7670
8330
  data: markRaw(
@@ -7692,7 +8352,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
7692
8352
  const allSeriesData = computed(() => {
7693
8353
  return proxy.currentModeData.datas.map((series) => {
7694
8354
  return {
7695
- name: series.yName,
8355
+ name: resolveSeriesYName(series),
7696
8356
  data: series.data.map((item) => item.value)
7697
8357
  };
7698
8358
  });
@@ -7707,7 +8367,10 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
7707
8367
  currentModeData,
7708
8368
  resolvedRows,
7709
8369
  allSeriesData,
7710
- labelFloatStyle
8370
+ labelFloatStyle,
8371
+ $kdInnerTrans,
8372
+ resolveLocalizedText: resolveLocalizedText2,
8373
+ resolveSeriesYName
7711
8374
  });
7712
8375
  function getCurrentModeConfig() {
7713
8376
  if (!proxy.mode) return null;
@@ -8192,7 +8855,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8192
8855
  const allValues = proxy.currentModeData.datas.map((series) => {
8193
8856
  const seriesData = series.data[proxy.sliderIndex];
8194
8857
  return {
8195
- name: series.yName,
8858
+ name: resolveSeriesYName(series),
8196
8859
  value: seriesData ? seriesData.value : null
8197
8860
  };
8198
8861
  });
@@ -8412,7 +9075,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8412
9075
  const allValues = datas.map((series) => {
8413
9076
  const seriesData = series.data && series.data[proxy.sliderIndex];
8414
9077
  return {
8415
- name: series.yName,
9078
+ name: resolveSeriesYName(series),
8416
9079
  value: seriesData ? seriesData.value : null,
8417
9080
  raw: seriesData ? seriesData : null
8418
9081
  };
@@ -8433,7 +9096,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8433
9096
  const endIndex = Math.min(proxy.startIndex + proxy.windowSize, rows.length);
8434
9097
  const seriesData = proxy.currentModeData.datas.map((series) => {
8435
9098
  return {
8436
- name: series.yName,
9099
+ name: resolveSeriesYName(series),
8437
9100
  data: (series.data || []).slice(proxy.startIndex, endIndex).map((item) => [item.value, item.time])
8438
9101
  };
8439
9102
  });
@@ -8471,7 +9134,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8471
9134
  backgroundColor: getCssVariable("--tooltip-bg-color"),
8472
9135
  textStyle: { color: getCssVariable("--default-text-color"), fontSize: 12 },
8473
9136
  formatter: (params) => {
8474
- const axis = "时间";
9137
+ const axis = $kdInnerTrans("riskWarning.param.time");
8475
9138
  let result = `<div>${axis}:${formatDateTime(parseTimeLabel(params[0].axisValue))}</div>`;
8476
9139
  params.forEach((param) => {
8477
9140
  result += `<div>${param.seriesName}:${param.data[0]}</div>`;
@@ -8673,6 +9336,14 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8673
9336
  });
8674
9337
  }
8675
9338
  );
9339
+ watch(
9340
+ () => localeState.current,
9341
+ () => {
9342
+ nextTick(() => {
9343
+ proxy.renderChart();
9344
+ });
9345
+ }
9346
+ );
8676
9347
  watch(
8677
9348
  () => proxy.cachedCurveDatas,
8678
9349
  async (newVal) => {
@@ -8909,7 +9580,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8909
9580
  value: item.mode
8910
9581
  }, {
8911
9582
  default: withCtx(() => [
8912
- createTextVNode(toDisplayString(item.modeName), 1)
9583
+ createTextVNode(toDisplayString(unref(resolveLocalizedText2)(item, "modeName", "modeNameEn")), 1)
8913
9584
  ]),
8914
9585
  _: 2
8915
9586
  }, 1032, ["value"]);
@@ -8944,7 +9615,7 @@ const _sfc_main$5 = /* @__PURE__ */ Object.assign({
8944
9615
  };
8945
9616
  }
8946
9617
  });
8947
- const DepthTimeChart = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-b922356b"]]);
9618
+ const DepthTimeChart = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-fda53ec4"]]);
8948
9619
  const curveExportIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAH+ElEQVRo3u1ZTWxU1xX+zpuxsRvbWLEBx6mFIcEOTWkChYZ00abdgNRKDVJRi1pVTvHYRCy6qsKilbLMoot0YRV7jGRVipSGLpAapV1UqRsSKKi0iAK1cRxIY4gJGNvEP2PPvPN1ce/7sz1vxsbTRJWvNPZ77/68c+4595zvOw9Ya2ttrZWySb6Ow4ePbpaE2/aZC0hOpNPdv17uvGS+DsfR5rqqzMtfb/mYpAhA8yKxF7aREO8ZCTF7RX/fRBjqQ2SNxXNNn3c9M5/E21eabgBYPcUAoK5qFt95+jogQtDal4SRx5ee9o+AntD0nYGEGHXJhc5CowhsV9AvQpC4+2mlvH2laUWWjlWMANSTmOaBEZlUK7kg2OHoXEb6fQUFBAGSYq2DxR7gr8iVunCsYkYAaye1LwRACAhS4Pullc9orhRxHNBIbcaSIg5A164jECrtYuKpJyICKmnfvWK9irCY0riL3T2NKMjIOSMhAoE4pGpo9wEhCQ25oQZC0z++YubZGzyAXvGKCUAIoSoiDmi2WBjspBFbBFS1ziNKqj1DDDbIuiTsCkHgEIAKEQdUNxxMCFVKaVwRANUeL5ciDhjdxpBrGnPRWNQ7jcG9hiOm9QCliJhdspthn3kvkRKdseFPauWl158rKu8t6JcC+VIKrCkPmv/yKjY09O/3WlpaajNZ5zNGELoGo9ba/yUI/umLL7YmcjwWfpZOH38hfJ9Kdb4EyBOlFZF30+nun69a8Ejk0LChZrrtW9s/IAC8cX6HAHghmsBl/7e/9ME366umJQyOF4LbhdfhZx7OFCwG19Nz5XjrUusNAKunGABUV8xh1+ZbAoBvnN+x5Jhtm+5i64Z7DGN6WpgoQpICkbAOhox4ORsWUNODVhQLsYTjMxV461JrCSCVwWtLgtxQAhdVH9xa+BieY4BK1Eq0KnkYw6rovdWCZH2ASF8QeQRIYmnlPPRrhQ8PIumxnRC8ChRkwFYkglKi1i2RYkY+iQs/1JB5VMUHyZ4itKiSFB+EGQWFHswKzl/g1D7+XH3FyIUccJFFGcBHQwS4RJAgNFjHWMbCegkzJMv9PABaStoiZIHlrQ+64egHgGqCwOLzFXiwUKChMkLWdcR1HSQcMplwA0dfddpCD5XnN5kSomavSZp7n9AwoD9hET2eNj5Tiau3GjB0e4OM3q/B9FxZBkBGRJLliVzVww/NSKkshkIGM/Q44q5+RCTF5yXhNjb1EN659rhcGmmcUMrrFL5Z5jgXe9PHb3pjfnL0aN38ZNmXKdxdIleMj04MOcyCSlNkW7y+M8Nb0T/QMpF1E686jr7am+6eXGrd33Z1jQH4q/2VgGiSsfRIlUIb1gih2IDil99sMHA1wVMXn5IrNxv/lkzg+729gXVK0QoVc2iSL2Njh7oe7aWJjH6yDpz09xd2yuDtTX/KZTMHetN9mVKD4AIskiAIt0A+IUgloWpU8YpMqhAl8d77j8ngaEN/bn7uQF9fvFKp1JF97e3tXyypYgzXcWNs5inkxX5V+qWM0cn1OH2tZYKaaCuklF3vCXGSp9vajjSX1mLWEnGQiwz/N9DBuz89tA05dV4+caLrw2KFmqr6tDmxjmc7Oo4+UxqLGYELWiyIgLQuSAHIjydrZPCTR25ns3PdyxFqvO4eLu260JBz5vtTqSP7SmAxPwnHAw/rjuFzpgQGRhsJoK84F1yQ6+ru4p+7/l6RTWZPtbd3fm/VFVMvGsQgD4aCBmwgoUKG72wUunhzpe40UTuGc197tyLzhdlThq2vLh+DUiQuz6lf3wzm5Sgcm65xh4cHzoXHt3d2/oB0KmJeujec/GcqZ3D+6bPYfXHvK4dTnVUn0t2/XKUEHU64+YZ4Xy58CoL7MxXiqtzo7+/PRU2M4xOb79Sqox6nBD2GQJNe7tdO2gK6gFDMVszg7M53sPPqnl+0d3Q25+bnUoXcu2DtXjWe8all0I6lJ/ZzEefcpIhwaqk5/9l9HdlkDlQXqgpVQlXB0DXU5wAAFPPl8zj35BnsvvrMjzdNbKxva2uLzYlOIawY4ckxA1UhrkIIv5aQf45IiDlLLA71xxNQx8X57WfwUd3I/rKydX88ePBg1YrRvRYB7tX7lmvLMyBQWZYBIQ3xErOIwmDkAykq5yuxfmY9ALx78uTJqZVFRQJUQ8pixzBA+V6doyKZkcrkXMOhQx31+TVbSPVkiSHBs6rZajx7+Ruonqk+li4QRAqVBiK0JF9UND+/NEjAgOKGmnHJZBv2AXgtPGfHH3bmtxWBm00f4f1tgxEF6ybqsevynkwyW9aW7u3+3QNixUDwuDzm1eiMWwY5bWvdCAD8MPJCYXMy69SW5fkls4ljjkbFqr+3EXv+9exUWa78+d4ilCqGtsDVRfWKJdIBfEoqtqZIAFsevoV1Zdn9HR0dj/X09AwDQE9Pz2Q8uu+MRLpHbzVh++COUXGd76Z7f3Nh1ZBHAeARKXhSTTVKbZQsT2b5VOO1BCG/Wgny2Hr9cTw58JUbyCX39i5DqYIWG5+txl+GvhpLof8x0ioDt5sXebB39HPqAJDnU6kjP0qnj79W1JcSCrYNtqLpwy2XEw72p3u6ls228yqWzc4OilS2XbuzJe9nGQFeGZl4pK+YTzrqaK5YoRpHHoW4iT9PTowdiAvphd75uWqpVOfPIHguOz93aCWsYBkl7v9tU02eGh6+0rUIY661tbbWPlftv9DKUDsQUF/KAAAAAElFTkSuQmCC";
8949
9620
  const depthSlotIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAFnUlEQVRo3u1ZTWxUVRT+zptOp51pZZpOaWlGCgIFFIRgiCsNJi6MbFyyMRqgPygmJhrXNbJgQQQTSf9mGhaEuGkCK/9iMkhAoxAoJCIBTZEWO0Ch03ZsZzpzPxf3venr0JoZ7LzOkJ7Mz3v3vfvuO/ec7zvn3Assy7IUhUihB9h74MBGI8099jblkq/6OjtvFHLcskIrZii1KVFZ3zEW2AEFYc39S1KRiF4BUNqKAUCiciVGVr/BFAWVk0OoSEQLPqbhlM/TYYyVOYVkIUUc1M5w0lxOquaMYiJOEPBSWIyAOAszZzAGcdgRHWNFghDSQasZTllMtH7ylJEHtameOlZ0Ojo7mXmIw4oVhBX3t7YdFYofAKiwJlstUXKwpaX9LZNWpm/dvPFBJBJJlQDdy/SUf/07sYadUIRMe2ppUX501at8UPPi6wrCVdHzqI7/+cViK1UwV2Ta1eWJD6cnA1sQq9+J+Ip10PQhjK1oxr2VL3PUv1W8U8MJqPThksFYOHz8tjEzddI/9CMIzYRCiGYR7ZYN939CWTp5OhQKRUuKPETUIf/dCwKmrcxD/5NiqBSCIz8gnebhQo1fMMV6enr+cM2Mf+OPXhKQYo9hDdFzUp4cP93X1z1QknQvNA7X3vkeAkUb77Mheh5KyZGSjWO9vZ1ny6ceRKpHr4mFrZqH11AxHb0YDnedL+kALcCXtX+fy6QfwTtfCxQOlXzZcvPm72c2bMAtX+zWOkVIZXzoSijUfaYoFGtpbTsHSNCW+k2Gerq25tI3Eomkmps3H2q4892JtOEBRbryymJa2i6L6CwGABQ5FO7tfmWRLCbB4e0H18x4/JR0AmsvHZkguSXXl4vH4wOfHz02CvzDAx9/djHU3Zlz3/b299b98vwn1akyL8uTY9hx/ejiumKqws9UeY1IetqKsp5c+/p8Pqysq+t3u90TgUAA+fQFgOmKWqZclQAphcGYCJ+0Btm9+81T/68ykLwWF3JXjBRrVeZJJBgMThZ1PeZ0XWWbVAhyd8WcFdPJrCxFMZyZTiuhXlTFBBSQsiQWM6dTCkIeIoQImMfDF00tMb1FCmCxDNU6uuw564jMEwRGXhYDl8gTTQgULI7Neryrv7+/2SF0uSxXLGASLKQYmPI1es9cuH4qC9vZh/PAP7tBSBNFgPYIZo2HykYBXHknBnkGaJAuD/566SOCEEUCYpCk0HxJQodxmqGBBGjjaWUeZt2n+ypo7jWXEJR1TT9Y8KSZx7597zcZhlpjnacNNdbXbZbvIpxT4pMZIuFjFtEvlsGlxWqKIqAo61kwUzTqPU+xlnvMiZpdBNIK20fY29a2zaWM2axfGYPh8PHb8yomrvS7SV+yY6YqASPpQsVDbwTAawDgiQ1KmXsUFGtKYR0DJDQIRO+qMONSYk22FV0tyiZpntC0GoUwiDl9xTI4QIo7OT7LekqOxXwPdyVdM/AmfPAmfR0APl3QFR+tH0V02136Rqrw3Lcbreaf6387OYgiEAWMWMfXmgZw75koNw+9gE3DW3LAmJmWiWBXS2u7uVGCohAB0NLavkd7DCkLJEMLkkd81QQH3r4IpikUkiSgIAqk/sz9AgCVdiwqitlGRQWLAax2ivZdKgqhn23vk7kP5lWTPZTKjDPnes4BWgzR9xMCYxa0NFGdsaoZXAQi9nOdfmnwiBV/aO7+yQIxQfuITtnEgl0mOTD/ZJ5uMm/RUTY/sxOVj7xo/PVZ2MBsiz8UW2zK8JW1vWe7D8w6N3/tHKe3BZkV4Gy5r/VS2VH6atNlxLxjecQxQlwJF6pGqq4AxocoSlHH3Kny7cT8rviYYr6RKtSjEe7JchAyFurtPFuMau1vaR9bfb+JgYk6BMbr/lsxoUR80eoOX7TaKhcGUaRCkROrH6yN2N8dy7IsxSf/Avx35qhCwuXeAAAAAElFTkSuQmCC";
8950
9621
  const refreshIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAJgklEQVRo3u1aaVRURxbOj/yYHzknc04E3JClwY1RxyW4EBmXMC5xdIwh4MkEkO5+rxskioqAMJIIykQEFdmCERoaxA0XUIlBwCUmIWJwy5hojGbIDBkzkahRQObcO/dW92PR0BBFWh3eOd+pevXqVd3v3Vu37q3uZ57puXqu/79LluWpTyUxraRDrVaOnTRp0rNPHbHEmNeJnK4iIEDn+FQR++8nA6Eo/Y8YpJdqJUl65akh1vTxQLhLOF/ojuFL/Nk0EwICAn7zxJBgU9PI8hwSPFyS5PVkftlMrOEjV2w84QqM6+VDYeOqeWyanzzWpqnR60cLEpLuypK3FuCm2Hm4I3k6lGROwSMGTzya4wn1x12xgUg1fORCcBXg50F6bR0RnPd4mZhWN01DDiFyqR/uTfOCb4pHEAEXuHPMBVuXltq+2jsKwkPZNHWbrG6abD6kndKoZW/iCeMEvHXUFW4fdUESFBQo91w2455non5MBXXlgyBuxXzUSPJJb2/v56ylpTfIs93anzEFbla44s9HVdAGR1R4i6Dc325+5oI//0L7jQoXLEzxAlmWatgCrERKjo1c4geX9g0HEr4ZNysEmTb1m0fub1Pqyn3NQTd8N9oHSFMlOp2un3UcBDmH+BW+UPvBIBLOGW6Uq/BGuTNyyfckLPxUroIzO0ZDwYZpsPav3ric1k5IsEZA6W/q6wyV+e64OCSwSZJ0UVaLSDSSLiYucj5c+9CVCDnfh/+UukBx+mSMWOIn1gn3V1N8qFYHO9Bm/Dy7+5/KnAWul6kgP2k6kPZr1Gqdh9UcBUcJyxf749XiISSYE9S1xmFnrN4+EgQhra6Y+o5tb4Pmd68WDcHYSF+l7/NW9H4BvSkyr/28YCReP+wEP5Y6ibLOjMJNU5CfqyX9Kx1FHscNY8kk1fWkzaVW36fI/jdnvTsTfyx1ZFJgKh3hOtW3b3gZtZJ8gc2tMyEVaenSgnY02t051IhQiiK+L6E19KGjwA+HnJDLgxkvIUcZGo3GrlNrVKvbaVXTu8dhbN6VPBl/OOQI1z5wFCXjy91DQafT1pOgqicuGqe19Vs9CX+lyJVIOcC/SxyRyFHpgEkxczkyX/REphmSpPdfGz0PiQh8zzjogLWEqvwRwGulMzEd9+FIgj+CRtIHc93qsSDtRcb96ROI0ACobYXU2Fkdaos3WzLjKI0UVOcbloRzYgpwzso89KF6oBxSx8+sRpAdQ3XBUPzXgQGg4LtiBwgJUqMlh8ECU/pS4hu+ETwza8A9px7H5DTCKEMj/J4wOuMaeIdtRO7T7eS8g4KeC9Zr8LviAfjP/fbA4PpnxmEUVejOdRBLpvtGpqBH7m0Yl1sP7rkNMCanwUQsuxGGZzXi77Y0wKvhqfSBdJu713FI0uCI0L9ATTETasH+tPEcrBotbQ8LFoahZ+5N8Mi9g4JYTguxEURsWPZdcNtC5DJvgn9wGAYG6gd1GzGO31aFv441Rf2hpshe4B9UL0iaxBqLtxT5v7q6ECbm3QEPYz2MNzaYNGaox1HZDcimOIw05pZ1F4ZsaYLpbxeCpfEeQWqi/0NchDd+u68/COztjwQwrpvCgsRY2ISLZyZXCWITiFiLxhphpHmNCY2ZiY1PPC3SlXbH0/C5CZ2X/AIC9Q+gaQ573g7zgat7+sFVInR1bz+4sqc/bkvypIhcn2AhAS2dkXIGJhrvIBMbf88aazZFM7GxSed566iwlCatj/kTFqWMg30p40TJWLbIDx8oNFOr1S788hUi9s3ufkoJB9Je5FRjjwVi2bMTykymSGusmZihAUe10VgjDtlyFybFHwNLDkSjlXeWpI8Bnr+1LGGL38QHinp4HyJH0HRxl70gdLmwH17e3RdOGgcCbwPtCiLLPm+EJaCyxsYZW2usAUfcY4qvkdu3dDpFAXbNSeMgIYMix8Wd9sCyPXBiym792BY3uLSrL35NuFzYFxhL3/Jr15PxZBztz9xQiR7KGrvPFBsFMc+1n/J6PdfeXsZriK3ma9P8IEqa/zjJ1NGW0+ExwNZ1E5lYK/SBzNUvixPc9he8frRaXlg/bWMVmyK2dveKKU5cV4Xch/tacGAJ76+Zipd29kWeV5EhL4HXuW7TQ2XN0ct8SfV94OKOPvgVgeuVBhe27zoOki1tF2yyPrRReyV9hh4ZNTgh7VucvK4SX1ueLPIyS6Q4udXTIerJXGdQ5lWwcpkPPtRJljneq63MceHBBb7c3gcZqavEeUV6RwEwuWs1bwFMhE1Uy3Vq6yiU4rEz4rya51VwImsgm2HtQ4divGetj5mJF7b1JkK9QcHpPHsMDfFH3mcexfkKr+Oz+f2b57tgRlqsF6opCOiSnIzN7uMsFf69oDcTBC4JUJE5mJPNW115ykTnih46WVt/+D03mseO5zLPZ0faUiE/62zG3hmtLV0T+Wc8v9UOv6AJvthK4JImPbBpODK5rji9ZU1RYnvrQMrwtnOZ54uLmItdeggkXLhWrt6e6A7n823hXL4dnsuzw/P5dkACwKG0oSazJC/6ILbP5/TsZUND/JpKUt1QjE/gsRVsW+dODkeu7vI0h/ct1kxp+mA4l2cLZ4nY2TxbFkDUP80eAGujZvEXreUk1JLHbG3mWlkO53cSo2dCZbY9jWfbPD6XfH8obQiwCT6y8xU2t0UL/ZuOZtIRdq4tnjGyALZAJZMU9bIMV0iMnmFaCxQDcuQuPCP9CMigs0d/zgD4WZBe08R9y9JdxVhiHGPb8Y68p8JFwf5Nj/yHCq1WO4/JlaQMhtMkxOlcG6jOtcHTRNQEvrfFKkMfKE4eBu/HTcSk6BkQHzFbgIlsprZ9G4fhKUNv0b/5XTGeLVab7w+lDgImFRio7Z4fBPnrsUby176In+fYkCA2IMocKg02yGjT1qqPeEZtAq36KPdKncfuKqf0az2YihdzfOQsPJLhwAKzkAKnBLleojyV3Ytgum+BDbQ8Nz8zv1uR4YRx4XOEo+jWzPr+ozU5nLWXHDMVK9IHkHn1gqqsXlglCJHwDIOp5DbRbjC1NdfpWXmaI25Y6UW/AWjFCdZj8ScXjus4YKWvXPfOsrmQ+zd3KEt3gJNMMEsQEPUWvCDaSlOd0BA/Ft4JmwscBFBeFjNfkno9jifHHBvOUZv++nBlYdACjAz1wTURszAhajomrJiOq8NnY9QSbwzWB4pzf+7L7zxRf0PyCw5+gdN3TiT5VJnBLp/bOrPP9Vw9V8/Vc3X79T8J1TZaWjb6HwAAAABJRU5ErkJggg==";
@@ -8985,50 +9656,80 @@ const _hoisted_11 = {
8985
9656
  const _hoisted_12 = { class: "elTooltipArea" };
8986
9657
  const _hoisted_13 = { class: "actions" };
8987
9658
  const _hoisted_14 = ["src"];
8988
- const _hoisted_15 = ["src"];
9659
+ const _hoisted_15 = ["src", "alt"];
8989
9660
  const _hoisted_16 = {
8990
9661
  key: 2,
8991
9662
  class: "divider",
8992
9663
  style: { "margin-bottom": "0" }
8993
9664
  };
8994
- const _hoisted_17 = ["src"];
9665
+ const _hoisted_17 = ["src", "alt"];
8995
9666
  const _hoisted_18 = {
8996
9667
  key: 4,
8997
9668
  class: "divider",
8998
9669
  style: { "margin-bottom": "0" }
8999
9670
  };
9000
- const _hoisted_19 = ["src"];
9001
- const _hoisted_20 = ["src"];
9002
- const _hoisted_21 = { class: "custom-dialog__body" };
9003
- const _hoisted_22 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9004
- const _hoisted_23 = { style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" } };
9005
- const _hoisted_24 = { class: "custom-dialog__footer" };
9006
- const _hoisted_25 = { class: "custom-dialog__body" };
9007
- const _hoisted_26 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9008
- const _hoisted_27 = {
9009
- style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" },
9010
- class: "input-number-container"
9671
+ const _hoisted_19 = ["src", "alt"];
9672
+ const _hoisted_20 = ["src", "alt"];
9673
+ const _hoisted_21 = { class: "custom-dialog__header" };
9674
+ const _hoisted_22 = { class: "custom-dialog__title" };
9675
+ const _hoisted_23 = { class: "custom-dialog__body" };
9676
+ const _hoisted_24 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9677
+ const _hoisted_25 = {
9678
+ style: { "min-width": "30px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9679
+ class: "fontColor"
9011
9680
  };
9012
- const _hoisted_28 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9013
- const _hoisted_29 = {
9681
+ const _hoisted_26 = { style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" } };
9682
+ const _hoisted_27 = { class: "custom-dialog__footer" };
9683
+ const _hoisted_28 = { class: "custom-dialog__header" };
9684
+ const _hoisted_29 = { class: "custom-dialog__title" };
9685
+ const _hoisted_30 = { class: "custom-dialog__body" };
9686
+ const _hoisted_31 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9687
+ const _hoisted_32 = {
9688
+ style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9689
+ class: "fontColor"
9690
+ };
9691
+ const _hoisted_33 = {
9014
9692
  style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" },
9015
9693
  class: "input-number-container"
9016
9694
  };
9017
- const _hoisted_30 = { class: "custom-dialog__footer" };
9018
- const _hoisted_31 = { class: "custom-dialog__body" };
9019
- const _hoisted_32 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px" } };
9020
- const _hoisted_33 = { style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" } };
9021
9695
  const _hoisted_34 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9022
9696
  const _hoisted_35 = {
9697
+ style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9698
+ class: "fontColor"
9699
+ };
9700
+ const _hoisted_36 = {
9701
+ style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" },
9702
+ class: "input-number-container"
9703
+ };
9704
+ const _hoisted_37 = { class: "custom-dialog__footer" };
9705
+ const _hoisted_38 = { class: "custom-dialog__header" };
9706
+ const _hoisted_39 = { class: "custom-dialog__title" };
9707
+ const _hoisted_40 = { class: "custom-dialog__body" };
9708
+ const _hoisted_41 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px" } };
9709
+ const _hoisted_42 = {
9710
+ style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9711
+ class: "fontColor"
9712
+ };
9713
+ const _hoisted_43 = { style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" } };
9714
+ const _hoisted_44 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9715
+ const _hoisted_45 = {
9716
+ style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9717
+ class: "fontColor"
9718
+ };
9719
+ const _hoisted_46 = {
9023
9720
  style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" },
9024
9721
  class: "input-number-container"
9025
9722
  };
9026
- const _hoisted_36 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9027
- const _hoisted_37 = {
9723
+ const _hoisted_47 = { style: { "display": "flex", "align-items": "center", "gap": "12px", "height": "32px", "width": "100%" } };
9724
+ const _hoisted_48 = {
9725
+ style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9726
+ class: "fontColor"
9727
+ };
9728
+ const _hoisted_49 = {
9028
9729
  style: { "flex": "1", "height": "100%", "display": "flex", "align-items": "center" },
9029
9730
  class: "input-number-container"
9030
9731
  };
9031
- const _hoisted_38 = { class: "custom-dialog__footer" };
9732
+ const _hoisted_50 = { class: "custom-dialog__footer" };
9032
9733
  const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" }, {
9033
9734
  __name: "index",
9034
9735
  props: {
@@ -9050,6 +9751,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9050
9751
  },
9051
9752
  emits: ["searchWellSection", "refresh", "updateForm", "dialogFunction", "jumpToNextMarkLine"],
9052
9753
  setup(__props, { expose: __expose, emit: __emit }) {
9754
+ const { $kdInnerTrans } = useKdI18n();
9053
9755
  const props = __props;
9054
9756
  const emitEvent = __emit;
9055
9757
  const TimeFormRef = ref(null);
@@ -9095,14 +9797,14 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9095
9797
  function searchWellSection() {
9096
9798
  console.log(wellSectionQuery.value, "wellSectionQuery");
9097
9799
  if (wellSectionQuery.value == null || !isNumeric(wellSectionQuery.value)) {
9098
- ElMessage.error("请输入有效的数字");
9800
+ ElMessage.error($kdInnerTrans("trackDesign.msg.invalidNumber"));
9099
9801
  return;
9100
9802
  } else {
9101
9803
  if (wellSectionQuery.value < 0) {
9102
- ElMessage.error("输入的井段不能小于0m");
9804
+ ElMessage.error($kdInnerTrans("kdLaneChart.msg.wellSectionNonNegative", { unit: "m" }));
9103
9805
  return;
9104
9806
  }
9105
- ElMessage.success("查询成功");
9807
+ ElMessage.success($kdInnerTrans("kdLaneChart.msg.querySuccess"));
9106
9808
  emitEvent("searchWellSection", wellSectionQuery.value);
9107
9809
  wellSectionQuery.value = null;
9108
9810
  }
@@ -9159,7 +9861,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9159
9861
  let emitData = null;
9160
9862
  if (exportName.value === "time") {
9161
9863
  if (!exportTimeDialog.range || exportTimeDialog.range.length !== 2) {
9162
- ElMessage.warning ? ElMessage.warning("请选择有效的时间范围") : alert("请选择有效的时间范围");
9864
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.selectValidTimeRange")) : alert($kdInnerTrans("kdLaneChart.validation.selectValidTimeRange"));
9163
9865
  return;
9164
9866
  }
9165
9867
  emitData = {
@@ -9173,11 +9875,11 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9173
9875
  const s = Number(exportDepthDialog.start);
9174
9876
  const e = Number(exportDepthDialog.end);
9175
9877
  if (isNaN(s) || isNaN(e)) {
9176
- ElMessage.warning ? ElMessage.warning("请填写有效的井深值") : alert("请填写有效的井深值");
9878
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.enterValidDepth")) : alert($kdInnerTrans("kdLaneChart.validation.enterValidDepth"));
9177
9879
  return;
9178
9880
  }
9179
9881
  if (s >= e) {
9180
- ElMessage.warning ? ElMessage.warning("起始井深必须小于终止井深") : alert("起始井深必须小于终止井深");
9882
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.startLessThanEnd")) : alert($kdInnerTrans("kdLaneChart.validation.startLessThanEnd"));
9181
9883
  return;
9182
9884
  }
9183
9885
  emitData = { type: 4, value: { start: s, end: e } };
@@ -9194,7 +9896,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9194
9896
  let emitData = null;
9195
9897
  if (exportName.value === "time") {
9196
9898
  if (!exportTimeDialog.range || exportTimeDialog.range.length !== 2) {
9197
- ElMessage.warning ? ElMessage.warning("请选择有效的时间范围") : alert("请选择有效的时间范围");
9899
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.selectValidTimeRange")) : alert($kdInnerTrans("kdLaneChart.validation.selectValidTimeRange"));
9198
9900
  return;
9199
9901
  }
9200
9902
  emitData = {
@@ -9208,11 +9910,11 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9208
9910
  const s = Number(exportDepthDialog.start);
9209
9911
  const e = Number(exportDepthDialog.end);
9210
9912
  if (isNaN(s) || isNaN(e)) {
9211
- ElMessage.warning ? ElMessage.warning("请填写有效的井深值") : alert("请填写有效的井深值");
9913
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.enterValidDepth")) : alert($kdInnerTrans("kdLaneChart.validation.enterValidDepth"));
9212
9914
  return;
9213
9915
  }
9214
9916
  if (s >= e) {
9215
- ElMessage.warning ? ElMessage.warning("起始井深必须小于终止井深") : alert("起始井深必须小于终止井深");
9917
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.startLessThanEnd")) : alert($kdInnerTrans("kdLaneChart.validation.startLessThanEnd"));
9216
9918
  return;
9217
9919
  }
9218
9920
  emitData = { type: 4, value: { start: s, end: e } };
@@ -9284,7 +9986,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9284
9986
  TimeFormRef.value.validate((valid) => {
9285
9987
  if (valid) {
9286
9988
  if (!timeDialog.value) {
9287
- ElMessage.warning ? ElMessage.warning("请选择有效的时间") : alert("请选择有效的时间");
9989
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.selectValidTime")) : alert($kdInnerTrans("kdLaneChart.validation.selectValidTime"));
9288
9990
  return;
9289
9991
  }
9290
9992
  const emitData = {
@@ -9299,7 +10001,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9299
10001
  });
9300
10002
  } else {
9301
10003
  if (!timeDialog.value) {
9302
- ElMessage.warning ? ElMessage.warning("请选择有效的时间") : alert("请选择有效的时间");
10004
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.selectValidTime")) : alert($kdInnerTrans("kdLaneChart.validation.selectValidTime"));
9303
10005
  return;
9304
10006
  }
9305
10007
  const emitData = {
@@ -9314,28 +10016,28 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9314
10016
  }
9315
10017
  function validateDepth(rule, value, callback) {
9316
10018
  if (value <= 0) {
9317
- callback(new Error("井深值必须大于0"));
10019
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.depthMustBePositive")));
9318
10020
  } else {
9319
10021
  callback();
9320
10022
  }
9321
10023
  }
9322
10024
  function validateStartDepth(rule, value, callback) {
9323
10025
  if (value < 0) {
9324
- callback(new Error("起始井深值不能小于0"));
10026
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.startDepthNonNegative")));
9325
10027
  } else {
9326
10028
  callback();
9327
10029
  }
9328
10030
  }
9329
10031
  function validateExportStartDepth(rule, value, callback) {
9330
10032
  if (value < 0) {
9331
- callback(new Error("起始井深值不能小于0"));
10033
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.startDepthNonNegative")));
9332
10034
  } else {
9333
10035
  callback();
9334
10036
  }
9335
10037
  }
9336
10038
  function validateExportDepth(rule, value, callback) {
9337
10039
  if (value <= 0) {
9338
- callback(new Error("终止井深值必须大于0"));
10040
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.endDepthMustBePositive")));
9339
10041
  } else {
9340
10042
  callback();
9341
10043
  }
@@ -9343,13 +10045,13 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9343
10045
  function validateEndDepth(rule, value, callback) {
9344
10046
  if (depthDialog.start !== null && depthDialog.end !== null) {
9345
10047
  if (value <= depthDialog.start) {
9346
- callback(new Error("结束井深必须大于起始井深"));
10048
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.endGreaterThanStart")));
9347
10049
  } else {
9348
10050
  callback();
9349
10051
  }
9350
10052
  } else if (exportDepthDialog.start !== null && exportDepthDialog.end !== null) {
9351
10053
  if (value <= exportDepthDialog.start) {
9352
- callback(new Error("终止井深必须大于起始井深"));
10054
+ callback(new Error($kdInnerTrans("kdLaneChart.validation.endMustBeGreaterThanStart")));
9353
10055
  } else {
9354
10056
  callback();
9355
10057
  }
@@ -9364,11 +10066,11 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9364
10066
  const start = Number(depthDialog.start);
9365
10067
  const end = Number(depthDialog.end);
9366
10068
  if (isNaN(start) || isNaN(end)) {
9367
- ElMessage.warning ? ElMessage.warning("请填写有效的井深值") : alert("请填写有效的井深值");
10069
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.enterValidDepth")) : alert($kdInnerTrans("kdLaneChart.validation.enterValidDepth"));
9368
10070
  return;
9369
10071
  }
9370
10072
  if (end <= start) {
9371
- ElMessage.warning ? ElMessage.warning("结束井深必须大于起始井深") : alert("结束井深必须大于起始井深");
10073
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.endGreaterThanStart")) : alert($kdInnerTrans("kdLaneChart.validation.endGreaterThanStart"));
9372
10074
  return;
9373
10075
  }
9374
10076
  const emitData = { type: 1, start, end };
@@ -9381,7 +10083,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9381
10083
  } else {
9382
10084
  const v = Number(depthDialog.value);
9383
10085
  if (isNaN(v)) {
9384
- ElMessage.warning ? ElMessage.warning("请填写有效的井深值") : alert("请填写有效的井深值");
10086
+ ElMessage.warning ? ElMessage.warning($kdInnerTrans("kdLaneChart.validation.enterValidDepth")) : alert($kdInnerTrans("kdLaneChart.validation.enterValidDepth"));
9385
10087
  return;
9386
10088
  }
9387
10089
  const emitData = { type: 1, value: v };
@@ -9418,27 +10120,27 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9418
10120
  function getDisableTip(type) {
9419
10121
  if (type === "timeSegment") {
9420
10122
  if (form.dataType === "real") {
9421
- return "实时数据不支持设置时间段";
10123
+ return $kdInnerTrans("kdLaneChart.tip.realTimeNoTimeSegment");
9422
10124
  }
9423
10125
  return "";
9424
10126
  } else if (type === "depthSegment") {
9425
10127
  if (form.dataType === "real") {
9426
- return "实时数据不支持设置井深段";
10128
+ return $kdInnerTrans("kdLaneChart.tip.realTimeNoDepthSegment");
9427
10129
  }
9428
10130
  return "";
9429
10131
  } else if (type == "timeRange") {
9430
10132
  if (form.axisType === "depth") {
9431
- return "深度轴类型不支持设置时间范围";
10133
+ return $kdInnerTrans("kdLaneChart.tip.depthNoTimeRange");
9432
10134
  }
9433
10135
  return "";
9434
10136
  } else if (type == "wellSectionQuery") {
9435
10137
  if (form.axisType === "depth") {
9436
- return "深度轴类型不支持井段查询";
10138
+ return $kdInnerTrans("kdLaneChart.tip.depthNoWellSectionQuery");
9437
10139
  }
9438
10140
  return "";
9439
10141
  } else if (type == "depthRange") {
9440
10142
  if (form.axisType === "time") {
9441
- return "时间轴类型不支持设置井深范围";
10143
+ return $kdInnerTrans("kdLaneChart.tip.timeNoDepthRange");
9442
10144
  }
9443
10145
  return "";
9444
10146
  }
@@ -9471,7 +10173,8 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9471
10173
  closeTimeDialog,
9472
10174
  closeDepthDialog,
9473
10175
  closeExportDialog,
9474
- getDisableTip
10176
+ getDisableTip,
10177
+ $kdInnerTrans
9475
10178
  });
9476
10179
  return (_ctx, _cache) => {
9477
10180
  const _component_el_radio = resolveComponent("el-radio");
@@ -9498,18 +10201,18 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9498
10201
  value: "time",
9499
10202
  disabled: !__props.currentToolBarConfig || !__props.currentToolBarConfig.axisTypeList || !__props.currentToolBarConfig.axisTypeList.time
9500
10203
  }, {
9501
- default: withCtx(() => [..._cache[28] || (_cache[28] = [
9502
- createTextVNode("时间", -1)
9503
- ])]),
10204
+ default: withCtx(() => [
10205
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("riskWarning.param.time")), 1)
10206
+ ]),
9504
10207
  _: 1
9505
10208
  }, 8, ["disabled"]),
9506
10209
  createVNode(_component_el_radio, {
9507
10210
  value: "depth",
9508
10211
  disabled: !__props.currentToolBarConfig || !__props.currentToolBarConfig.axisTypeList || !__props.currentToolBarConfig.axisTypeList.depth
9509
10212
  }, {
9510
- default: withCtx(() => [..._cache[29] || (_cache[29] = [
9511
- createTextVNode("深度", -1)
9512
- ])]),
10213
+ default: withCtx(() => [
10214
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.depth")), 1)
10215
+ ]),
9513
10216
  _: 1
9514
10217
  }, 8, ["disabled"])
9515
10218
  ]),
@@ -9528,18 +10231,18 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9528
10231
  value: "real",
9529
10232
  disabled: !__props.currentToolBarConfig || !__props.currentToolBarConfig.dataTypeList || !__props.currentToolBarConfig.dataTypeList.real
9530
10233
  }, {
9531
- default: withCtx(() => [..._cache[30] || (_cache[30] = [
9532
- createTextVNode("实时数据", -1)
9533
- ])]),
10234
+ default: withCtx(() => [
10235
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("dynamicAnalysis.title.realTimeData")), 1)
10236
+ ]),
9534
10237
  _: 1
9535
10238
  }, 8, ["disabled"]),
9536
10239
  createVNode(_component_el_radio, {
9537
10240
  value: "history",
9538
10241
  disabled: !__props.currentToolBarConfig || !__props.currentToolBarConfig.dataTypeList || !__props.currentToolBarConfig.dataTypeList.history
9539
10242
  }, {
9540
- default: withCtx(() => [..._cache[31] || (_cache[31] = [
9541
- createTextVNode("历史数据", -1)
9542
- ])]),
10243
+ default: withCtx(() => [
10244
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.historyData")), 1)
10245
+ ]),
9543
10246
  _: 1
9544
10247
  }, 8, ["disabled"])
9545
10248
  ]),
@@ -9555,26 +10258,26 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9555
10258
  }, {
9556
10259
  default: withCtx(() => [
9557
10260
  createVNode(_component_el_radio, { value: "header" }, {
9558
- default: withCtx(() => [..._cache[32] || (_cache[32] = [
9559
- createTextVNode("表头数据", -1)
9560
- ])]),
10261
+ default: withCtx(() => [
10262
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.headerData")), 1)
10263
+ ]),
9561
10264
  _: 1
9562
10265
  }),
9563
10266
  createVNode(_component_el_radio, { value: "float" }, {
9564
- default: withCtx(() => [..._cache[33] || (_cache[33] = [
9565
- createTextVNode("悬浮数据", -1)
9566
- ])]),
10267
+ default: withCtx(() => [
10268
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.floatData")), 1)
10269
+ ]),
9567
10270
  _: 1
9568
10271
  })
9569
10272
  ]),
9570
10273
  _: 1
9571
10274
  }, 8, ["modelValue"])) : createCommentVNode("", true),
9572
10275
  __props.currentToolBarConfig.logAxisShow !== false ? (openBlock(), createElementBlock("div", _hoisted_4$1)) : createCommentVNode("", true),
9573
- __props.currentToolBarConfig.scaleSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_5$1, "比例尺:")) : createCommentVNode("", true),
10276
+ __props.currentToolBarConfig.scaleSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_5$1, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.scaleLabel")), 1)) : createCommentVNode("", true),
9574
10277
  __props.currentToolBarConfig.scaleSelectShow !== false ? (openBlock(), createBlock(_component_el_tooltip, {
9575
10278
  key: 7,
9576
10279
  disabled: form.axisType === "depth",
9577
- content: "时间轴类型下不支持设置比例尺",
10280
+ content: unref($kdInnerTrans)("kdLaneChart.tip.timeNoScale"),
9578
10281
  placement: "right",
9579
10282
  effect: "dark"
9580
10283
  }, {
@@ -9593,7 +10296,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9593
10296
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.currentToolBarConfig.scaleList, (item) => {
9594
10297
  return openBlock(), createBlock(_component_el_option, {
9595
10298
  key: item.value,
9596
- label: item.label,
10299
+ label: item.i18nKey ? unref($kdInnerTrans)(item.i18nKey) : item.label,
9597
10300
  value: item.value
9598
10301
  }, null, 8, ["label", "value"]);
9599
10302
  }), 128))
@@ -9603,8 +10306,8 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9603
10306
  ])
9604
10307
  ]),
9605
10308
  _: 1
9606
- }, 8, ["disabled"])) : createCommentVNode("", true),
9607
- __props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_7, "时间范围:")) : createCommentVNode("", true),
10309
+ }, 8, ["disabled", "content"])) : createCommentVNode("", true),
10310
+ __props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_7, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.timeRangeLabel")), 1)) : createCommentVNode("", true),
9608
10311
  __props.currentToolBarConfig.timeRangeSelectShow !== false ? (openBlock(), createBlock(_component_el_tooltip, {
9609
10312
  key: 9,
9610
10313
  disabled: !(form.axisType == "depth"),
@@ -9627,7 +10330,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9627
10330
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.currentToolBarConfig.timeRangeList, (item) => {
9628
10331
  return openBlock(), createBlock(_component_el_option, {
9629
10332
  key: item.value,
9630
- label: item.label,
10333
+ label: item.i18nKey ? unref($kdInnerTrans)(item.i18nKey) : item.label,
9631
10334
  value: item.value
9632
10335
  }, null, 8, ["label", "value"]);
9633
10336
  }), 128))
@@ -9638,7 +10341,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9638
10341
  ]),
9639
10342
  _: 1
9640
10343
  }, 8, ["disabled", "content"])) : createCommentVNode("", true),
9641
- __props.currentToolBarConfig.depthRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_9, "井深范围(m)")) : createCommentVNode("", true),
10344
+ __props.currentToolBarConfig.depthRangeSelectShow !== false ? (openBlock(), createElementBlock("div", _hoisted_9, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.depthRangeLabel", { unit: "m" })), 1)) : createCommentVNode("", true),
9642
10345
  __props.currentToolBarConfig.depthRangeSelectShow !== false ? (openBlock(), createBlock(_component_el_tooltip, {
9643
10346
  key: 11,
9644
10347
  disabled: !(form.axisType == "time"),
@@ -9661,7 +10364,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9661
10364
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.currentToolBarConfig.depthRangeList, (item) => {
9662
10365
  return openBlock(), createBlock(_component_el_option, {
9663
10366
  key: item.value,
9664
- label: item.label,
10367
+ label: item.i18nKey ? unref($kdInnerTrans)(item.i18nKey) : item.label,
9665
10368
  value: item.value
9666
10369
  }, null, 8, ["label", "value"]);
9667
10370
  }), 128))
@@ -9672,7 +10375,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9672
10375
  ]),
9673
10376
  _: 1
9674
10377
  }, 8, ["disabled", "content"])) : createCommentVNode("", true),
9675
- __props.currentToolBarConfig.wellSectionQueryShow !== false ? (openBlock(), createElementBlock("div", _hoisted_11, "井段查询(m)")) : createCommentVNode("", true),
10378
+ __props.currentToolBarConfig.wellSectionQueryShow !== false ? (openBlock(), createElementBlock("div", _hoisted_11, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.wellSectionQueryLabel", { unit: "m" })), 1)) : createCommentVNode("", true),
9676
10379
  __props.currentToolBarConfig.wellSectionQueryShow !== false ? (openBlock(), createBlock(_component_el_tooltip, {
9677
10380
  key: 13,
9678
10381
  style: { "position": "relative" },
@@ -9722,7 +10425,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9722
10425
  alt: "",
9723
10426
  class: "icon"
9724
10427
  }, null, 8, _hoisted_14),
9725
- _cache[34] || (_cache[34] = createElementVNode("span", null, "时间段", -1))
10428
+ createElementVNode("span", null, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.timeSegment")), 1)
9726
10429
  ])
9727
10430
  ]),
9728
10431
  _: 1
@@ -9741,10 +10444,10 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9741
10444
  }, [
9742
10445
  createElementVNode("img", {
9743
10446
  src: unref(depthSlotIcon),
9744
- alt: "井深段",
10447
+ alt: unref($kdInnerTrans)("kdLaneChart.label.depthSegment"),
9745
10448
  class: "icon"
9746
10449
  }, null, 8, _hoisted_15),
9747
- _cache[35] || (_cache[35] = createElementVNode("span", null, "井深段", -1))
10450
+ createElementVNode("span", null, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.depthSegment")), 1)
9748
10451
  ])
9749
10452
  ]),
9750
10453
  _: 1
@@ -9757,10 +10460,10 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9757
10460
  }, [
9758
10461
  createElementVNode("img", {
9759
10462
  src: unref(warningPositioningIcon),
9760
- alt: "预警定位",
10463
+ alt: unref($kdInnerTrans)("kdLaneChart.label.warningPosition"),
9761
10464
  class: "icon"
9762
10465
  }, null, 8, _hoisted_17),
9763
- _cache[36] || (_cache[36] = createElementVNode("span", null, "预警定位", -1))
10466
+ createElementVNode("span", null, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.warningPosition")), 1)
9764
10467
  ])) : createCommentVNode("", true),
9765
10468
  __props.currentToolBarConfig.alertBtnShow !== false ? (openBlock(), createElementBlock("div", _hoisted_18)) : createCommentVNode("", true),
9766
10469
  __props.currentToolBarConfig.refreshBtnShow !== false ? (openBlock(), createElementBlock("div", {
@@ -9770,10 +10473,10 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9770
10473
  }, [
9771
10474
  createElementVNode("img", {
9772
10475
  src: unref(refreshIcon),
9773
- alt: "刷新",
10476
+ alt: unref($kdInnerTrans)("common.refresh"),
9774
10477
  class: "icon"
9775
10478
  }, null, 8, _hoisted_19),
9776
- _cache[37] || (_cache[37] = createElementVNode("span", null, "刷新", -1))
10479
+ createElementVNode("span", null, toDisplayString(unref($kdInnerTrans)("common.refresh")), 1)
9777
10480
  ])) : createCommentVNode("", true),
9778
10481
  __props.currentToolBarConfig.exportBtnShow !== false ? (openBlock(), createElementBlock("div", {
9779
10482
  key: 6,
@@ -9782,10 +10485,10 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9782
10485
  }, [
9783
10486
  createElementVNode("img", {
9784
10487
  src: unref(curveExportIcon),
9785
- alt: "导出",
10488
+ alt: unref($kdInnerTrans)("common.export"),
9786
10489
  class: "icon"
9787
10490
  }, null, 8, _hoisted_20),
9788
- _cache[38] || (_cache[38] = createElementVNode("span", null, "导出", -1))
10491
+ createElementVNode("span", null, toDisplayString(unref($kdInnerTrans)("common.export")), 1)
9789
10492
  ])) : createCommentVNode("", true)
9790
10493
  ]),
9791
10494
  createVNode(_component_el_dialog, {
@@ -9804,8 +10507,8 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9804
10507
  "align-center": ""
9805
10508
  }, {
9806
10509
  header: withCtx(() => [
9807
- createElementVNode("div", { class: "custom-dialog__header" }, [
9808
- _cache[39] || (_cache[39] = createElementVNode("span", { class: "custom-dialog__title" }, "设置时间段", -1)),
10510
+ createElementVNode("div", _hoisted_21, [
10511
+ createElementVNode("span", _hoisted_22, toDisplayString(unref($kdInnerTrans)("kdLaneChart.title.setTimeSegment")), 1),
9809
10512
  createElementVNode("button", {
9810
10513
  class: "custom-dialog__close",
9811
10514
  onClick: closeTimeDialog
@@ -9813,26 +10516,26 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9813
10516
  ])
9814
10517
  ]),
9815
10518
  footer: withCtx(() => [
9816
- createElementVNode("div", _hoisted_24, [
10519
+ createElementVNode("div", _hoisted_27, [
9817
10520
  createVNode(_component_el_button, { onClick: closeTimeDialog }, {
9818
- default: withCtx(() => [..._cache[41] || (_cache[41] = [
9819
- createTextVNode("取消", -1)
9820
- ])]),
10521
+ default: withCtx(() => [
10522
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.cancel")), 1)
10523
+ ]),
9821
10524
  _: 1
9822
10525
  }),
9823
10526
  createVNode(_component_el_button, {
9824
10527
  type: "primary",
9825
10528
  onClick: confirmTimeDialog
9826
10529
  }, {
9827
- default: withCtx(() => [..._cache[42] || (_cache[42] = [
9828
- createTextVNode("确定", -1)
9829
- ])]),
10530
+ default: withCtx(() => [
10531
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.confirm")), 1)
10532
+ ]),
9830
10533
  _: 1
9831
10534
  })
9832
10535
  ])
9833
10536
  ]),
9834
10537
  default: withCtx(() => [
9835
- createElementVNode("div", _hoisted_21, [
10538
+ createElementVNode("div", _hoisted_23, [
9836
10539
  createVNode(_component_el_form, {
9837
10540
  model: timeDialog,
9838
10541
  ref_key: "TimeFormRef",
@@ -9842,29 +10545,26 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9842
10545
  default: withCtx(() => [
9843
10546
  createVNode(_component_el_form_item, {
9844
10547
  prop: "value",
9845
- rules: [{ required: true, message: "请选择时间", trigger: "change" }]
10548
+ rules: [{ required: true, message: unref($kdInnerTrans)("kdLaneChart.validation.selectTime"), trigger: "change" }]
9846
10549
  }, {
9847
10550
  default: withCtx(() => [
9848
- createElementVNode("div", _hoisted_22, [
9849
- _cache[40] || (_cache[40] = createElementVNode("div", {
9850
- style: { "min-width": "30px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9851
- class: "fontColor"
9852
- }, "时间:", -1)),
9853
- createElementVNode("div", _hoisted_23, [
10551
+ createElementVNode("div", _hoisted_24, [
10552
+ createElementVNode("div", _hoisted_25, toDisplayString(unref($kdInnerTrans)("riskWarning.param.time")) + "", 1),
10553
+ createElementVNode("div", _hoisted_26, [
9854
10554
  createVNode(unref(ElDatePicker), {
9855
10555
  modelValue: timeDialog.value,
9856
10556
  "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => timeDialog.value = $event),
9857
10557
  "popper-class": "kd-curve-2d-select-popup",
9858
10558
  type: "datetime",
9859
- placeholder: "选择时间",
10559
+ placeholder: unref($kdInnerTrans)("kdLaneChart.placeholder.selectTime"),
9860
10560
  "value-format": "YYYY-MM-DD HH:mm:ss",
9861
10561
  style: { "width": "100%", "height": "100%" }
9862
- }, null, 8, ["modelValue"])
10562
+ }, null, 8, ["modelValue", "placeholder"])
9863
10563
  ])
9864
10564
  ])
9865
10565
  ]),
9866
10566
  _: 1
9867
- })
10567
+ }, 8, ["rules"])
9868
10568
  ]),
9869
10569
  _: 1
9870
10570
  }, 8, ["model"])
@@ -9888,8 +10588,8 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9888
10588
  "align-center": ""
9889
10589
  }, {
9890
10590
  header: withCtx(() => [
9891
- createElementVNode("div", { class: "custom-dialog__header" }, [
9892
- _cache[43] || (_cache[43] = createElementVNode("span", { class: "custom-dialog__title" }, "设置井深段", -1)),
10591
+ createElementVNode("div", _hoisted_28, [
10592
+ createElementVNode("span", _hoisted_29, toDisplayString(unref($kdInnerTrans)("kdLaneChart.title.setDepthSegment")), 1),
9893
10593
  createElementVNode("button", {
9894
10594
  class: "custom-dialog__close",
9895
10595
  onClick: closeDepthDialog
@@ -9897,26 +10597,26 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9897
10597
  ])
9898
10598
  ]),
9899
10599
  footer: withCtx(() => [
9900
- createElementVNode("div", _hoisted_30, [
10600
+ createElementVNode("div", _hoisted_37, [
9901
10601
  createVNode(_component_el_button, { onClick: closeDepthDialog }, {
9902
- default: withCtx(() => [..._cache[46] || (_cache[46] = [
9903
- createTextVNode("取消", -1)
9904
- ])]),
10602
+ default: withCtx(() => [
10603
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.cancel")), 1)
10604
+ ]),
9905
10605
  _: 1
9906
10606
  }),
9907
10607
  createVNode(_component_el_button, {
9908
10608
  type: "primary",
9909
10609
  onClick: confirmDepthDialog
9910
10610
  }, {
9911
- default: withCtx(() => [..._cache[47] || (_cache[47] = [
9912
- createTextVNode("确定", -1)
9913
- ])]),
10611
+ default: withCtx(() => [
10612
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.confirm")), 1)
10613
+ ]),
9914
10614
  _: 1
9915
10615
  })
9916
10616
  ])
9917
10617
  ]),
9918
10618
  default: withCtx(() => [
9919
- createElementVNode("div", _hoisted_25, [
10619
+ createElementVNode("div", _hoisted_30, [
9920
10620
  createVNode(_component_el_form, {
9921
10621
  model: depthDialog,
9922
10622
  ref_key: "DepthFormRef",
@@ -9927,18 +10627,15 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9927
10627
  createVNode(_component_el_form_item, {
9928
10628
  prop: "start",
9929
10629
  rules: [
9930
- { required: true, message: "请输入起始井深", trigger: "blur" },
9931
- { type: "number", message: "请输入有效的数字", trigger: "blur" },
10630
+ { required: true, message: unref($kdInnerTrans)("kdLaneChart.validation.enterStartDepth"), trigger: "blur" },
10631
+ { type: "number", message: unref($kdInnerTrans)("trackDesign.msg.invalidNumber"), trigger: "blur" },
9932
10632
  { validator: validateStartDepth, trigger: "blur" }
9933
10633
  ]
9934
10634
  }, {
9935
10635
  default: withCtx(() => [
9936
- createElementVNode("div", _hoisted_26, [
9937
- _cache[44] || (_cache[44] = createElementVNode("div", {
9938
- style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9939
- class: "fontColor"
9940
- }, "起始井深:", -1)),
9941
- createElementVNode("div", _hoisted_27, [
10636
+ createElementVNode("div", _hoisted_31, [
10637
+ createElementVNode("div", _hoisted_32, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.startDepthLabel")), 1),
10638
+ createElementVNode("div", _hoisted_33, [
9942
10639
  createVNode(unref(ElInputNumber), {
9943
10640
  modelValue: depthDialog.start,
9944
10641
  "onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => depthDialog.start = $event),
@@ -9954,18 +10651,15 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
9954
10651
  createVNode(_component_el_form_item, {
9955
10652
  prop: "end",
9956
10653
  rules: [
9957
- { required: true, message: "请输入结束井深", trigger: "blur" },
9958
- { type: "number", message: "请输入有效的数字", trigger: "blur" },
10654
+ { required: true, message: unref($kdInnerTrans)("drillOptimize.label.inputEndDepth"), trigger: "blur" },
10655
+ { type: "number", message: unref($kdInnerTrans)("trackDesign.msg.invalidNumber"), trigger: "blur" },
9959
10656
  { validator: validateEndDepth, trigger: "blur" }
9960
10657
  ]
9961
10658
  }, {
9962
10659
  default: withCtx(() => [
9963
- createElementVNode("div", _hoisted_28, [
9964
- _cache[45] || (_cache[45] = createElementVNode("div", {
9965
- style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
9966
- class: "fontColor"
9967
- }, "结束井深:", -1)),
9968
- createElementVNode("div", _hoisted_29, [
10660
+ createElementVNode("div", _hoisted_34, [
10661
+ createElementVNode("div", _hoisted_35, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.endDepthLabel")), 1),
10662
+ createElementVNode("div", _hoisted_36, [
9969
10663
  createVNode(unref(ElInputNumber), {
9970
10664
  modelValue: depthDialog.end,
9971
10665
  "onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => depthDialog.end = $event),
@@ -10001,8 +10695,8 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10001
10695
  "align-center": ""
10002
10696
  }, {
10003
10697
  header: withCtx(() => [
10004
- createElementVNode("div", { class: "custom-dialog__header" }, [
10005
- _cache[48] || (_cache[48] = createElementVNode("span", { class: "custom-dialog__title" }, "数据导出", -1)),
10698
+ createElementVNode("div", _hoisted_38, [
10699
+ createElementVNode("span", _hoisted_39, toDisplayString(unref($kdInnerTrans)("org.btn.dataExport")), 1),
10006
10700
  createElementVNode("button", {
10007
10701
  class: "custom-dialog__close",
10008
10702
  onClick: closeExportDialog
@@ -10010,26 +10704,26 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10010
10704
  ])
10011
10705
  ]),
10012
10706
  footer: withCtx(() => [
10013
- createElementVNode("div", _hoisted_38, [
10707
+ createElementVNode("div", _hoisted_50, [
10014
10708
  createVNode(_component_el_button, { onClick: closeExportDialog }, {
10015
- default: withCtx(() => [..._cache[52] || (_cache[52] = [
10016
- createTextVNode("取消", -1)
10017
- ])]),
10709
+ default: withCtx(() => [
10710
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.cancel")), 1)
10711
+ ]),
10018
10712
  _: 1
10019
10713
  }),
10020
10714
  createVNode(_component_el_button, {
10021
10715
  type: "primary",
10022
10716
  onClick: confirmExportDialog
10023
10717
  }, {
10024
- default: withCtx(() => [..._cache[53] || (_cache[53] = [
10025
- createTextVNode("确定", -1)
10026
- ])]),
10718
+ default: withCtx(() => [
10719
+ createTextVNode(toDisplayString(unref($kdInnerTrans)("common.confirm")), 1)
10720
+ ]),
10027
10721
  _: 1
10028
10722
  })
10029
10723
  ])
10030
10724
  ]),
10031
10725
  default: withCtx(() => [
10032
- createElementVNode("div", _hoisted_31, [
10726
+ createElementVNode("div", _hoisted_40, [
10033
10727
  createVNode(unref(ElTabs), {
10034
10728
  modelValue: exportName.value,
10035
10729
  "onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => exportName.value = $event),
@@ -10038,13 +10732,13 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10038
10732
  }, {
10039
10733
  default: withCtx(() => [
10040
10734
  createVNode(unref(ElTabPane), {
10041
- label: "时间",
10735
+ label: unref($kdInnerTrans)("riskWarning.param.time"),
10042
10736
  name: "time"
10043
- }),
10737
+ }, null, 8, ["label"]),
10044
10738
  createVNode(unref(ElTabPane), {
10045
- label: "深度",
10739
+ label: unref($kdInnerTrans)("kdLaneChart.label.depth"),
10046
10740
  name: "depth"
10047
- })
10741
+ }, null, 8, ["label"])
10048
10742
  ]),
10049
10743
  _: 1
10050
10744
  }, 8, ["modelValue"]),
@@ -10058,31 +10752,28 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10058
10752
  default: withCtx(() => [
10059
10753
  createVNode(_component_el_form_item, {
10060
10754
  prop: "range",
10061
- rules: [{ required: true, message: "请选择时间范围", trigger: "change" }]
10755
+ rules: [{ required: true, message: unref($kdInnerTrans)("kdLaneChart.validation.selectTimeRange"), trigger: "change" }]
10062
10756
  }, {
10063
10757
  default: withCtx(() => [
10064
- createElementVNode("div", _hoisted_32, [
10065
- _cache[49] || (_cache[49] = createElementVNode("div", {
10066
- style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
10067
- class: "fontColor"
10068
- }, "时间范围:", -1)),
10069
- createElementVNode("div", _hoisted_33, [
10758
+ createElementVNode("div", _hoisted_41, [
10759
+ createElementVNode("div", _hoisted_42, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.timeRangeLabel")), 1),
10760
+ createElementVNode("div", _hoisted_43, [
10070
10761
  createVNode(unref(ElDatePicker), {
10071
10762
  modelValue: exportTimeDialog.range,
10072
10763
  "onUpdate:modelValue": _cache[24] || (_cache[24] = ($event) => exportTimeDialog.range = $event),
10073
10764
  "popper-class": "kd-curve-2d-select-popup",
10074
10765
  type: "datetimerange",
10075
- "range-separator": "",
10076
- "start-placeholder": "开始时间",
10077
- "end-placeholder": "结束时间",
10766
+ "range-separator": unref($kdInnerTrans)("common.date.to"),
10767
+ "start-placeholder": unref($kdInnerTrans)("init.column.startTime"),
10768
+ "end-placeholder": unref($kdInnerTrans)("init.column.endTime"),
10078
10769
  "value-format": "YYYY-MM-DD HH:mm:ss",
10079
10770
  style: { "width": "100%", "height": "100%" }
10080
- }, null, 8, ["modelValue"])
10771
+ }, null, 8, ["modelValue", "range-separator", "start-placeholder", "end-placeholder"])
10081
10772
  ])
10082
10773
  ])
10083
10774
  ]),
10084
10775
  _: 1
10085
- })
10776
+ }, 8, ["rules"])
10086
10777
  ]),
10087
10778
  _: 1
10088
10779
  }, 8, ["model"])) : createCommentVNode("", true),
@@ -10097,18 +10788,15 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10097
10788
  createVNode(_component_el_form_item, {
10098
10789
  prop: "start",
10099
10790
  rules: [
10100
- { required: true, message: "请输入起始井深", trigger: "blur" },
10101
- { type: "number", message: "请输入有效的数字", trigger: "blur" },
10791
+ { required: true, message: unref($kdInnerTrans)("kdLaneChart.validation.enterStartDepth"), trigger: "blur" },
10792
+ { type: "number", message: unref($kdInnerTrans)("trackDesign.msg.invalidNumber"), trigger: "blur" },
10102
10793
  { validator: validateExportStartDepth, trigger: "blur" }
10103
10794
  ]
10104
10795
  }, {
10105
10796
  default: withCtx(() => [
10106
- createElementVNode("div", _hoisted_34, [
10107
- _cache[50] || (_cache[50] = createElementVNode("div", {
10108
- style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
10109
- class: "fontColor"
10110
- }, "起始井深:", -1)),
10111
- createElementVNode("div", _hoisted_35, [
10797
+ createElementVNode("div", _hoisted_44, [
10798
+ createElementVNode("div", _hoisted_45, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.startDepthLabel")), 1),
10799
+ createElementVNode("div", _hoisted_46, [
10112
10800
  createVNode(unref(ElInputNumber), {
10113
10801
  modelValue: exportDepthDialog.start,
10114
10802
  "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => exportDepthDialog.start = $event),
@@ -10124,19 +10812,16 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10124
10812
  createVNode(_component_el_form_item, {
10125
10813
  prop: "end",
10126
10814
  rules: [
10127
- { required: true, message: "请输入终止井深", trigger: "blur" },
10128
- { type: "number", message: "请输入有效的数字", trigger: "blur" },
10815
+ { required: true, message: unref($kdInnerTrans)("kdLaneChart.validation.enterEndDepth"), trigger: "blur" },
10816
+ { type: "number", message: unref($kdInnerTrans)("trackDesign.msg.invalidNumber"), trigger: "blur" },
10129
10817
  { validator: validateExportDepth, trigger: "blur" },
10130
10818
  { validator: validateEndDepth, trigger: "blur" }
10131
10819
  ]
10132
10820
  }, {
10133
10821
  default: withCtx(() => [
10134
- createElementVNode("div", _hoisted_36, [
10135
- _cache[51] || (_cache[51] = createElementVNode("div", {
10136
- style: { "min-width": "60px", "display": "flex", "align-items": "center", "height": "100%", "white-space": "nowrap" },
10137
- class: "fontColor"
10138
- }, "终止井深:", -1)),
10139
- createElementVNode("div", _hoisted_37, [
10822
+ createElementVNode("div", _hoisted_47, [
10823
+ createElementVNode("div", _hoisted_48, toDisplayString(unref($kdInnerTrans)("kdLaneChart.label.endDepthLabel2")), 1),
10824
+ createElementVNode("div", _hoisted_49, [
10140
10825
  createVNode(unref(ElInputNumber), {
10141
10826
  modelValue: exportDepthDialog.end,
10142
10827
  "onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => exportDepthDialog.end = $event),
@@ -10160,7 +10845,7 @@ const _sfc_main$4 = /* @__PURE__ */ Object.assign({ name: "ControlPanelDark" },
10160
10845
  };
10161
10846
  }
10162
10847
  });
10163
- const FunctionControlPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-612aff4d"]]);
10848
+ const FunctionControlPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-7a5b3a52"]]);
10164
10849
  const _hoisted_1$3 = { class: "echarts" };
10165
10850
  const _sfc_main$3 = /* @__PURE__ */ Object.assign({
10166
10851
  name: "resizeEcharts"
@@ -10914,10 +11599,13 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
10914
11599
  "updateScale",
10915
11600
  "visibleDataChange",
10916
11601
  "need-double-config",
10917
- "trend-change"
11602
+ "trend-change",
11603
+ "config-change"
10918
11604
  ],
10919
11605
  setup(__props, { expose: __expose, emit: __emit }) {
11606
+ const { $kdInnerTrans } = useKdI18n();
10920
11607
  const props = __props;
11608
+ const emit = __emit;
10921
11609
  const instance = getCurrentInstance();
10922
11610
  const setupBag = /* @__PURE__ */ Object.create(null);
10923
11611
  const proxy = createSetupProxy(instance, setupBag);
@@ -10952,6 +11640,8 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
10952
11640
  const windowSize = ref(10);
10953
11641
  const minWindowSize = ref(10);
10954
11642
  const maxWindowSize = ref(2e3);
11643
+ const _lockDepthScale = ref(true);
11644
+ const _syncingDepthScaleWindow = ref(false);
10955
11645
  const visibleData = ref([]);
10956
11646
  const echartsInitOptions = ref({ renderer: "canvas", useDirtyRect: false });
10957
11647
  const targetStartIndex = ref(0);
@@ -11039,6 +11729,8 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
11039
11729
  windowSize,
11040
11730
  minWindowSize,
11041
11731
  maxWindowSize,
11732
+ _lockDepthScale,
11733
+ _syncingDepthScaleWindow,
11042
11734
  visibleData,
11043
11735
  echartsInitOptions,
11044
11736
  targetStartIndex,
@@ -11098,12 +11790,33 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
11098
11790
  function paramsChange(params2) {
11099
11791
  proxy.params = params2;
11100
11792
  }
11793
+ function forwardConfigChange(payload) {
11794
+ emit("config-change", payload);
11795
+ }
11796
+ function getCurrentConfig() {
11797
+ const lane = proxy.$refs.chartContainer;
11798
+ return lane && typeof lane.getCurrentConfig === "function" ? lane.getCurrentConfig() : null;
11799
+ }
11101
11800
  async function laneWidthChange(widthMap) {
11102
- proxy.laneWidthMap = widthMap || {};
11801
+ const next = widthMap || {};
11802
+ if (isSameLaneWidthMap(proxy.laneWidthMap, next)) return;
11803
+ proxy.laneWidthMap = next;
11103
11804
  await nextTick();
11104
11805
  if (proxy._isUnmounted) return;
11105
11806
  proxy.updateLanesChartOption();
11106
11807
  }
11808
+ function isSameLaneWidthMap(a, b) {
11809
+ const left = a || {};
11810
+ const right = b || {};
11811
+ const leftKeys = Object.keys(left);
11812
+ const rightKeys = Object.keys(right);
11813
+ if (leftKeys.length !== rightKeys.length) return false;
11814
+ for (let i = 0; i < leftKeys.length; i++) {
11815
+ const k = leftKeys[i];
11816
+ if (left[k] !== right[k]) return false;
11817
+ }
11818
+ return true;
11819
+ }
11107
11820
  function shouldShowLaneLogRuler(lane) {
11108
11821
  return isLaneLogScale(lane) && isLogAxisLabelVisible(proxy.formCache);
11109
11822
  }
@@ -12147,13 +12860,23 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12147
12860
  const dy = clientY - proxy._windowPanStartY;
12148
12861
  const win = Number(proxy._windowPanWindowSize) || proxy.windowSize;
12149
12862
  const dataLength = proxy.realTimeData && proxy.realTimeData.length || 0;
12150
- const maxStart = Math.max(0, dataLength - win);
12151
12863
  const next = proxy._windowPanStartIndex - dy / h * win;
12152
- const clamped = Math.max(0, Math.min(next, maxStart));
12153
- proxy.startIndex = clamped;
12154
- proxy.targetStartIndex = clamped;
12155
- proxy.windowSize = win;
12156
- proxy.targetWindowSize = win;
12864
+ if (proxy.formCache.axisType === "depth") {
12865
+ proxy._syncingDepthScaleWindow = true;
12866
+ const scaled = proxy.computeDepthScaleWindow(next);
12867
+ proxy.startIndex = scaled.start;
12868
+ proxy.targetStartIndex = scaled.start;
12869
+ proxy.windowSize = scaled.windowSize;
12870
+ proxy.targetWindowSize = scaled.windowSize;
12871
+ proxy._syncingDepthScaleWindow = false;
12872
+ } else {
12873
+ const maxStart = Math.max(0, dataLength - win);
12874
+ const clamped = Math.max(0, Math.min(next, maxStart));
12875
+ proxy.startIndex = clamped;
12876
+ proxy.targetStartIndex = clamped;
12877
+ proxy.windowSize = win;
12878
+ proxy.targetWindowSize = win;
12879
+ }
12157
12880
  if (proxy.formCache.dataType == "history" && proxy.debounceJudgeEdge) {
12158
12881
  proxy.debounceJudgeEdge();
12159
12882
  }
@@ -12216,7 +12939,9 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12216
12939
  const lastValue = last && last[axisKey];
12217
12940
  const startIndex2 = proxy.startIndex;
12218
12941
  const windowSize2 = proxy.windowSize;
12219
- const dataGroups = splitArrayByDepth(val, axisKey);
12942
+ const rawGroups = splitArrayByDepth(val, axisKey);
12943
+ const layout = proxy.formCache.axisType === "depth" ? proxy.layoutScaledAxisGroups(rawGroups, axisKey) : null;
12944
+ const dataGroups = layout ? layout.groups : rawGroups;
12220
12945
  if (proxy.lastVisibleDataChangeParams && proxy.lastVisibleDataChangeParams.firstValue === firstValue && proxy.lastVisibleDataChangeParams.lastValue === lastValue && proxy.lastVisibleDataChangeParams.startIndex === startIndex2 && proxy.lastVisibleDataChangeParams.windowSize === windowSize2) {
12221
12946
  return;
12222
12947
  }
@@ -12227,7 +12952,8 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12227
12952
  settings: proxy.formCache,
12228
12953
  dataGroups,
12229
12954
  startIndex: startIndex2,
12230
- windowSize: windowSize2
12955
+ windowSize: windowSize2,
12956
+ depthScaleSpan: proxy.formCache.axisType === "depth" ? proxy.getTargetDepthSpanMeters() : null
12231
12957
  });
12232
12958
  }
12233
12959
  function scheduleVisibleDataChange(val) {
@@ -12430,15 +13156,10 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12430
13156
  if (scaleValues.length === 0) return;
12431
13157
  const minScale = Math.min(...scaleValues);
12432
13158
  const maxScale = Math.max(...scaleValues);
12433
- const safeCm = proxy.pxToCm();
12434
- const safeDepthInterval = proxy.depthInterval || 1;
12435
- proxy.minWindowSize = Math.max(
12436
- 1,
12437
- Math.round(safeCm * (+minScale / safeDepthInterval))
12438
- );
13159
+ proxy.minWindowSize = Math.max(1, proxy.windowSizeFromScale(minScale, 0));
12439
13160
  proxy.maxWindowSize = Math.max(
12440
13161
  proxy.minWindowSize,
12441
- Math.round(safeCm * (+maxScale / safeDepthInterval))
13162
+ proxy.windowSizeFromScale(maxScale, 0)
12442
13163
  );
12443
13164
  proxy.updateSettings({
12444
13165
  key: "scale",
@@ -12452,7 +13173,19 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12452
13173
  value: proxy.currentToolBarConfig.form.timeRange
12453
13174
  });
12454
13175
  }
12455
- proxy.startIndex = proxy.realTimeData.length > proxy.windowSize ? proxy.realTimeData.length - proxy.windowSize : 0;
13176
+ if (proxy.formCache.axisType === "depth") {
13177
+ const scaled = proxy.computeDepthScaleWindow(
13178
+ Math.max(0, proxy.realTimeData.length - 1)
13179
+ );
13180
+ proxy._syncingDepthScaleWindow = true;
13181
+ proxy.windowSize = scaled.windowSize;
13182
+ proxy.startIndex = scaled.start;
13183
+ proxy.targetWindowSize = scaled.windowSize;
13184
+ proxy.targetStartIndex = scaled.start;
13185
+ proxy._syncingDepthScaleWindow = false;
13186
+ } else {
13187
+ proxy.startIndex = proxy.realTimeData.length > proxy.windowSize ? proxy.realTimeData.length - proxy.windowSize : 0;
13188
+ }
12456
13189
  }
12457
13190
  function jumpToPosition(data) {
12458
13191
  if (!proxy.realTimeData || proxy.realTimeData.length === 0) return;
@@ -12485,18 +13218,296 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12485
13218
  return;
12486
13219
  }
12487
13220
  proxy.startIndex = targetIndex - Math.ceil(proxy.windowSize / 2);
13221
+ if (proxy.formCache.axisType === "depth") {
13222
+ const scaled = proxy.computeDepthScaleWindow(proxy.startIndex);
13223
+ proxy._syncingDepthScaleWindow = true;
13224
+ proxy.startIndex = scaled.start;
13225
+ proxy.windowSize = scaled.windowSize;
13226
+ proxy._syncingDepthScaleWindow = false;
13227
+ }
12488
13228
  proxy.updateLanesChartOption();
12489
13229
  }
12490
13230
  function pxToCm() {
12491
- const container = proxy.$refs.targetDom;
12492
- if (!container) return 4;
12493
- const rect = container.getBoundingClientRect();
12494
- const headerHeight = proxy.$refs.chartContainer && proxy.$refs.chartContainer.getLaneHeightPx() || 0;
12495
- const px = rect.height - headerHeight;
12496
13231
  const PX_PER_CM = 96 / 2.54;
13232
+ let px = 0;
13233
+ const wrap = proxy.$refs.chartAreaWrap;
13234
+ if (wrap && wrap.clientHeight > 40) px = wrap.clientHeight;
13235
+ if (!(px > 40)) {
13236
+ const charts = typeof proxy.getConnectedCharts === "function" ? proxy.getConnectedCharts() : [];
13237
+ for (let i = 0; i < charts.length; i++) {
13238
+ const chart = charts[i];
13239
+ if (!chart || chart.isDisposed()) continue;
13240
+ const h = chart.getHeight && chart.getHeight();
13241
+ if (h > 40) {
13242
+ px = h;
13243
+ break;
13244
+ }
13245
+ }
13246
+ }
13247
+ if (!(px > 40)) {
13248
+ const container = proxy.$refs.targetDom;
13249
+ if (container) {
13250
+ const rect = container.getBoundingClientRect();
13251
+ const headerHeight = proxy.$refs.chartContainer && proxy.$refs.chartContainer.getLaneHeightPx() || 0;
13252
+ px = Math.max(0, rect.height - headerHeight);
13253
+ }
13254
+ }
12497
13255
  const cm = px / PX_PER_CM;
12498
13256
  return cm > 0 ? cm : 4;
12499
13257
  }
13258
+ function parseScaleMetersPerCm(scale) {
13259
+ if (scale == null || scale === "") return 1;
13260
+ if (typeof scale === "string" && String(scale).indexOf(":") >= 0) {
13261
+ const n2 = Number(String(scale).split(":").pop());
13262
+ if (Number.isFinite(n2) && n2 > 0) return n2 / 100;
13263
+ }
13264
+ const n = Number(scale);
13265
+ return Number.isFinite(n) && n > 0 ? n : 1;
13266
+ }
13267
+ function getTargetDepthSpanMeters() {
13268
+ return proxy.pxToCm() * proxy.getScaleMetersPerCm();
13269
+ }
13270
+ function accumulateDrawnDepthSpan(rows, from, to, axisKey) {
13271
+ if (!Array.isArray(rows) || !rows.length) return 0;
13272
+ const start = Math.max(0, from | 0);
13273
+ const end = Math.min(rows.length, to | 0);
13274
+ if (end <= start) return 0;
13275
+ let acc = 0;
13276
+ let dir = 0;
13277
+ let runMin = Infinity;
13278
+ let runMax = -Infinity;
13279
+ let prev = NaN;
13280
+ for (let i = start; i < end; i++) {
13281
+ const v = Number(rows[i] && rows[i][axisKey]);
13282
+ if (!Number.isFinite(v)) continue;
13283
+ if (!Number.isFinite(prev)) {
13284
+ prev = v;
13285
+ runMin = v;
13286
+ runMax = v;
13287
+ continue;
13288
+ }
13289
+ if (v === prev) continue;
13290
+ const step = v > prev ? 1 : -1;
13291
+ if (dir !== 0 && step !== dir) {
13292
+ if (runMax > runMin) acc += runMax - runMin;
13293
+ runMin = prev;
13294
+ runMax = prev;
13295
+ dir = step;
13296
+ } else if (dir === 0) {
13297
+ dir = step;
13298
+ }
13299
+ if (v < runMin) runMin = v;
13300
+ if (v > runMax) runMax = v;
13301
+ prev = v;
13302
+ }
13303
+ if (runMax > runMin) acc += runMax - runMin;
13304
+ return acc;
13305
+ }
13306
+ function getWindowDepthSpanMeters(startIndex2, windowSize2) {
13307
+ const rows = proxy.realTimeData;
13308
+ if (!Array.isArray(rows) || !rows.length) return 0;
13309
+ const start = Math.max(0, startIndex2 | 0);
13310
+ return proxy.accumulateDrawnDepthSpan(
13311
+ rows,
13312
+ start,
13313
+ start + Math.max(1, windowSize2 | 0),
13314
+ proxy.getAxisDataKey()
13315
+ );
13316
+ }
13317
+ function countRowsCoveringDepthSpan(startIndex2, spanMeters) {
13318
+ const rows = proxy.realTimeData;
13319
+ const span = Number(spanMeters);
13320
+ if (!Array.isArray(rows) || !rows.length) return 1;
13321
+ if (!(span > 0)) return 1;
13322
+ const axisKey = proxy.getAxisDataKey();
13323
+ const start = Math.max(0, Math.min(startIndex2 | 0, rows.length - 1));
13324
+ let acc = 0;
13325
+ let dir = 0;
13326
+ let runMin = Infinity;
13327
+ let runMax = -Infinity;
13328
+ let prev = NaN;
13329
+ let lastFinite = start;
13330
+ for (let i = start; i < rows.length; i++) {
13331
+ const v = Number(rows[i] && rows[i][axisKey]);
13332
+ if (!Number.isFinite(v)) continue;
13333
+ lastFinite = i;
13334
+ if (!Number.isFinite(prev)) {
13335
+ prev = v;
13336
+ runMin = v;
13337
+ runMax = v;
13338
+ continue;
13339
+ }
13340
+ if (v !== prev) {
13341
+ const step = v > prev ? 1 : -1;
13342
+ if (dir !== 0 && step !== dir) {
13343
+ if (runMax > runMin) acc += runMax - runMin;
13344
+ runMin = prev;
13345
+ runMax = prev;
13346
+ dir = step;
13347
+ } else if (dir === 0) {
13348
+ dir = step;
13349
+ }
13350
+ if (v < runMin) runMin = v;
13351
+ if (v > runMax) runMax = v;
13352
+ prev = v;
13353
+ }
13354
+ const drawn = acc + Math.max(0, runMax - runMin);
13355
+ if (drawn >= span) return Math.max(1, i - start + 1);
13356
+ }
13357
+ if (acc > 0 || runMax > runMin) return Math.max(1, lastFinite - start + 1);
13358
+ const interval = proxy.depthInterval > 0 ? proxy.depthInterval : 1;
13359
+ return Math.max(1, Math.round(span / interval));
13360
+ }
13361
+ function countRowsCoveringDepthSpanBackward(spanMeters) {
13362
+ const rows = proxy.realTimeData;
13363
+ const span = Number(spanMeters);
13364
+ if (!Array.isArray(rows) || !rows.length) return 1;
13365
+ if (!(span > 0)) return 1;
13366
+ const dataLen = rows.length;
13367
+ let lo = 1;
13368
+ let hi = dataLen;
13369
+ let ans = dataLen;
13370
+ while (lo <= hi) {
13371
+ const mid = lo + hi >> 1;
13372
+ const start = dataLen - mid;
13373
+ const drawn = proxy.getWindowDepthSpanMeters(start, mid);
13374
+ if (drawn >= span) {
13375
+ ans = mid;
13376
+ hi = mid - 1;
13377
+ } else {
13378
+ lo = mid + 1;
13379
+ }
13380
+ }
13381
+ return Math.max(1, ans);
13382
+ }
13383
+ function getDepthGroupHeightPercent(range, totalRange, groupCount) {
13384
+ if (proxy.formCache.axisType === "depth") {
13385
+ const target = proxy.getTargetDepthSpanMeters();
13386
+ const denom = target > 0 ? Math.max(totalRange || 0, target) : totalRange;
13387
+ if (denom > 0 && range > 0) return range / denom * 100;
13388
+ if (!(totalRange > 0) && groupCount > 0) return 100 / groupCount;
13389
+ return 0;
13390
+ }
13391
+ if (totalRange > 0 && range > 0) return range / totalRange * 100;
13392
+ if (groupCount > 0) return 100 / groupCount;
13393
+ return 0;
13394
+ }
13395
+ function sliceGroupToDrawnSpan(rows, axisKey, take) {
13396
+ if (!rows || !rows.length || !(take > 0)) return rows || [];
13397
+ const first = Number(rows[0][axisKey]);
13398
+ if (!Number.isFinite(first)) return rows;
13399
+ const out = [rows[0]];
13400
+ for (let i = 1; i < rows.length; i++) {
13401
+ const v = Number(rows[i][axisKey]);
13402
+ if (!Number.isFinite(v)) continue;
13403
+ out.push(rows[i]);
13404
+ if (Math.abs(v - first) >= take) break;
13405
+ }
13406
+ return out;
13407
+ }
13408
+ function layoutScaledAxisGroups(dataGroups, axisKey) {
13409
+ const raw = [];
13410
+ for (let i = 0; i < (dataGroups || []).length; i++) {
13411
+ const rows = dataGroups[i];
13412
+ if (!rows || !rows.length) continue;
13413
+ const e = proxy.getRowsAxisExtent(rows, axisKey);
13414
+ const range = Math.max(e.max - e.min, 0);
13415
+ raw.push({ rows, min: e.min, max: e.max, range });
13416
+ }
13417
+ const isDepth = proxy.formCache.axisType === "depth";
13418
+ const target = isDepth ? proxy.getTargetDepthSpanMeters() : 0;
13419
+ const totalRange = raw.reduce((s, x) => s + x.range, 0);
13420
+ const denom = isDepth && target > 0 ? target : totalRange > 0 ? totalRange : 0;
13421
+ const extents = [];
13422
+ const groups = [];
13423
+ let used = 0;
13424
+ let top = 0;
13425
+ const n = raw.length;
13426
+ for (let i = 0; i < n; i++) {
13427
+ const item = raw[i];
13428
+ if (isDepth && target > 0 && used >= target - 1e-6) break;
13429
+ let take = item.range;
13430
+ if (isDepth && target > 0) take = Math.min(item.range, target - used);
13431
+ if (isDepth && target > 0 && !(take > 0)) continue;
13432
+ let min = item.min;
13433
+ let max = item.max;
13434
+ let rows = item.rows;
13435
+ if (take < item.range - 1e-6) {
13436
+ rows = proxy.sliceGroupToDrawnSpan(item.rows, axisKey, take);
13437
+ const first = Number(item.rows[0][axisKey]);
13438
+ const last = Number(item.rows[item.rows.length - 1][axisKey]);
13439
+ if (Number.isFinite(first) && Number.isFinite(last)) {
13440
+ if (last >= first) {
13441
+ min = first;
13442
+ max = first + take;
13443
+ } else {
13444
+ max = first;
13445
+ min = first - take;
13446
+ }
13447
+ }
13448
+ }
13449
+ const heightPct = denom > 0 ? Math.max(take, 0) / denom * 100 : 100 / Math.max(n, 1);
13450
+ extents.push({
13451
+ min,
13452
+ max,
13453
+ range: Math.max(take, 0),
13454
+ heightPct,
13455
+ top: `${top}%`,
13456
+ height: `${heightPct}%`
13457
+ });
13458
+ groups.push(rows);
13459
+ top += heightPct;
13460
+ used += Math.max(take, 0);
13461
+ }
13462
+ return { extents, groups, totalRange: used, targetSpan: target };
13463
+ }
13464
+ function computeDepthScaleWindow(preferredStart, scale) {
13465
+ const rows = proxy.realTimeData;
13466
+ const dataLen = rows && rows.length || 0;
13467
+ if (!dataLen) return { start: 0, windowSize: 1 };
13468
+ const span = scale != null ? proxy.pxToCm() * proxy.parseScaleMetersPerCm(scale) : proxy.getTargetDepthSpanMeters();
13469
+ let start = Math.max(
13470
+ 0,
13471
+ Math.min(dataLen - 1, Math.floor(Number(preferredStart) || 0))
13472
+ );
13473
+ let size = proxy.countRowsCoveringDepthSpan(start, span);
13474
+ const covered = proxy.getWindowDepthSpanMeters(start, size);
13475
+ if (covered + 1e-6 < span && start + size >= dataLen) {
13476
+ size = proxy.countRowsCoveringDepthSpanBackward(span);
13477
+ start = Math.max(0, dataLen - size);
13478
+ } else if (start + size > dataLen) {
13479
+ start = Math.max(0, dataLen - size);
13480
+ }
13481
+ return { start, windowSize: Math.max(1, size) };
13482
+ }
13483
+ function windowSizeFromScale(scale, startIndex2) {
13484
+ const span = proxy.pxToCm() * proxy.parseScaleMetersPerCm(scale);
13485
+ const start = startIndex2 == null ? Math.max(0, proxy.startIndex || 0) : startIndex2;
13486
+ return proxy.countRowsCoveringDepthSpan(start, span);
13487
+ }
13488
+ function emitScaleFromWindowSize(windowSize2) {
13489
+ var _a, _b;
13490
+ const list = ((_b = (_a = proxy.currentToolBarConfig) == null ? void 0 : _a.scaleList) == null ? void 0 : _b.map((item) => item.value)) || [];
13491
+ const cm = proxy.pxToCm();
13492
+ const span = proxy.getWindowDepthSpanMeters(
13493
+ proxy.startIndex || 0,
13494
+ windowSize2
13495
+ );
13496
+ let metersPerCm = cm > 0 ? span / cm : 1;
13497
+ if (!(metersPerCm > 0)) {
13498
+ const interval = proxy.depthInterval || 1;
13499
+ metersPerCm = windowSize2 * interval / cm;
13500
+ }
13501
+ let size = Math.round(metersPerCm);
13502
+ if (list.length) {
13503
+ const maxScale = Math.max(...list);
13504
+ if (size > maxScale) size = maxScale;
13505
+ }
13506
+ proxy.$emit(
13507
+ "updateScale",
13508
+ list.includes(size) ? size : `1:${Math.round(metersPerCm * 100)}`
13509
+ );
13510
+ }
12500
13511
  function getXAxisRangeByHeader(lineInfo, validData = []) {
12501
13512
  let headerMin = 0;
12502
13513
  let headerMax = 1;
@@ -12627,8 +13638,23 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12627
13638
  });
12628
13639
  }
12629
13640
  function getVisibleData(startIndex2 = proxy.startIndex) {
12630
- const end = startIndex2 + proxy.windowSize;
12631
- proxy.visibleData = markRaw(proxy.realTimeData.slice(startIndex2, end));
13641
+ let start = Math.max(0, Math.floor(Number(startIndex2) || 0));
13642
+ let size = Math.max(1, Math.floor(Number(proxy.windowSize) || 1));
13643
+ if (proxy.formCache.axisType === "depth" && proxy._lockDepthScale && !proxy._syncingDepthScaleWindow) {
13644
+ const scaled = proxy.computeDepthScaleWindow(start);
13645
+ start = scaled.start;
13646
+ size = scaled.windowSize;
13647
+ if (start !== proxy.startIndex || size !== proxy.windowSize) {
13648
+ proxy._syncingDepthScaleWindow = true;
13649
+ proxy.startIndex = start;
13650
+ proxy.windowSize = size;
13651
+ proxy.targetStartIndex = start;
13652
+ proxy.targetWindowSize = size;
13653
+ proxy._syncingDepthScaleWindow = false;
13654
+ }
13655
+ }
13656
+ const end = start + size;
13657
+ proxy.visibleData = markRaw(proxy.realTimeData.slice(start, end));
12632
13658
  return proxy.visibleData;
12633
13659
  }
12634
13660
  function getChartDrawRows(transferData) {
@@ -12926,24 +13952,13 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12926
13952
  return Math.max(minStep, Math.ceil(unified / minStep) * minStep);
12927
13953
  }
12928
13954
  function getScaleMetersPerCm() {
12929
- let scale = proxy.formCache && proxy.formCache.scale != null ? proxy.formCache.scale : proxy.currentToolBarConfig && proxy.currentToolBarConfig.form && proxy.currentToolBarConfig.form.scale;
12930
- if (typeof scale === "string") {
12931
- scale = +String(scale).replace(/1:/, "") / 100;
12932
- }
12933
- const n = Number(scale);
12934
- return n > 0 ? n : 1;
12935
- }
12936
- function niceDepthTickInterval(raw) {
12937
- if (!Number.isFinite(raw) || raw <= 0) return 1;
12938
- const exp = Math.floor(Math.log10(raw));
12939
- const base = Math.pow(10, exp);
12940
- const frac = raw / base;
12941
- let niceFrac;
12942
- if (frac <= 1) niceFrac = 1;
12943
- else if (frac <= 2) niceFrac = 2;
12944
- else if (frac <= 5) niceFrac = 5;
12945
- else niceFrac = 10;
12946
- return niceFrac * base;
13955
+ const scale = proxy.formCache && proxy.formCache.scale != null ? proxy.formCache.scale : proxy.currentToolBarConfig && proxy.currentToolBarConfig.form && proxy.currentToolBarConfig.form.scale;
13956
+ return proxy.parseScaleMetersPerCm(scale);
13957
+ }
13958
+ function ceilDepthTickInterval(raw) {
13959
+ const n = Number(raw);
13960
+ if (!Number.isFinite(n) || n <= 0) return 1;
13961
+ return Math.max(1, Math.ceil(n));
12947
13962
  }
12948
13963
  function computeDepthTimeAxisInterval(groups, axisKey) {
12949
13964
  if (proxy.formCache.axisType === "time") {
@@ -12975,7 +13990,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
12975
13990
  let unified = Math.ceil(range / Math.min(12, intervalCount));
12976
13991
  return Math.max(minStep, Math.ceil(unified / minStep) * minStep);
12977
13992
  }
12978
- return proxy.niceDepthTickInterval(proxy.getScaleMetersPerCm());
13993
+ return proxy.ceilDepthTickInterval(proxy.getScaleMetersPerCm());
12979
13994
  }
12980
13995
  function getDataZoomMinSpanPercent() {
12981
13996
  if (!proxy.isGeomechanical) return null;
@@ -13117,31 +14132,18 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13117
14132
  }
13118
14133
  function getVisibleAxisGroups(rows, axisKey) {
13119
14134
  const dataGroups = splitArrayByDepth(rows, axisKey);
14135
+ const layout = proxy.layoutScaledAxisGroups(dataGroups, axisKey);
13120
14136
  const groups = [];
13121
- let totalRange = 0;
13122
- for (let i = 0; i < dataGroups.length; i++) {
13123
- const group2 = dataGroups[i];
13124
- if (!group2 || !group2.length) continue;
13125
- let min = Infinity;
13126
- let max = -Infinity;
13127
- for (let j = 0; j < group2.length; j++) {
13128
- const v = Number(group2[j][axisKey]);
13129
- if (!Number.isFinite(v)) continue;
13130
- if (v < min) min = v;
13131
- if (v > max) max = v;
13132
- }
13133
- if (!Number.isFinite(min) || !Number.isFinite(max)) continue;
13134
- const range = Math.max(max - min, 0);
13135
- groups.push({ rows: group2, min, max, range });
13136
- totalRange += range;
13137
- }
13138
- let currentTop = 0;
13139
- const n = groups.length;
13140
- for (let i = 0; i < n; i++) {
13141
- const heightPct = totalRange > 0 ? groups[i].range / totalRange * 100 : 100 / n;
13142
- groups[i].top = `${currentTop}%`;
13143
- groups[i].height = `${heightPct}%`;
13144
- currentTop += heightPct;
14137
+ for (let i = 0; i < layout.groups.length; i++) {
14138
+ const e = layout.extents[i];
14139
+ groups.push({
14140
+ rows: layout.groups[i],
14141
+ min: e.min,
14142
+ max: e.max,
14143
+ range: e.range,
14144
+ top: e.top,
14145
+ height: e.height
14146
+ });
13145
14147
  }
13146
14148
  return groups;
13147
14149
  }
@@ -13301,6 +14303,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13301
14303
  proxy.updateLanesChartOption("", "series");
13302
14304
  }
13303
14305
  function handleWheel(e) {
14306
+ var _a, _b;
13304
14307
  e.preventDefault();
13305
14308
  if (e.stopPropagation) e.stopPropagation();
13306
14309
  if (proxy.isGeomechanical) proxy.startChartZoom();
@@ -13308,7 +14311,23 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13308
14311
  proxy.wheelDelta = Math.sign(e.deltaY);
13309
14312
  const delta = Math.sign(e.deltaY);
13310
14313
  const zoomByWheel = proxy.isGeomechanical || proxy.isCtrlPressed || e.ctrlKey || e.metaKey;
14314
+ proxy._lockDepthScale = !zoomByWheel;
13311
14315
  if (zoomByWheel) {
14316
+ if (proxy.formCache.axisType === "depth") {
14317
+ const scaleValues = ((_b = (_a = proxy.currentToolBarConfig) == null ? void 0 : _a.scaleList) == null ? void 0 : _b.map((item) => item.value)) || [];
14318
+ if (scaleValues.length) {
14319
+ const minScale = Math.min(...scaleValues);
14320
+ const maxScale = Math.max(...scaleValues);
14321
+ proxy.minWindowSize = Math.max(
14322
+ 1,
14323
+ proxy.windowSizeFromScale(minScale, proxy.startIndex)
14324
+ );
14325
+ proxy.maxWindowSize = Math.max(
14326
+ proxy.minWindowSize,
14327
+ proxy.windowSizeFromScale(maxScale, proxy.startIndex)
14328
+ );
14329
+ }
14330
+ }
13312
14331
  if (delta < 0 && proxy.windowSize <= proxy.minWindowSize || delta > 0 && proxy.windowSize >= proxy.maxWindowSize) {
13313
14332
  return;
13314
14333
  }
@@ -13328,8 +14347,15 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13328
14347
  proxy.targetStartIndex = Math.floor(calcStartIndex);
13329
14348
  } else {
13330
14349
  const speed = Math.max(1, proxy.windowSize / 100);
13331
- proxy.targetStartIndex = Math.floor(proxy.startIndex + delta * speed * 10);
13332
- proxy.targetWindowSize = proxy.windowSize;
14350
+ const nextStart = Math.floor(proxy.startIndex + delta * speed * 10);
14351
+ if (proxy.formCache.axisType === "depth") {
14352
+ const scaled = proxy.computeDepthScaleWindow(nextStart);
14353
+ proxy.targetStartIndex = scaled.start;
14354
+ proxy.targetWindowSize = scaled.windowSize;
14355
+ } else {
14356
+ proxy.targetStartIndex = nextStart;
14357
+ proxy.targetWindowSize = proxy.windowSize;
14358
+ }
13333
14359
  if (proxy.formCache.dataType == "history") {
13334
14360
  proxy.debounceJudgeEdge();
13335
14361
  }
@@ -13356,7 +14382,16 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13356
14382
  const animate = () => {
13357
14383
  const lerp = 0.5;
13358
14384
  proxy.startIndex += (proxy.targetStartIndex - proxy.startIndex) * lerp;
13359
- proxy.windowSize += (proxy.targetWindowSize - proxy.windowSize) * lerp;
14385
+ if (proxy._lockDepthScale && proxy.formCache.axisType === "depth") {
14386
+ proxy._syncingDepthScaleWindow = true;
14387
+ proxy.windowSize = proxy.countRowsCoveringDepthSpan(
14388
+ proxy.startIndex,
14389
+ proxy.getTargetDepthSpanMeters()
14390
+ );
14391
+ proxy._syncingDepthScaleWindow = false;
14392
+ } else {
14393
+ proxy.windowSize += (proxy.targetWindowSize - proxy.windowSize) * lerp;
14394
+ }
13360
14395
  if (Math.abs(proxy.startIndex - proxy.targetStartIndex) < 0.5 && Math.abs(proxy.windowSize - proxy.targetWindowSize) < 0.5) {
13361
14396
  proxy.startIndex = proxy.targetStartIndex;
13362
14397
  proxy.windowSize = proxy.targetWindowSize;
@@ -13861,7 +14896,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13861
14896
  const paramNameMap = {};
13862
14897
  const paramCodeMap = /* @__PURE__ */ new Map();
13863
14898
  proxy.params.forEach((p) => {
13864
- paramNameMap[p.paramId] = p.paramName;
14899
+ paramNameMap[p.paramId] = resolveParamName(p);
13865
14900
  if (p.paramCode) {
13866
14901
  paramCodeMap.set(p.paramId, p.paramCode.split(","));
13867
14902
  }
@@ -13936,17 +14971,19 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13936
14971
  showContent: false
13937
14972
  };
13938
14973
  }
13939
- const { extents: groupExtents, totalRange: totalHeight } = proxy.getGroupAxisExtents(dataGroups, axisKey);
14974
+ const layout = proxy.layoutScaledAxisGroups(dataGroups, axisKey);
14975
+ const plotGroups = layout.groups;
14976
+ const groupExtents = layout.extents;
13940
14977
  const unifiedInterval = proxy.computeUnifiedAxisInterval(
13941
- dataGroups,
14978
+ plotGroups,
13942
14979
  axisKey
13943
14980
  );
13944
- let currentTop = 0;
13945
- for (let groupIndex = 0; groupIndex < dataGroups.length; groupIndex++) {
13946
- const group2 = dataGroups[groupIndex];
14981
+ for (let groupIndex = 0; groupIndex < plotGroups.length; groupIndex++) {
14982
+ const group2 = plotGroups[groupIndex];
13947
14983
  const groupMin = groupExtents[groupIndex].min;
13948
14984
  const groupMax = groupExtents[groupIndex].max;
13949
- const groupHeight = totalHeight > 0 ? groupExtents[groupIndex].range / totalHeight * 100 : 100 / dataGroups.length;
14985
+ const groupHeight = groupExtents[groupIndex].heightPct;
14986
+ const currentTop = parseFloat(groupExtents[groupIndex].top) || 0;
13950
14987
  const gridIndex = option.grid.length;
13951
14988
  option.grid.push({
13952
14989
  top: `${currentTop}%`,
@@ -13957,7 +14994,6 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13957
14994
  // 井深列不用 containLabel:多 grid 会按最长刻度各缩一块,数字会偏左。9.4
13958
14995
  containLabel: false
13959
14996
  });
13960
- currentTop += groupHeight;
13961
14997
  const groupPlotH = proxy.getChartPlotHeightPx() * (groupHeight / 100);
13962
14998
  const ySplitCount = proxy.isGeomechanical ? proxy.getDepthLabelSplitCount(groupPlotH) : proxy.getYGridSplitCount();
13963
14999
  option.yAxis.push({
@@ -13986,7 +15022,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
13986
15022
  option.yAxis[gridIndex].minInterval = 1;
13987
15023
  option.yAxis[gridIndex].alignTicks = true;
13988
15024
  } else if (isDepthLane || isTimeLane) {
13989
- option.yAxis[gridIndex].interval = proxy.computeDepthTimeAxisInterval(dataGroups, axisKey);
15025
+ option.yAxis[gridIndex].interval = proxy.computeDepthTimeAxisInterval(plotGroups, axisKey);
13990
15026
  } else {
13991
15027
  option.yAxis[gridIndex].interval = unifiedInterval;
13992
15028
  }
@@ -14026,7 +15062,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
14026
15062
  lane,
14027
15063
  group2,
14028
15064
  isTimeLane,
14029
- dataGroups,
15065
+ plotGroups,
14030
15066
  groupIndex,
14031
15067
  groupMin,
14032
15068
  groupMax,
@@ -14061,7 +15097,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
14061
15097
  )
14062
15098
  };
14063
15099
  }
14064
- const groupSeriesData = dataGroups.length === 1 ? seriesDataCache2[lineInfo.lineId].full : proxy.generateSeriesDataCached(
15100
+ const groupSeriesData = plotGroups.length === 1 ? seriesDataCache2[lineInfo.lineId].full : proxy.generateSeriesDataCached(
14065
15101
  group2,
14066
15102
  lineInfo,
14067
15103
  axisKey,
@@ -14112,7 +15148,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
14112
15148
  type: "line",
14113
15149
  xAxisIndex,
14114
15150
  yAxisIndex: gridIndex,
14115
- name: (lineInfo.recommendParamId ? "实际值" : paramNameMap[lineInfo.paramId]) || "",
15151
+ name: (lineInfo.recommendParamId ? $kdInnerTrans("kdLaneChart.label.actualValue") : paramNameMap[lineInfo.paramId]) || "",
14116
15152
  symbol: lineInfo.symbol || "none",
14117
15153
  color: lineInfo.themeConfig ? lineInfo.isGradient && ((_b = (_a = proxy.linearGradientLineColor) == null ? void 0 : _a[proxy.nowTheme]) == null ? void 0 : _b[lineInfo.paramId]) ? proxy.linearGradientLineColor[proxy.nowTheme][lineInfo.paramId] : lineInfo.themeConfig[proxy.nowTheme].lineColor : lineInfo.lineColor,
14118
15154
  symbolSize: getAdaptedFontSize(lineInfo.symbolSize || 6),
@@ -14211,7 +15247,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
14211
15247
  type: "line",
14212
15248
  xAxisIndex,
14213
15249
  yAxisIndex: gridIndex,
14214
- name: "推荐值",
15250
+ name: $kdInnerTrans("kdLaneChart.label.recommendValue"),
14215
15251
  symbol: "none",
14216
15252
  color: lineInfo.themeConfig ? lineInfo.themeConfig[proxy.nowTheme].lineColor : lineInfo.lineColor,
14217
15253
  lineStyle: {
@@ -14415,13 +15451,15 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
14415
15451
  return lineInfo.lineColor || "";
14416
15452
  }
14417
15453
  function getTooltipLineName(lineInfo, isRecommend) {
14418
- if (isRecommend) return "推荐值";
14419
- if (lineInfo && lineInfo.recommendParamId) return "实际值";
15454
+ if (isRecommend) return $kdInnerTrans("kdLaneChart.label.recommendValue");
15455
+ if (lineInfo && lineInfo.recommendParamId) {
15456
+ return $kdInnerTrans("kdLaneChart.label.actualValue");
15457
+ }
14420
15458
  const param = (proxy.params || []).find(
14421
15459
  (p) => p.paramId == (lineInfo && lineInfo.paramId)
14422
15460
  );
14423
- if (param && param.paramName) {
14424
- return `${param.paramName}${param.paramUnit ? `(${param.paramUnit})` : ""}`;
15461
+ if (param && (param.paramName || param.paramNameEn || param.i18nKey)) {
15462
+ return formatParamLabel(param);
14425
15463
  }
14426
15464
  return lineInfo && (lineInfo.paramName || String(lineInfo.paramId)) || "";
14427
15465
  }
@@ -15966,17 +17004,19 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
15966
17004
  const newYAxis = [];
15967
17005
  const newXAxis = [];
15968
17006
  const newSeriesData = [];
15969
- const { extents: groupExtents, totalRange: totalHeight } = proxy.getGroupAxisExtents(dataGroups, axisKey);
17007
+ const layout = proxy.layoutScaledAxisGroups(dataGroups, axisKey);
17008
+ const plotGroups = layout.groups;
17009
+ const groupExtents = layout.extents;
15970
17010
  const unifiedInterval = proxy.computeUnifiedAxisInterval(
15971
- dataGroups,
17011
+ plotGroups,
15972
17012
  axisKey
15973
17013
  );
15974
- let currentTop = 0;
15975
17014
  let seriesIndex = 0;
15976
- dataGroups.forEach((group2, groupIndex) => {
17015
+ plotGroups.forEach((group2, groupIndex) => {
15977
17016
  const groupMin = groupExtents[groupIndex].min;
15978
17017
  const groupMax = groupExtents[groupIndex].max;
15979
- const groupHeight = totalHeight > 0 ? groupExtents[groupIndex].range / totalHeight * 100 : 100 / dataGroups.length;
17018
+ const groupHeight = groupExtents[groupIndex].heightPct;
17019
+ const currentTop = parseFloat(groupExtents[groupIndex].top) || 0;
15980
17020
  const gridIndex = newYAxis.length;
15981
17021
  const gridItem = {
15982
17022
  top: `${currentTop}%`,
@@ -16012,7 +17052,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16012
17052
  yAxisItem.alignTicks = true;
16013
17053
  } else if (isDepthLane) {
16014
17054
  yAxisItem.interval = proxy.computeDepthTimeAxisInterval(
16015
- dataGroups,
17055
+ plotGroups,
16016
17056
  axisKey
16017
17057
  );
16018
17058
  } else {
@@ -16024,7 +17064,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16024
17064
  lane,
16025
17065
  group2,
16026
17066
  false,
16027
- dataGroups,
17067
+ plotGroups,
16028
17068
  groupIndex,
16029
17069
  groupMin,
16030
17070
  groupMax,
@@ -16193,7 +17233,6 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16193
17233
  });
16194
17234
  }
16195
17235
  }
16196
- currentTop += groupHeight;
16197
17236
  });
16198
17237
  if (needUpdate.grid) {
16199
17238
  updates.grid = newGrid;
@@ -16358,28 +17397,19 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16358
17397
  return `${y}-${month}-${day} ${h}:${m}:${s}`;
16359
17398
  }
16360
17399
  function scaleToDataSize(scale) {
16361
- var _a, _b;
16362
- if (typeof scale == "string") {
16363
- scale = +scale.replace("1:", "") / 100;
16364
- }
16365
- const safeCm = proxy.pxToCm();
16366
- const safeDepthInterval = proxy.depthInterval > 0 ? proxy.depthInterval : 1;
16367
- let size = Math.max(
16368
- 1,
16369
- Math.round(safeCm * (+scale / safeDepthInterval))
16370
- );
16371
17400
  const dataLen = proxy.realTimeData && proxy.realTimeData.length || 0;
16372
- const maxSize = Math.max(1, dataLen || size);
16373
- if (size < maxSize) {
16374
- proxy.windowSize = size;
16375
- } else {
16376
- proxy.windowSize = maxSize;
16377
- let newsize = Math.round(maxSize / safeCm * safeDepthInterval);
16378
- let data = ((_b = (_a = proxy.currentToolBarConfig) == null ? void 0 : _a.scaleList) == null ? void 0 : _b.map((item) => item.value)) || [];
16379
- proxy.$emit(
16380
- "updateScale",
16381
- data.includes(newsize) ? newsize : `1:${newsize * 100}`
16382
- );
17401
+ proxy._syncingDepthScaleWindow = true;
17402
+ const scaled = proxy.computeDepthScaleWindow(proxy.startIndex || 0, scale);
17403
+ proxy.windowSize = scaled.windowSize;
17404
+ proxy.startIndex = scaled.start;
17405
+ proxy._syncingDepthScaleWindow = false;
17406
+ const targetSpan = proxy.pxToCm() * proxy.parseScaleMetersPerCm(scale);
17407
+ const covered = proxy.getWindowDepthSpanMeters(
17408
+ proxy.startIndex,
17409
+ proxy.windowSize
17410
+ );
17411
+ if (dataLen && covered + 1e-6 < targetSpan) {
17412
+ proxy.emitScaleFromWindowSize(proxy.windowSize);
16383
17413
  }
16384
17414
  }
16385
17415
  function getLatestLineDataByParamCode() {
@@ -16579,6 +17609,8 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16579
17609
  });
16580
17610
  bindSetupState(setupBag, {
16581
17611
  paramsChange,
17612
+ getCurrentConfig,
17613
+ forwardConfigChange,
16582
17614
  laneWidthChange,
16583
17615
  shouldShowLaneLogRuler,
16584
17616
  getLaneLogPlotRange,
@@ -16677,6 +17709,18 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16677
17709
  initWindowSizeRange,
16678
17710
  jumpToPosition,
16679
17711
  pxToCm,
17712
+ parseScaleMetersPerCm,
17713
+ getTargetDepthSpanMeters,
17714
+ accumulateDrawnDepthSpan,
17715
+ getWindowDepthSpanMeters,
17716
+ countRowsCoveringDepthSpan,
17717
+ countRowsCoveringDepthSpanBackward,
17718
+ getDepthGroupHeightPercent,
17719
+ sliceGroupToDrawnSpan,
17720
+ layoutScaledAxisGroups,
17721
+ computeDepthScaleWindow,
17722
+ windowSizeFromScale,
17723
+ emitScaleFromWindowSize,
16680
17724
  getXAxisRangeByHeader,
16681
17725
  judgeScrollEdge,
16682
17726
  isSameScrollEdgePayload,
@@ -16706,7 +17750,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16706
17750
  getPaperGridAxisStyle,
16707
17751
  computeUnifiedAxisInterval,
16708
17752
  getScaleMetersPerCm,
16709
- niceDepthTickInterval,
17753
+ ceilDepthTickInterval,
16710
17754
  computeDepthTimeAxisInterval,
16711
17755
  getDataZoomMinSpanPercent,
16712
17756
  buildInsideDataZoom,
@@ -16746,6 +17790,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16746
17790
  formatTooltipXValue,
16747
17791
  getLineThemeColor,
16748
17792
  getTooltipLineName,
17793
+ $kdInnerTrans,
16749
17794
  readLineValueFromRow,
16750
17795
  formatTooltipLineDisplayValue,
16751
17796
  buildLaneTooltipSeries,
@@ -16807,6 +17852,12 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16807
17852
  },
16808
17853
  { immediate: true }
16809
17854
  );
17855
+ watch(
17856
+ () => localeState.current,
17857
+ () => {
17858
+ if (!proxy.isUpdatingChart) proxy.updateLanesChartOption();
17859
+ }
17860
+ );
16810
17861
  watch(
16811
17862
  () => proxy.isGeomechanical,
16812
17863
  (val) => {
@@ -16886,20 +17937,13 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
16886
17937
  watch(
16887
17938
  () => proxy.windowSize,
16888
17939
  (newVal) => {
16889
- var _a, _b;
16890
17940
  if (!newVal) {
16891
17941
  proxy.scaleToDataSize(1);
16892
17942
  return;
16893
17943
  }
17944
+ if (proxy._syncingDepthScaleWindow || proxy._lockDepthScale) return;
16894
17945
  if (newVal && proxy.formCache.axisType == "depth") {
16895
- let data = ((_b = (_a = proxy.currentToolBarConfig) == null ? void 0 : _a.scaleList) == null ? void 0 : _b.map((item) => item.value)) || [];
16896
- const safeCm = proxy.pxToCm();
16897
- const safeDepthInterval = proxy.depthInterval || 1;
16898
- let size = Math.round(newVal * safeDepthInterval / safeCm) < Math.max(...data) ? Math.round(newVal * safeDepthInterval / safeCm) : Math.max(...data);
16899
- proxy.$emit(
16900
- "updateScale",
16901
- data.includes(size) ? size : `1:${size * 100}`
16902
- );
17946
+ proxy.emitScaleFromWindowSize(newVal);
16903
17947
  }
16904
17948
  }
16905
17949
  );
@@ -17072,6 +18116,8 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17072
18116
  );
17073
18117
  const exposed = {
17074
18118
  paramsChange,
18119
+ getCurrentConfig,
18120
+ forwardConfigChange,
17075
18121
  laneWidthChange,
17076
18122
  shouldShowLaneLogRuler,
17077
18123
  getLaneLogPlotRange,
@@ -17170,6 +18216,18 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17170
18216
  initWindowSizeRange,
17171
18217
  jumpToPosition,
17172
18218
  pxToCm,
18219
+ parseScaleMetersPerCm,
18220
+ getTargetDepthSpanMeters,
18221
+ accumulateDrawnDepthSpan,
18222
+ getWindowDepthSpanMeters,
18223
+ countRowsCoveringDepthSpan,
18224
+ countRowsCoveringDepthSpanBackward,
18225
+ getDepthGroupHeightPercent,
18226
+ sliceGroupToDrawnSpan,
18227
+ layoutScaledAxisGroups,
18228
+ computeDepthScaleWindow,
18229
+ windowSizeFromScale,
18230
+ emitScaleFromWindowSize,
17173
18231
  getXAxisRangeByHeader,
17174
18232
  judgeScrollEdge,
17175
18233
  isSameScrollEdgePayload,
@@ -17199,7 +18257,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17199
18257
  getPaperGridAxisStyle,
17200
18258
  computeUnifiedAxisInterval,
17201
18259
  getScaleMetersPerCm,
17202
- niceDepthTickInterval,
18260
+ ceilDepthTickInterval,
17203
18261
  computeDepthTimeAxisInterval,
17204
18262
  getDataZoomMinSpanPercent,
17205
18263
  buildInsideDataZoom,
@@ -17240,6 +18298,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17240
18298
  formatTooltipXValue,
17241
18299
  getLineThemeColor,
17242
18300
  getTooltipLineName,
18301
+ $kdInnerTrans,
17243
18302
  readLineValueFromRow,
17244
18303
  formatTooltipLineDisplayValue,
17245
18304
  buildLaneTooltipSeries,
@@ -17336,6 +18395,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17336
18395
  onLineChange: lineChange,
17337
18396
  onLaneWidthChange: laneWidthChange,
17338
18397
  onParamsChange: paramsChange,
18398
+ onConfigChange: forwardConfigChange,
17339
18399
  visibleData: visibleData.value,
17340
18400
  headerData: headerData.value,
17341
18401
  lineRange: lineRange.value,
@@ -17530,7 +18590,7 @@ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
17530
18590
  };
17531
18591
  }
17532
18592
  });
17533
- const LineChartContainer = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-aef15c6c"]]);
18593
+ const LineChartContainer = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-46494106"]]);
17534
18594
  const _hoisted_1$1 = ["title"];
17535
18595
  const _hoisted_2$1 = ["title"];
17536
18596
  const _sfc_main$1 = /* @__PURE__ */ Object.assign({
@@ -17548,6 +18608,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({
17548
18608
  }
17549
18609
  },
17550
18610
  setup(__props) {
18611
+ const { $kdOuterTrans } = useKdI18n();
17551
18612
  const props = __props;
17552
18613
  const gridStyle = computed(() => {
17553
18614
  const columns = props.parameterPanelConfig.columns || 1;
@@ -17567,8 +18628,8 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({
17567
18628
  }, [
17568
18629
  createElementVNode("div", {
17569
18630
  class: "label",
17570
- title: item.label
17571
- }, toDisplayString(item.label), 9, _hoisted_1$1),
18631
+ title: unref($kdOuterTrans)(item)
18632
+ }, toDisplayString(unref($kdOuterTrans)(item)), 9, _hoisted_1$1),
17572
18633
  createElementVNode("div", {
17573
18634
  class: "value",
17574
18635
  title: item.value
@@ -17579,7 +18640,7 @@ const _sfc_main$1 = /* @__PURE__ */ Object.assign({
17579
18640
  };
17580
18641
  }
17581
18642
  });
17582
- const DataPanelList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-8860126c"]]);
18643
+ const DataPanelList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1e5790fd"]]);
17583
18644
  const faultParameters = [
17584
18645
  {
17585
18646
  paramName: "大钩高度m",
@@ -18355,7 +19416,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
18355
19416
  "onCustomMenuClicked",
18356
19417
  "trend-change",
18357
19418
  "need-double-config",
18358
- "updateSettings"
19419
+ "updateSettings",
19420
+ "config-change"
18359
19421
  ],
18360
19422
  setup(__props, { expose: __expose, emit: __emit }) {
18361
19423
  function holdCurveDatas(val) {
@@ -18595,12 +19657,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
18595
19657
  if (!Object.prototype.hasOwnProperty.call(item, "lineColor")) {
18596
19658
  item.lineColor = matchedParam.lineColor;
18597
19659
  }
18598
- if (!Object.prototype.hasOwnProperty.call(item, "max")) {
18599
- item.max = matchedParam.max;
18600
- }
18601
- if (!Object.prototype.hasOwnProperty.call(item, "min")) {
18602
- item.min = matchedParam.min;
18603
- }
18604
19660
  }
18605
19661
  }
18606
19662
  function processConfig(config2) {
@@ -18685,6 +19741,21 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
18685
19741
  function getTrendLineData() {
18686
19742
  return proxy.$refs.chartContainer ? proxy.$refs.chartContainer.getTrendLineData() : [];
18687
19743
  }
19744
+ function getCurrentConfig() {
19745
+ const chart = proxy.$refs.chartContainer;
19746
+ const config2 = chart && typeof chart.getCurrentConfig === "function" ? chart.getCurrentConfig() : cloneDeep(proxy.config);
19747
+ return {
19748
+ axisType: proxy.formCache && proxy.formCache.axisType || "depth",
19749
+ config: config2
19750
+ };
19751
+ }
19752
+ function forwardConfigChange(payload) {
19753
+ const axisType = proxy.formCache && proxy.formCache.axisType || "depth";
19754
+ emit("config-change", {
19755
+ ...payload || {},
19756
+ axisType
19757
+ });
19758
+ }
18688
19759
  function setTrendLineData(paramId, segments) {
18689
19760
  if (proxy.$refs.chartContainer) {
18690
19761
  proxy.$refs.chartContainer.setTrendLineData(paramId, segments);
@@ -18861,6 +19932,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
18861
19932
  refresh,
18862
19933
  clearChartData,
18863
19934
  getTrendLineData,
19935
+ getCurrentConfig,
19936
+ forwardConfigChange,
18864
19937
  setTrendLineData,
18865
19938
  setCurveMinMaxByParamId,
18866
19939
  breakTrendSegment,
@@ -18900,6 +19973,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
18900
19973
  refresh,
18901
19974
  clearChartData,
18902
19975
  getTrendLineData,
19976
+ getCurrentConfig,
19977
+ forwardConfigChange,
18903
19978
  setTrendLineData,
18904
19979
  setCurveMinMaxByParamId,
18905
19980
  breakTrendSegment,
@@ -19102,6 +20177,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
19102
20177
  onOnCustomMenuClicked: _cache[6] || (_cache[6] = ($event) => _ctx.$emit("onCustomMenuClicked", $event)),
19103
20178
  onTrendChange: _cache[7] || (_cache[7] = ($event) => _ctx.$emit("trend-change", $event)),
19104
20179
  onNeedDoubleConfig: _cache[8] || (_cache[8] = ($event) => _ctx.$emit("need-double-config", $event)),
20180
+ onConfigChange: forwardConfigChange,
19105
20181
  cachedCurveDatas: cachedCurveDatas.value,
19106
20182
  currentHeaderStyle: currentHeaderStyle.value
19107
20183
  }), createSlots({ _: 2 }, [
@@ -19157,22 +20233,39 @@ const _sfc_main = /* @__PURE__ */ Object.assign({ name: "frameLayout" }, {
19157
20233
  };
19158
20234
  }
19159
20235
  });
19160
- const FrameLayoutComponent = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b77e588a"]]);
20236
+ const FrameLayoutComponent = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-dc8e9d28"]]);
20237
+ function installComponents(app) {
20238
+ installKdI18n(app);
20239
+ app.component(KdLaneContainerComponent.name, KdLaneContainerComponent);
20240
+ app.component("FrameLayout", FrameLayoutComponent);
20241
+ app.component("frameLayout", FrameLayoutComponent);
20242
+ }
19161
20243
  KdLaneContainerComponent.install = function(app) {
20244
+ installKdI18n(app);
19162
20245
  app.component(KdLaneContainerComponent.name, KdLaneContainerComponent);
19163
20246
  };
19164
20247
  FrameLayoutComponent.install = function(app) {
19165
- app.component("FrameLayout", FrameLayoutComponent);
19166
- app.component("frameLayout", FrameLayoutComponent);
20248
+ installComponents(app);
19167
20249
  };
19168
20250
  const KdLaneContainer = KdLaneContainerComponent;
19169
20251
  const FrameLayout = FrameLayoutComponent;
19170
20252
  const frameLayout = FrameLayoutComponent;
19171
- const index = { KdLaneContainer, FrameLayout, frameLayout };
20253
+ const index = {
20254
+ KdLaneContainer,
20255
+ FrameLayout,
20256
+ frameLayout,
20257
+ setCurrentLocale,
20258
+ getCurrentLocale,
20259
+ installKdI18n
20260
+ };
19172
20261
  export {
19173
20262
  FrameLayout,
19174
20263
  KdLaneContainer,
19175
20264
  index as default,
19176
- frameLayout
20265
+ frameLayout,
20266
+ getCurrentLocale,
20267
+ installKdI18n,
20268
+ localeState,
20269
+ setCurrentLocale
19177
20270
  };
19178
20271
  //# sourceMappingURL=index.js.map