From a4ec3e384fbadd16e276c2fe7efa9e43bf72e95d Mon Sep 17 00:00:00 2001 From: wangqi <3188864257@qq.com> Date: Wed, 18 Dec 2024 19:04:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=AE=BE=E5=A4=87=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 3 + src/api/module/eam/customer/index.ts | 8 +- src/api/module/eam/device/firmware.ts | 34 ++ src/api/module/eam/device/index.ts | 33 +- src/api/module/eam/device/maintenance.ts | 28 ++ src/api/module/eam/device/storage.ts | 24 ++ src/api/module/eam/device/task.ts | 25 ++ src/api/module/eam/device/template.ts | 27 ++ src/components/dashboard/Edfs-exception.vue | 2 +- src/components/dashboard/FormItemSelect.vue | 1 - src/pages/deviceInfo/components/BasicInfo.vue | 182 +++++++-- .../deviceInfo/components/DeliveryInfo.vue | 95 ++++- .../deviceInfo/components/MaintainInfo.vue | 173 ++++++-- src/pages/deviceInfo/components/TestInfo.vue | 94 +++-- src/pages/deviceInfo/index.vue | 63 ++- src/pages/deviceInfo/info.vue | 106 ++++- src/pages/deviceInfo/utils.ts | 48 +++ src/pages/deviceTest/testPlan/index.vue | 7 +- .../components/create-firmware-dlg.vue | 215 ++++++++++ src/pages/ota/firmware/index.vue | 183 +++++++++ src/pages/ota/firmware/utils.ts | 32 ++ .../components/create-task-dlg.vue | 308 +++++++++++++++ .../upgradeTask/components/details-drawer.vue | 244 ++++++++++++ src/pages/ota/upgradeTask/index.vue | 372 ++++++++++++++++++ src/pages/ota/upgradeTask/utils.ts | 44 +++ .../system/deviceField/components/Dispose.vue | 87 ++++ src/pages/system/deviceField/index.vue | 15 +- src/pages/system/login/index.vue | 2 +- src/pages/system/manufacturer/index.vue | 13 +- src/pages/system/user/index.vue | 4 +- src/router/index.ts | 139 ++++--- 31 files changed, 2362 insertions(+), 249 deletions(-) create mode 100644 src/api/module/eam/device/firmware.ts create mode 100644 src/api/module/eam/device/maintenance.ts create mode 100644 src/api/module/eam/device/storage.ts create mode 100644 src/api/module/eam/device/task.ts create mode 100644 src/pages/deviceInfo/utils.ts create mode 100644 src/pages/ota/firmware/components/create-firmware-dlg.vue create mode 100644 src/pages/ota/firmware/index.vue create mode 100644 src/pages/ota/firmware/utils.ts create mode 100644 src/pages/ota/upgradeTask/components/create-task-dlg.vue create mode 100644 src/pages/ota/upgradeTask/components/details-drawer.vue create mode 100644 src/pages/ota/upgradeTask/index.vue create mode 100644 src/pages/ota/upgradeTask/utils.ts create mode 100644 src/pages/system/deviceField/components/Dispose.vue diff --git a/components.d.ts b/components.d.ts index 171404d..ec28093 100644 --- a/components.d.ts +++ b/components.d.ts @@ -35,6 +35,7 @@ declare module 'vue' { ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDialog: typeof import('element-plus/es')['ElDialog'] ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] @@ -51,6 +52,7 @@ declare module 'vue' { ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] + ElProgress: typeof import('element-plus/es')['ElProgress'] ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] @@ -75,6 +77,7 @@ declare module 'vue' { FormItemSelect: typeof import('./src/components/dashboard/FormItemSelect.vue')['default'] Icon: typeof import('./src/components/dashboard/Icon/src/Icon.vue')['default'] IconSelect: typeof import('./src/components/dashboard/Icon/src/IconSelect.vue')['default'] + IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default'] ImageViewer: typeof import('./src/components/dashboard/ImageViewer/src/ImageViewer.vue')['default'] InputPassword: typeof import('./src/components/dashboard/InputPassword/src/InputPassword.vue')['default'] LegendItem: typeof import('./src/components/map_tool/legend/LegendItem.vue')['default'] diff --git a/src/api/module/eam/customer/index.ts b/src/api/module/eam/customer/index.ts index bda60b0..401da7b 100644 --- a/src/api/module/eam/customer/index.ts +++ b/src/api/module/eam/customer/index.ts @@ -8,7 +8,7 @@ export interface CustomerVO { email: string address: string description: string - status: number + enabled: number } export const getCustomerList = (params: PageParam) => eamServer<{ @@ -21,7 +21,7 @@ export const getCustomerList = (params: PageParam) => }) export const getSimpleCustomerList = () => - eamServer>({ + eamServer>>({ url: '/customer/list-all-simple', method: 'get', }) @@ -38,9 +38,9 @@ export const deleteCustomer = (id: Pick) => method: 'delete', }) -export const updateCustomerStatus = (params: Pick) => +export const updateCustomerStatus = (params: Pick) => eamServer({ - url: `/customer/update-status?id=${params.id}&status=${params.status}`, + url: `/customer/update-status?id=${params.id}&enabled=${params.enabled}`, method: 'put', }) diff --git a/src/api/module/eam/device/firmware.ts b/src/api/module/eam/device/firmware.ts new file mode 100644 index 0000000..4ff63ac --- /dev/null +++ b/src/api/module/eam/device/firmware.ts @@ -0,0 +1,34 @@ +import { eamServer } from '../../index' + +export function getFirmwareList(params: PageParam) { + return eamServer({ + url: '/firmware/page', + method: 'get', + params, + }) +} + +export function deleteFirmware(id: string) { + return eamServer({ + url: '/firmware/delete', + method: 'post', + data: { id }, + }) +} + +export function createFirmware(data: any) { + return eamServer({ + url: '/firmware/upload', + method: 'post', + data, + headers: { 'Content-Type': 'multipart/form-data' }, + }) +} + +export function getSimpleFirmwareList(params: { type: number }) { + return eamServer({ + url: '/firmware/simple-list', + method: 'get', + params, + }) +} diff --git a/src/api/module/eam/device/index.ts b/src/api/module/eam/device/index.ts index 5948c32..8a1f64c 100644 --- a/src/api/module/eam/device/index.ts +++ b/src/api/module/eam/device/index.ts @@ -1,49 +1,40 @@ import { eamServer } from '../../index' export interface IDevice { - id: string + id: number name: string categoryId: string serialNo: string sn: string - status: string + status: number description: string cost: string createTime: string updateTime: string creator: string updater: string - testSheetId: string + testSheetId: number testSheetStatus: string testSheetDetail: string } export interface IDeviceOV { - id?: string + id?: number name: string categoryId: string templateId: string - serialNo: string + serialNo?: string sn: string description: string cost: string } export const operantDevice = (type: OperantAction, data: IDeviceOV) => { - if (type === 'create') { - return eamServer({ - url: '/device/create', - method: 'post', - data, - }) - } - if (type === 'update') { - return eamServer({ - url: '/device/update', - method: 'put', - data, - }) - } + return eamServer({ + url: `/device/${type}`, + method: type === 'create' ? 'post' : 'put', + data, + }) } export const deleteDevice = (id: string) => @@ -53,7 +44,7 @@ export const deleteDevice = (id: string) => params: { id }, }) -export const getDeviceInfo = (id: string) => +export const getDeviceInfo = (id: number) => eamServer({ url: `/device/get`, method: 'get', @@ -66,6 +57,8 @@ export const getDevicePage = (params: PageParam) => total: number }>({ url: '/device/page', method: 'get', params }) + + // ============== 测试工单相关 ============== export const operantDeviceTestSheet = (type: OperantAction, params: any) => { diff --git a/src/api/module/eam/device/maintenance.ts b/src/api/module/eam/device/maintenance.ts new file mode 100644 index 0000000..6eae870 --- /dev/null +++ b/src/api/module/eam/device/maintenance.ts @@ -0,0 +1,28 @@ +import { eamServer } from '../../index' + +interface IMaintenanceOV { + id?: number + content: string + maintainer?: string + maintenanceTime: string + status: number +} +export const createdMaintenance = (data: IMaintenanceOV) => + eamServer({ + url: '/maintenance/create', + method: 'post', + data, + }) + +export const updateMaintenance = (data: IMaintenanceOV) => + eamServer({ + url: '/maintenance/update', + method: 'post', + data, + }) +export const getMaintenanceList = (params: any) => + eamServer({ + url: '/maintenance/get-by-device-id', + method: 'get', + params, + }) diff --git a/src/api/module/eam/device/storage.ts b/src/api/module/eam/device/storage.ts new file mode 100644 index 0000000..76e486b --- /dev/null +++ b/src/api/module/eam/device/storage.ts @@ -0,0 +1,24 @@ +import { eamServer } from '../../index' + +export interface IStorageOutParam { + id?: string + customerId: string + name: string + description: string + deviceId: number + price: string +} + +export const storageOutDevice = (params: IStorageOutParam) => + eamServer({ + url: `/device/out-storage`, + method: 'post', + data: params, + }) + +export const getStorageOutByDeviceId = (deviceId: number) => + eamServer({ + url: `/out-storage/get-by-device-id`, + method: 'get', + params: { deviceId }, + }) diff --git a/src/api/module/eam/device/task.ts b/src/api/module/eam/device/task.ts new file mode 100644 index 0000000..6776487 --- /dev/null +++ b/src/api/module/eam/device/task.ts @@ -0,0 +1,25 @@ +import { eamServer } from '../../index' + +export function getTaskList(params: PageParam) { + return eamServer({ + url: '/device/task/page', + method: 'get', + params, + }) +} + +export function getTaskDetails(id: string) { + return eamServer({ + url: '/device/task/details', + method: 'get', + params: { id }, + }) +} + +export function createTask(data: any) { + return eamServer({ + url: '/device/firmware/remote-update', + method: 'post', + data, + }) +} diff --git a/src/api/module/eam/device/template.ts b/src/api/module/eam/device/template.ts index 9eb2ad9..af10270 100644 --- a/src/api/module/eam/device/template.ts +++ b/src/api/module/eam/device/template.ts @@ -37,6 +37,33 @@ export const getDeviceTempPage = (params: PageParam) => total: number }>({ url: '/template/page', method: 'get', params }) +export const getDeviceTempSimpleList = () => + eamServer({ + url: '/template/list-all-simple', + method: 'get', + }) + +export const updateTempStatus = (id: string, enabled: number) => + eamServer({ + url: '/template/update-status', + method: 'put', + data: { id, enabled }, + }) + +export const updateSheetStatus = (id: string, status: number) => + eamServer({ + url: '/sheet-detail/update-result', + method: 'put', + data: { id, status }, + }) + +export const updateTestSheetStatus = (params: { id: number; deviceId: number }) => + eamServer({ + url: '/test-sheet/update-status', + method: 'put', + data: params, + }) + // ============== 用例相关 ============== export interface IDeviceCase { diff --git a/src/components/dashboard/Edfs-exception.vue b/src/components/dashboard/Edfs-exception.vue index 66fc071..fbc8b21 100644 --- a/src/components/dashboard/Edfs-exception.vue +++ b/src/components/dashboard/Edfs-exception.vue @@ -10,7 +10,7 @@ type="primary" @click=" () => { - router.push('/user/device') + router.push('/device/data') } " >返回首页 + {{ info?.status }}
设备序列号:
-
设备名称:
设备SN:
@@ -42,31 +39,36 @@
设备类别:
-
测试模板:
设备成本:
备注:
diff --git a/src/pages/ota/firmware/index.vue b/src/pages/ota/firmware/index.vue new file mode 100644 index 0000000..b0e6542 --- /dev/null +++ b/src/pages/ota/firmware/index.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/pages/ota/firmware/utils.ts b/src/pages/ota/firmware/utils.ts new file mode 100644 index 0000000..1a682f8 --- /dev/null +++ b/src/pages/ota/firmware/utils.ts @@ -0,0 +1,32 @@ +export const tableColumns = [ + { + label: '固件名称', + prop: 'name', + width: '10%', + }, + { + label: '固件版本', + prop: 'version', + width: '10%', + }, + { + label: '下载路径', + prop: 'downloadPath', + width: '30%', + }, + { + label: '创建时间', + prop: 'createTime', + width: '20%', + }, + { + label: '固件状态', + prop: 'status', + width: '10%', + }, + { + label: '描述', + prop: 'description', + width: '20%', + }, +] diff --git a/src/pages/ota/upgradeTask/components/create-task-dlg.vue b/src/pages/ota/upgradeTask/components/create-task-dlg.vue new file mode 100644 index 0000000..01a255c --- /dev/null +++ b/src/pages/ota/upgradeTask/components/create-task-dlg.vue @@ -0,0 +1,308 @@ + + + + + + + diff --git a/src/pages/ota/upgradeTask/components/details-drawer.vue b/src/pages/ota/upgradeTask/components/details-drawer.vue new file mode 100644 index 0000000..4385c91 --- /dev/null +++ b/src/pages/ota/upgradeTask/components/details-drawer.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/pages/ota/upgradeTask/index.vue b/src/pages/ota/upgradeTask/index.vue new file mode 100644 index 0000000..65fdc75 --- /dev/null +++ b/src/pages/ota/upgradeTask/index.vue @@ -0,0 +1,372 @@ + + + + diff --git a/src/pages/ota/upgradeTask/utils.ts b/src/pages/ota/upgradeTask/utils.ts new file mode 100644 index 0000000..b9d66bc --- /dev/null +++ b/src/pages/ota/upgradeTask/utils.ts @@ -0,0 +1,44 @@ +export const tableColumns = [ + { + label: '任务名称', + prop: 'taskName', + width: '10%', + }, + { + label: '固件名称', + prop: 'name', + width: '8%', + }, + { + label: '固件版本', + prop: 'version', + width: '6%', + }, + + { + label: '创建时间', + prop: 'createTime', + width: '18%', + }, + { + label: '任务执行时间', + prop: 'executeTime', + width: '18%', + }, + { + label: '升级详情', + prop: 'deviceUpgradeDetail', + width: '10%', + }, + { + label: '任务状态', + prop: 'status', + width: '8%', + }, +] + +export const taskStatusMap = { + 0: '未开始', + 1: '进行中', + 2: '已完成', +} diff --git a/src/pages/system/deviceField/components/Dispose.vue b/src/pages/system/deviceField/components/Dispose.vue new file mode 100644 index 0000000..faccb05 --- /dev/null +++ b/src/pages/system/deviceField/components/Dispose.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/pages/system/deviceField/index.vue b/src/pages/system/deviceField/index.vue index 5b5d4c6..903b13f 100644 --- a/src/pages/system/deviceField/index.vue +++ b/src/pages/system/deviceField/index.vue @@ -5,7 +5,7 @@ @@ -15,7 +15,16 @@ @on-delete="onDeleteCategory" /> - + + + +
{ } .cause-box { flex: 0.6; + min-width: 400px; } .info-box { flex: 1; diff --git a/src/pages/system/login/index.vue b/src/pages/system/login/index.vue index 6c4df8e..48e56b6 100644 --- a/src/pages/system/login/index.vue +++ b/src/pages/system/login/index.vue @@ -128,7 +128,7 @@ async function onLogin() { } isLoading.value = false - router.push('/user/device') + router.push('/device/data') } async function loginByAccount() { diff --git a/src/pages/system/manufacturer/index.vue b/src/pages/system/manufacturer/index.vue index 536761b..372f500 100644 --- a/src/pages/system/manufacturer/index.vue +++ b/src/pages/system/manufacturer/index.vue @@ -79,8 +79,8 @@ @@ -231,19 +231,20 @@ const handleDelete = async (id: number) => { const handleStatusChange = async (row: CustomerVO) => { try { // 修改状态的二次确认 - const text = row.status === CommonStatusEnum.ENABLE ? '启用' : '停用' + const text = row.enabled === CommonStatusEnum.ENABLE ? '启用' : '停用' await message.confirm('确认要"' + text + '""' + row.name + '"厂商吗?') // 发起修改状态 await updateCustomerStatus({ id: row.id, - status: row.status, + enabled: row.enabled, }) + await getList() } catch { // 取消后,进行恢复按钮 - row.status = - row.status === CommonStatusEnum.ENABLE + row.enabled = + row.enabled === CommonStatusEnum.ENABLE ? CommonStatusEnum.DISABLE : CommonStatusEnum.ENABLE } diff --git a/src/pages/system/user/index.vue b/src/pages/system/user/index.vue index c78f3ed..3045146 100644 --- a/src/pages/system/user/index.vue +++ b/src/pages/system/user/index.vue @@ -119,8 +119,8 @@ diff --git a/src/router/index.ts b/src/router/index.ts index 488219c..8689feb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -47,66 +47,83 @@ export const defaultRoute = [ }, ], }, - { - path: '/user', - component: () => import('@/pages/layout.vue'), - name: 'UserInfo', - meta: { - canTo: true, - hidden: false, - noTagsView: false, - icon: 'ep:user', - title: '系统管理', - }, - children: [ - { - path: 'deviceField', - component: () => import('@/pages/system/deviceField/index.vue'), - name: 'DeviceField', - meta: { - icon: 'ep:user', - title: '字段管理', - }, - }, - { - path: 'device', - component: () => import('@/pages/deviceInfo/index.vue'), - name: 'Device', - meta: { - icon: 'ep:user', - title: '设备管理', - }, - }, - { - path: 'deviceInfo', - component: () => import('@/pages/deviceInfo/info.vue'), - name: 'DeviceInfo', - meta: { - icon: 'ep:user', - hidden: true, - title: '设备xx', - }, - }, - { - path: 'manufacturer', - component: () => import('@/pages/system/manufacturer/index.vue'), - name: 'Manufacturer', - meta: { - icon: 'ep:user', - title: '厂商管理', - }, - }, - { - path: 'deviceTemplate', - component: () => import('@/pages/deviceTest/testPlan/index.vue'), - name: 'DeviceTemplate', - meta: { - icon: 'ep:user', - title: '模板管理', - }, - } - ], - }, + + // { + // path: '/device', + // component: () => import('@/pages/layout.vue'), + // name: 'UserInfo', + // meta: { + // canTo: true, + // hidden: true, + // noTagsView: false, + // icon: 'ep:user', + // title: '系统管理', + // }, + // children: [ + // { + // path: 'deviceOperation', + // component: () => import('@/pages/deviceInfo/info.vue'), + // name: 'deviceOperation', + // meta: { + // icon: 'ep:user', + // hidden: true, + // title: '设备xx', + // }, + // }, + // ], + // }, + // { + // path: '/user', + // component: () => import('@/pages/layout.vue'), + // name: 'UserInfo', + // meta: { + // canTo: true, + // hidden: false, + // noTagsView: false, + // icon: 'ep:user', + // title: '系统管理', + // }, + // children: [ + // { + // path: 'deviceField', + // component: () => import('@/pages/system/deviceField/index.vue'), + // name: 'DeviceField', + // meta: { + // icon: 'ep:user', + // title: '字段管理', + // }, + // }, + // { + // path: 'device', + // component: () => import('@/pages/deviceInfo/index.vue'), + // name: 'Device', + // meta: { + // icon: 'ep:user', + // title: '设备管理', + // }, + // }, + + // }, + // { + // path: 'manufacturer', + // component: () => import('@/pages/system/manufacturer/index.vue'), + // name: 'Manufacturer', + // meta: { + // icon: 'ep:user', + // title: '厂商管理', + // }, + // }, + // { + // path: 'deviceTemplate', + // component: () => import('@/pages/deviceTest/testPlan/index.vue'), + // name: 'DeviceTemplate', + // meta: { + // icon: 'ep:user', + // title: '模板管理', + // }, + // } + // ], + // }, ] const router = createRouter({ @@ -127,7 +144,7 @@ router.beforeEach(async (to, from, next) => { } if (to.path === '/login' || to.path === '/') { - next('/user/device') + next('/device/data') return } const userStore = useUserStore()