From 4821d490179a15ecad3668efb676dccfebd956e4 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 19 May 2026 11:27:35 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=88iot=EF=BC=89=EF=BC=9A=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20ota=20=E7=9A=84=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= =?UTF-8?q?=EF=BC=88v2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/iot/ota/firmware/data.ts | 21 +++++++++- .../views/iot/ota/firmware/detail/index.vue | 38 +++---------------- .../src/views/iot/ota/firmware/index.vue | 3 +- .../modules/form.vue} | 4 +- .../views/iot/ota/{modules => }/task/data.ts | 1 - .../{modules/task => task/modules}/detail.vue | 12 ++++-- .../{modules/task => task/modules}/form.vue | 2 +- .../{modules/task => task/modules}/list.vue | 6 ++- .../{ => task}/modules/upgrade-statistics.vue | 2 + 9 files changed, 45 insertions(+), 44 deletions(-) rename apps/web-antd/src/views/iot/ota/{modules/firmware-form.vue => firmware/modules/form.vue} (93%) rename apps/web-antd/src/views/iot/ota/{modules => }/task/data.ts (97%) rename apps/web-antd/src/views/iot/ota/{modules/task => task/modules}/detail.vue (91%) rename apps/web-antd/src/views/iot/ota/{modules/task => task/modules}/form.vue (98%) rename apps/web-antd/src/views/iot/ota/{modules/task => task/modules}/list.vue (91%) rename apps/web-antd/src/views/iot/ota/{ => task}/modules/upgrade-statistics.vue (93%) diff --git a/apps/web-antd/src/views/iot/ota/firmware/data.ts b/apps/web-antd/src/views/iot/ota/firmware/data.ts index 5424ff39d..befa885b3 100644 --- a/apps/web-antd/src/views/iot/ota/firmware/data.ts +++ b/apps/web-antd/src/views/iot/ota/firmware/data.ts @@ -1,9 +1,27 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { DescriptionItemSchema } from '#/components/description'; + +import { formatDateTime } from '@vben/utils'; import { getSimpleProductList } from '#/api/iot/product/product'; import { getRangePickerDefaultProps } from '#/utils'; +/** 固件详情的描述字段 */ +export function useDetailSchema(): DescriptionItemSchema[] { + return [ + { field: 'name', label: '固件名称' }, + { field: 'productName', label: '所属产品' }, + { field: 'version', label: '固件版本' }, + { + field: 'createTime', + label: '创建时间', + render: (val) => (val ? (formatDateTime(val) as string) : '-'), + }, + { field: 'description', label: '固件描述', span: 2 }, + ]; +} + /** 新增/修改固件的表单 */ export function useFormSchema(): VbenFormSchema[] { return [ @@ -129,7 +147,8 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { title: '固件描述', minWidth: 200, }, - // TODO @AI:你看看 vue3 + ep 是这么干的么? + // TODO DONE @AI:vben 用 row.productName(后端 VO 已返回);vue3 + ep 用 getProductName(productId) 本地查表;vben 更直接,且 IoTOtaFirmwareApi.Firmware.productName 已是 API 契约 + // TODO @AI:实际后端没读取哈。看看怎么对齐下 vue3 + ep { field: 'productName', title: '所属产品', diff --git a/apps/web-antd/src/views/iot/ota/firmware/detail/index.vue b/apps/web-antd/src/views/iot/ota/firmware/detail/index.vue index a675e6d87..0fc0b789a 100644 --- a/apps/web-antd/src/views/iot/ota/firmware/detail/index.vue +++ b/apps/web-antd/src/views/iot/ota/firmware/detail/index.vue @@ -4,17 +4,13 @@ import type { IoTOtaFirmwareApi } from '#/api/iot/ota/firmware'; import { onMounted, ref } from 'vue'; import { useRoute } from 'vue-router'; -import { formatDate } from '@vben/utils'; - -import { Card, Descriptions } from 'ant-design-vue'; - import { getOtaFirmware } from '#/api/iot/ota/firmware'; import { getOtaTaskRecordStatusStatistics } from '#/api/iot/ota/task/record'; -import OtaTaskList from '../../modules/task/list.vue'; -import UpgradeStatistics from '../../modules/upgrade-statistics.vue'; +import OtaTaskList from '../../task/modules/list.vue'; +import UpgradeStatistics from '../../task/modules/upgrade-statistics.vue'; +import FirmwareInfo from './modules/info.vue'; -/** IoT OTA 固件详情 */ const route = useRoute(); const firmwareId = ref(Number(route.params.id)); @@ -56,34 +52,10 @@ onMounted(() => {