From 264474eced957760538303808661f198260bac91 Mon Sep 17 00:00:00 2001 From: sheng <905537351@qq.com> Date: Mon, 22 Jun 2026 17:29:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E7=94=B5=E6=B1=A0=E6=9B=B2?= =?UTF-8?q?=E7=BA=BF=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/功能测试-电池曲线.md | 31 ++ docs/迁移任务列表.md | 6 +- package.json | 1 + pnpm-lock.yaml | 23 ++ .../traceability/battery-curve.js | 35 +++ src/locales/en.json | 18 ++ src/locales/zh-chs.json | 18 ++ src/router/modules/data-platform.js | 6 + .../traceability/battery-curve/index.vue | 275 ++++++++++++++++++ 9 files changed, 410 insertions(+), 3 deletions(-) create mode 100644 docs/功能测试-电池曲线.md create mode 100644 src/api/data-platform/traceability/battery-curve.js create mode 100644 src/views/data-platform/traceability/battery-curve/index.vue diff --git a/docs/功能测试-电池曲线.md b/docs/功能测试-电池曲线.md new file mode 100644 index 00000000..5f68996c --- /dev/null +++ b/docs/功能测试-电池曲线.md @@ -0,0 +1,31 @@ +# 功能测试 - 电池曲线 + +> 模块:数据中台 / 基础追溯 / 电池曲线 (Battery Curve) +> 路由:`/data_middleground/produce/traceability/curve` + +## 测试前置条件 + +- 测试账号具备访问“电池曲线”的菜单权限。 +- 准备至少 1 个存在曲线记录的电池条码。 +- 后端接口 `planning_production/produce/traceability/batterytraceability`、`curveread`、`export` 可正常访问。 + +## 测试任务列表 + +| 序号 | 测试项 | 操作步骤 | 预期结果 | +|---:|---|---|---| +| 1 | 页面入口 | 从菜单进入“电池曲线”,或直接访问路由 | 页面正常打开,显示电池条码输入框、查询、重置按钮、左侧记录区和右侧图表区 | +| 2 | 有效条码查询 | 输入存在曲线记录的电池条码,点击查询 | 左侧展示批次、工序、上传时间记录,默认选中第一条记录 | +| 3 | 曲线渲染 | 查询成功后查看右侧图表 | 图表显示电流、电压、容量三组数据,支持 tooltip、图例和图片保存 | +| 4 | 记录切换 | 点击左侧不同曲线记录 | 右侧设备编码、电池通道和曲线数据随选中记录刷新 | +| 5 | 图表缩放 | 在图表上使用鼠标滚轮或触控板缩放 | 曲线支持局部缩放,不影响页面布局 | +| 6 | 整盘曲线 | 选中带有 URL 的记录,点击“查看整盘曲线” | 浏览器跳转或打开整盘曲线页面 | +| 7 | 导出所有数据 | 选中记录后点击“导出所有数据” | 调用导出接口并触发文件下载或新窗口打开 | +| 8 | 无数据查询 | 输入不存在曲线记录的条码并查询 | 左侧显示暂无曲线记录,右侧图表清空,页面不报错 | +| 9 | 重置功能 | 查询后点击重置 | 输入框、记录列表、选中记录和图表数据清空 | +| 10 | 国际化检查 | 切换中英文语言后重新进入页面 | 页面按钮、字段和图表标题随语言切换显示 | + +## 回归关注点 + +- 曲线读取必须使用选中记录的 `id`。 +- 后端返回空数组时图表应清空,不应抛出异常。 +- 导出链接需要兼容相对路径和完整 URL。 diff --git a/docs/迁移任务列表.md b/docs/迁移任务列表.md index 8da5c5c8..3e4af14e 100644 --- a/docs/迁移任务列表.md +++ b/docs/迁移任务列表.md @@ -3,8 +3,8 @@ > 根据 `后台Webman界面截图对照表.md` 生成。状态以当前 V2 项目中已落地的页面目录为准。 - 总功能数:79 -- 已迁移:29 -- 未迁移:50 +- 已迁移:30 +- 未迁移:49 | 状态 | 一级模块 | 二级模块 | 三级模块 | 功能说明 | V2 目标路径 | |:---:|---|---|---|---|---| @@ -81,7 +81,7 @@ | ⬜ | 质量管理 (Quality Management) | SPC计数型报表 (SPC Attribute Charts) | UChart (U Chart) | | 待确认 | | ✅ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 反向追溯 (Backward Traceability) | 反向追溯 | `src/views/data-platform/traceability/backward/` | | ✅ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 正向追溯 (Forward Traceability) | 正向追溯 | `src/views/data-platform/traceability/forward/` | -| ⬜ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 电池曲线 (Battery Curve) | | 待确认 | +| ✅ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 电池曲线 (Battery Curve) | 电池曲线 | `src/views/data-platform/traceability/battery-curve/` | | ⬜ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 托盘追溯 (Tray Traceability) | | 待确认 | | ⬜ | 数据中台 (Data Platform) | 基础追溯 (Traceability) | 电池追溯 (Battery Traceability) | | 待确认 | | ⬜ | 数据中台 (Data Platform) | 生产报表 (Production Reports) | 设备履历报表 (Equipment History Report) | | 待确认 | diff --git a/package.json b/package.json index 2488e171..ff3f2987 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "core-js": "^3.24.1", "countup.js": "^2.3.2", "dayjs": "^1.11.5", + "echarts": "5.1.0", "element-ui": "^2.15.9", "faker": "^4.1.0", "flex.css": "^1.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d47b754e..c018423a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: dayjs: specifier: ^1.11.5 version: 1.11.21 + echarts: + specifier: 5.1.0 + version: 5.1.0 element-ui: specifier: ^2.15.9 version: 2.15.14(vue@2.7.16) @@ -2980,6 +2983,9 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + echarts@5.1.0: + resolution: {integrity: sha512-/X2nnN5BXW2tuA/Hv9YY279rDfwcXaBAjK9Azi//llshbKyUXXxBknsug21GJRpwTmLZbE8rjjbhchdm01bZtw==} + editorconfig@1.0.7: resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==} engines: {node: '>=14'} @@ -6621,6 +6627,9 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.0.3: + resolution: {integrity: sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -7220,6 +7229,9 @@ packages: resolution: {integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==} engines: {node: '>=4'} + zrender@5.1.0: + resolution: {integrity: sha512-c+8VRx52ycbmqwHeHLlo/BAfIHBl/JZNLM6cfDQFgzIH05yb+f5J9F/fbRsP+zGc8dW9XHuhdt8/iqukgMZSeg==} + snapshots: '@achrinza/node-ipc@9.2.10': @@ -10767,6 +10779,11 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 + echarts@5.1.0: + dependencies: + tslib: 2.0.3 + zrender: 5.1.0 + editorconfig@1.0.7: dependencies: '@one-ini/wasm': 0.1.1 @@ -15188,6 +15205,8 @@ snapshots: tslib@1.14.1: {} + tslib@2.0.3: {} + tslib@2.8.1: {} tty-browserify@0.0.0: {} @@ -16002,3 +16021,7 @@ snapshots: is-ci: 1.2.1 normalize-path: 1.0.0 strip-indent: 2.0.0 + + zrender@5.1.0: + dependencies: + tslib: 2.0.3 diff --git a/src/api/data-platform/traceability/battery-curve.js b/src/api/data-platform/traceability/battery-curve.js new file mode 100644 index 00000000..59305e18 --- /dev/null +++ b/src/api/data-platform/traceability/battery-curve.js @@ -0,0 +1,35 @@ +import { request } from '@/api/_service' + +const BASE = 'planning_production/produce/traceability/' + +function apiParams (method, data = {}) { + return { + method, + platform: 'background', + ...data + } +} + +export function getBatteryCurveRecords (data) { + return request({ + url: BASE + 'batterytraceability', + method: 'get', + params: apiParams('planning_production_produce_traceability_batterytraceability', data) + }) +} + +export function getBatteryCurveData (data) { + return request({ + url: BASE + 'curveread', + method: 'get', + params: apiParams('planning_production_produce_traceability_batterycurveread', data) + }) +} + +export function exportBatteryCurveData (data) { + return request({ + url: BASE + 'export', + method: 'get', + params: apiParams('planning_production_produce_traceability_export', data) + }) +} diff --git a/src/locales/en.json b/src/locales/en.json index 6465721d..59ee952e 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1250,6 +1250,24 @@ "cancel": "Cancel", "please_select_filter_condition": "Select at least one filter condition", "create_download_task_success": "Download task created successfully" + }, + "battery_curve": { + "query": "Search", + "reset": "Reset", + "battery_code": "Battery Barcode", + "enter_battery_code": "Enter battery barcode", + "data_empty": "No curve records", + "batch_name": "Batch", + "process_name": "Process", + "upload_time": "Upload Time", + "device_code": "Device Code", + "battery_no": "Battery Channel", + "export_all_data": "Export All Data", + "view_full_tray_curve": "View Full Tray Curve", + "data_chart": "Data Chart", + "current": "Current", + "voltage": "Voltage", + "capacity": "Capacity" } } } diff --git a/src/locales/zh-chs.json b/src/locales/zh-chs.json index 9a088dc3..b517a17d 100644 --- a/src/locales/zh-chs.json +++ b/src/locales/zh-chs.json @@ -1250,6 +1250,24 @@ "cancel": "取消", "please_select_filter_condition": "请选择筛选条件", "create_download_task_success": "创建下载任务成功" + }, + "battery_curve": { + "query": "查询", + "reset": "重置", + "battery_code": "电池条码", + "enter_battery_code": "请输入电池条码", + "data_empty": "暂无曲线记录", + "batch_name": "批次", + "process_name": "工序", + "upload_time": "上传时间", + "device_code": "设备编码", + "battery_no": "电池通道", + "export_all_data": "导出所有数据", + "view_full_tray_curve": "查看整盘曲线", + "data_chart": "数据图表", + "current": "电流", + "voltage": "电压", + "capacity": "容量" } } } diff --git a/src/router/modules/data-platform.js b/src/router/modules/data-platform.js index 30ca5363..0769b241 100644 --- a/src/router/modules/data-platform.js +++ b/src/router/modules/data-platform.js @@ -25,6 +25,12 @@ export default { name: `${pre}basic_traceability-positive_direction_traceability`, meta: { ...meta, cache: true, title: '正向追溯' }, component: _import('data-platform/traceability/forward') + }, + { + path: 'produce/traceability/curve', + name: `${pre}traceability-curve`, + meta: { ...meta, cache: true, title: '电池曲线' }, + component: _import('data-platform/traceability/battery-curve') } ])('data_middleground-') } diff --git a/src/views/data-platform/traceability/battery-curve/index.vue b/src/views/data-platform/traceability/battery-curve/index.vue new file mode 100644 index 00000000..f3c04ff9 --- /dev/null +++ b/src/views/data-platform/traceability/battery-curve/index.vue @@ -0,0 +1,275 @@ + + + + +