diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/src/views/basic/device/listEmbedded.vue b/src/views/basic/device/listEmbedded.vue new file mode 100644 index 0000000..90822b4 --- /dev/null +++ b/src/views/basic/device/listEmbedded.vue @@ -0,0 +1,266 @@ + + + + diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/src/views/basic/device/listEmbedded.vue b/src/views/basic/device/listEmbedded.vue new file mode 100644 index 0000000..90822b4 --- /dev/null +++ b/src/views/basic/device/listEmbedded.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/basic/group/addDialog.vue b/src/views/basic/group/addDialog.vue deleted file mode 100644 index d1f3405..0000000 --- a/src/views/basic/group/addDialog.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/src/views/basic/device/listEmbedded.vue b/src/views/basic/device/listEmbedded.vue new file mode 100644 index 0000000..90822b4 --- /dev/null +++ b/src/views/basic/device/listEmbedded.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/basic/group/addDialog.vue b/src/views/basic/group/addDialog.vue deleted file mode 100644 index d1f3405..0000000 --- a/src/views/basic/group/addDialog.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - diff --git a/src/views/basic/group/addGroupDialog.vue b/src/views/basic/group/addGroupDialog.vue new file mode 100644 index 0000000..d1f3405 --- /dev/null +++ b/src/views/basic/group/addGroupDialog.vue @@ -0,0 +1,189 @@ + + + + diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/src/views/basic/device/listEmbedded.vue b/src/views/basic/device/listEmbedded.vue new file mode 100644 index 0000000..90822b4 --- /dev/null +++ b/src/views/basic/device/listEmbedded.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/basic/group/addDialog.vue b/src/views/basic/group/addDialog.vue deleted file mode 100644 index d1f3405..0000000 --- a/src/views/basic/group/addDialog.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - diff --git a/src/views/basic/group/addGroupDialog.vue b/src/views/basic/group/addGroupDialog.vue new file mode 100644 index 0000000..d1f3405 --- /dev/null +++ b/src/views/basic/group/addGroupDialog.vue @@ -0,0 +1,189 @@ + + + + diff --git a/src/views/basic/group/detail.vue b/src/views/basic/group/detail.vue index d88ad97..eec4dd8 100644 --- a/src/views/basic/group/detail.vue +++ b/src/views/basic/group/detail.vue @@ -3,6 +3,7 @@ import { ElLoading, ElMessage, ElMessageBox, dayjs } from 'element-plus' import type { IGroupInfo } from './group-info' import { detailGroup } from '@/api/basic/group' +import DeviceListEmbedded from '@/views/basic/device/listEmbedded.vue' // 从路由中传过来的参数 const type = ref('') @@ -12,155 +13,52 @@ const router = useRouter() const title = ref('') -const basicFormRef = ref() -const refFilterDialog = ref() +const radioItems = ref([ + { name: '设备管理', value: 'group-device' }, + { name: '订阅管理', value: 'group-subscribe' }, +]) +const current = ref('') +const currentLabel = ref('') -const sealInfo = ref({ +const basicFormRef = ref() + +const groupInfo = ref({ id: '', - sealNo: '', - sealName: '', - sealType: '', - sealTypeName: '', - status: '', - statusName: '', - applyTime: '', - abandonTime: '', - ratifyTime: '', + groupNo: '', + groupName: '', + deptid: '', + deptName: '', + descn: '', + createUserId: '', createTime: '', - approverId: '', - approverName: '', - minioFileName: '', - minioFileUrl: '', }) -const sealInfoRules = ref({ - sealNo: [{ required: true, message: '印章编号不能为空', trigger: 'blur' }], - sealName: [{ required: true, message: '印章名称不能为空', trigger: 'blur' }], - sealType: [{ required: true, message: '印章类型不能为空,请选择', trigger: ['blur', 'change'] }], - approverId: [{ required: true, message: '批准人不能为空', trigger: ['blur', 'change'] }], - applyTime: [{ required: true, message: '申请时间不能为空,请选择', trigger: 'blur' }], - ratifyTime: [{ required: true, message: '批准时间不能为空,请选择', trigger: 'blur' }], - status: [{ required: true, message: '在用状态不能为空,请选择', trigger: ['blur', 'change'] }], - minioFileName: [{ required: true, message: '图形不能为空,请选择一个文件上传', trigger: 'blur' }], -}) // 表单验证规则 - -const minioFileUrl = ref('') - // 逻辑 - const resetForm = () => { - sessionStorage.removeItem('sealInfo') // 返回列表时 将缓存中的数据删除 router.go(-1) } -// 添加 -const saveSealInfoForm = () => { - // 将创建时间改为提交的时间 - sealInfo.value.createTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss') - addSealInfo(sealInfo.value).then((res) => { - if (res.code === 200) { - // 提示保存成功 - ElMessage.success('保存成功') - type.value = 'detail' - title.value = '印章管理登记(详情)' - } - else { - // 提示失败信息 - ElMessage.error(`保存失败:${res.message}`) - } - }) -} -// 编辑 -const updateSealInfoById = () => { - updateSealInfo(sealInfo.value).then((res) => { - if (res.code === 200) { - // 提示保存成功 - ElMessage.success('保存成功') - type.value = 'detail' - title.value = '印章管理登记(详情)' - } - else { - // 提示失败信息 - ElMessage.error(`保存失败:${res.message}`) - } - }) -} - -// 保存 -const saveForm = async () => { - if (!basicFormRef) { return } - - await basicFormRef.value.validate((valid: boolean, fields: any) => { - if (valid === true) { - ElMessageBox.confirm( - '确认保存吗?', - '提示', - { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning', - }, - ).then(() => { - if (type.value === 'create') { - saveSealInfoForm() - } - else if (type.value === 'update') { - updateSealInfoById() - } - }) - } - }) -} - -// 上传请求 -const uploadQuarterlyEvaluateFile: any = (file: any) => { - const fd = new FormData() - fd.append('multipartFile', file.file) - const loading = ElLoading.service({ - lock: true, - background: 'rgba(255, 255, 255, 0.8)', - }) - UploadFile(fd).then((res) => { - if (res.code === 200) { - ElMessage.success('上传成功') - sealInfo.value.minioFileName = res.data[0] - loading.close() - - basicFormRef.value.validateField('minioFileName', () => {}) - } - }).catch(() => { - loading.close() - ElMessage.error('上传失败') - }) -} - -// 上传之前的验证 -const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => { - if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png' && rawFile.type !== 'image/jpg') { - ElMessage.error('只能上传png/jpeg/jpg格式的图片') - return false +// 详情页的各个tab切换操作 +const radioChangeHandler = (newVal: string | number | boolean) => { + const radioTarget = radioItems.value.filter(item => item.name === newVal) + if (radioTarget.length > 0) { + currentLabel.value = radioTarget[0].name + current.value = radioTarget[0].value } - else if (rawFile.size / 1024 / 1024 > 2) { - ElMessage.error('图片不能大于2MB') - return false + else { + currentLabel.value = radioItems.value[0].name + current.value = radioItems.value[0].value } - return true } -// 预览文件 -const previewSealImage = (url: string) => { - console.log(url) -} - -// 从用户账号中筛选进行人员登记 -const showFilterSysUser = () => { - refFilterDialog.value.showOrHideFilterDialog(true) -} - -const recordSelectedHandler = (row: any) => { - refFilterDialog.value.showOrHideFilterDialog(false) - sealInfo.value.approverName = row.name - sealInfo.value.approverId = row.id +// 查询详情 +const detailById = (id: string) => { + detailGroup({ id }).then((res) => { + if (res.code === 200) { + groupInfo.value = res.data + groupInfo.value.createTime = dayjs(groupInfo.value.createTime).format('YYYY-MM-DD') === 'Invalid Date' ? '' : dayjs(groupInfo.value.createTime).format('YYYY-MM-DD HH:mm:ss') + } + }) } const initDialog = (params: any) => { @@ -168,26 +66,16 @@ type.value = params.type id.value = params.id !== undefined ? params.id : '' + // 默认显示第一个tab内容 + current.value = radioItems.value[0].value + currentLabel.value = radioItems.value[0].name + switch (params.type) { - case 'create' : - title.value = '印章管理登记(新增)' - - // 创建时间设置默认值 - sealInfo.value.createTime = dayjs().format('YYYY-MM-DD HH:mm:ss') - - break - case 'update': - title.value = '印章管理登记(编辑)' - id.value = params.id - - sealInfo.value = JSON.parse(sessionStorage.getItem('sealInfo')!) - - break case 'detail': - title.value = '印章管理登记(详情)' + title.value = '分组详情' id.value = params.id - sealInfo.value = JSON.parse(sessionStorage.getItem('sealInfo')!) + detailById(id.value) break default: @@ -196,44 +84,6 @@ } } -// 监听 显示中文 立即监听 -watch(() => sealInfo.value.sealType, (newVal) => { - if (sealTypeDict.value.length === 0) { - sealTypeDict.value = JSON.parse(sessionStorage.getItem('bizSealType')!) - } - const targetList = sealTypeDict.value.filter(item => item.value === newVal) - if (targetList.length > 0) { - sealInfo.value.sealTypeName = targetList[0].name - } - else { - sealInfo.value.sealTypeName = '' - } -}, { immediate: true }) - -// 监听 显示中文 立即监听 -watch(() => sealInfo.value.status, (newVal) => { - if (sealStatusDict.value.length === 0) { - sealStatusDict.value = JSON.parse(sessionStorage.getItem('bizSealStatus')!) - } - const targetList = sealStatusDict.value.filter(item => item.value === newVal) - if (targetList.length > 0) { - sealInfo.value.statusName = targetList[0].name - } - else { - sealInfo.value.statusName = '' - } -}, { immediate: true }) - -watch(() => sealInfo.value.minioFileName, (newVal) => { - if (newVal !== '') { - getPhotoUrl(newVal).then((res) => { - if (res.code === 200) { - minioFileUrl.value = res.data - } - }) - } -}) - onMounted(async () => { initDialog(route.query) }) @@ -243,85 +93,38 @@ - + - - - - - - + + {{ groupInfo.groupNo }} - - - - - - + + {{ groupInfo.groupName }} - - - - - - - - - - - - + + {{ groupInfo.deptName }} - - - - - - - - - + + {{ groupInfo.createTime }} @@ -329,62 +132,28 @@ - - - - - - - - - + + {{ groupInfo.descn }} - - + + + + + + + + + + - - - - -./group-info diff --git a/.env.production b/.env.production index ed8a601..b5508a5 100644 --- a/.env.production +++ b/.env.production @@ -1,9 +1,9 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 标题 +VITE_APP_TITLE = 物联网设备管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 -VITE_APP_API_BASEURL = http://XXXXXXX:XXXXXXX +VITE_APP_API_BASEURL = http://111.198.10.15:12206 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 VITE_APP_DEBUG_TOOL = diff --git a/src/api/basic/group.ts b/src/api/basic/group.ts index a20dea4..8b6a2ff 100644 --- a/src/api/basic/group.ts +++ b/src/api/basic/group.ts @@ -9,6 +9,14 @@ data, }) } +// 查询分组列表 不分页 +export function getGroupList(data: object) { + return request({ + url: `${prefix}/list`, + method: 'post', + data, + }) +} // 查询分组详情 export function detailGroup(data: object) { return request({ diff --git a/src/assets/icons/icon-group.svg b/src/assets/icons/icon-group.svg new file mode 100644 index 0000000..9d3193d --- /dev/null +++ b/src/assets/icons/icon-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon-ota.svg b/src/assets/icons/icon-ota.svg new file mode 100644 index 0000000..bce1df0 --- /dev/null +++ b/src/assets/icons/icon-ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/router/modules/basic.ts b/src/router/modules/basic.ts index 66fb204..2308656 100644 --- a/src/router/modules/basic.ts +++ b/src/router/modules/basic.ts @@ -4,9 +4,45 @@ const routes: Route.recordRaw[] = [ { - path: '/basic', + path: '/basic/group', component: Layout, - redirect: '/group/list', + redirect: '/basic/group/list', + name: 'Group', + meta: { + title: '分组管理', + icon: 'ep:key', + auth: '/basic/group', + }, + children: [ + { + path: 'list', + name: 'GroupList', + component: () => import('@/views/basic/group/list.vue'), + meta: { + title: '分组管理', + auth: '/basic/group', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + { + path: 'detail/:id?', + name: 'GroupInfoDetail', + component: () => import('@/views/basic/group/detail.vue'), + meta: { + title: '分组详情', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/group', + }, + }, + ], + }, + { + path: '/basic/device', + component: Layout, + redirect: '/basic/device/list', name: 'Device', meta: { title: '设备管理', @@ -15,101 +51,35 @@ }, children: [ { - path: 'group/list', - name: 'GroupList', - component: () => import('@/views/basic/group/list.vue'), - meta: { - title: '分组管理', - auth: '/basic/group/list', - icon: 'ep:key', - }, - }, - { - path: 'group/list/detail', - name: 'GroupInfoDetail', - component: () => import('@/views/basic/group/detail.vue'), - meta: { - title: '分组详情', - sidebar: false, - breadcrumb: true, - activeMenu: '/basic/group/list', - }, - }, - { - path: 'device/list', + path: 'list', name: 'DeviceList', component: () => import('@/views/basic/device/list.vue'), meta: { title: '设备管理', - auth: '/basic/device/list', - icon: 'ep:key', + auth: '/basic/device', + sidebar: false, + breadcrumb: true, + activeMenu: '/basic/device', }, }, { - path: 'device/list/detail', + path: 'detail/:id?', name: 'DeviceInfoDetail', component: () => import('@/views/basic/device/detail.vue'), meta: { title: '设备详情', sidebar: false, breadcrumb: true, - activeMenu: '/basic/device/list', + activeMenu: '/basic/device', }, }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoBookDetail', - // component: () => import('@/views/equipement/info/book/detail.vue'), - // meta: { - // title: '设备台账管理', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/bookList', - // }, - // }, - - // { - // path: ':type/:id?', - // name: 'EquipmentInfoTableDetail', - // component: () => import('@/views/equipement/info/table/detail.vue'), - // meta: { - // title: '参照标准、工作标准和关键测量设备表', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/tableList', - // }, - // }, - { - path: 'remindList', - name: 'EquipmentInfoRemindList', - component: () => import('@/views/equipement/info/remind/list.vue'), - meta: { - title: '到期提醒列表', - auth: '/equipment/info/remind', - icon: 'ep:key', - }, - }, - // { - // path: ':type/:id?', - // name: 'EquipmentInfoRemindDetail', - // component: () => import('@/views/equipement/info/remind/detail.vue'), - // meta: { - // title: '到期提醒', - // icon: 'ep:key', - // sidebar: false, - // breadcrumb: true, - // activeMenu: '/equipmentInfo/remindList', - // }, - // }, ], }, { - path: '/product', + path: '/basic/product', component: Layout, - redirect: '/basic/product', - name: 'StateMaintenance', + redirect: '/basic/product/list', + name: 'Product', meta: { title: '产品管理', icon: 'ep:key', @@ -117,866 +87,53 @@ }, children: [ { - path: '/product/list', + path: 'list', name: 'ProductList', - component: () => import('@/views/equipement/stateMaintenance/unseal/list.vue'), + component: () => import('@/views/basic/product/list.vue'), meta: { title: '产品管理', - auth: '/product/list', - icon: 'ep:key', - }, - }, - { - path: 'unseal/:type/:id?', - name: 'UnsealDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/edit.vue'), - meta: { - title: '设备启封申请', - icon: 'ep:key', + auth: '/basic/product', sidebar: false, breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', + activeMenu: '/basic/product', }, }, + ], + }, + /* + { + path: '/product', + component: Layout, + redirect: 'product/list', + name: 'Product', + meta: { + title: '产品管理', + icon: 'ep:key', + auth: '/basic/product', + }, + children: [ { - path: 'unsealDoc/:type/:id?', - name: 'UnsealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/unseal/detail.vue'), + path: 'product/list', + name: 'ProductList', + component: () => import('@/views/basic/group/list.vue'), meta: { - title: '设备启封申请', + title: '产品管理', + auth: '/basic/product/list', icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/unsealList', }, }, { - path: '/product/ota', - name: 'ProductOTA', - component: () => import('@/views/equipement/stateMaintenance/seal/list.vue'), + path: 'product/ota', + name: 'ProductOTAList', + component: () => import('@/views/basic/group/list.vue'), meta: { title: '远程升级', - auth: '/product/ota', + auth: '/basic/product/ota', icon: 'ep:key', }, }, - { - path: 'seal/:type/:id?', - name: 'SealDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/edit.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'sealDoc/:type/:id?', - name: 'SealDocDetail', - component: () => import('@/views/equipement/stateMaintenance/seal/detail.vue'), - meta: { - title: '设备封存申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/sealList', - }, - }, - { - path: 'banList', - name: 'BanList', - component: () => import('@/views/equipement/stateMaintenance/ban/list.vue'), - meta: { - title: '设备禁用申请', - auth: '/equipment/stateMaintenance/ban', - icon: 'ep:key', - }, - }, - { - path: 'ban/:type/:id?', - name: 'BanDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/edit.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'banDoc/:type/:id?', - name: 'BanDocDetail', - component: () => import('@/views/equipement/stateMaintenance/ban/detail.vue'), - meta: { - title: '设备禁用申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/banList', - }, - }, - { - path: 'scrapList', - name: 'ScrapList', - component: () => import('@/views/equipement/stateMaintenance/scrap/list.vue'), - meta: { - title: '设备报废申请', - auth: '/equipment/stateMaintenance/scrap', - icon: 'ep:key', - }, - }, - { - path: 'scrap/:type/:id?', - name: 'ScrapDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/edit.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, - { - path: 'scrapDoc/:type/:id?', - name: 'ScrapDocDetail', - component: () => import('@/views/equipement/stateMaintenance/scrap/detail.vue'), - meta: { - title: '设备报废申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/stateMaintenance/scrapList', - }, - }, ], - }, - { - path: '/standard', - component: Layout, - redirect: '/standard/bookInfoList', - name: 'Standard', - meta: { - title: '标准装置管理', - icon: 'ep:key', - auth: '/standard', - }, - children: [ - { - path: 'bookInfoList', - name: 'BookInfoList', - component: () => import('@/views/equipement/standard/book/list.vue'), - meta: { - title: '标准装置台账信息列表', - auth: '/standard/bookInfo', - icon: 'ep:key', - }, - }, - { - path: ':type/:id?', - name: 'StandardBookInfoList', - component: () => import('@/views/equipement/standard/book/detail.vue'), - meta: { - title: '标准装置台账信息', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: '/standardEquipmentConfig/:type/:id?', - name: 'StandardBookInfoConfig', - component: () => import('@/views/equipement/standard/book/components/config.vue'), - meta: { - title: '配置核查项', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/bookInfoList', - }, - }, - { - path: 'standardRemindList', - name: 'StandardRemindList', - component: () => import('@/views/equipement/standard/remind/list.vue'), - meta: { - title: '到期提醒', - auth: '/standard/remind', - icon: 'ep:key', - }, - }, - { - path: 'checkDataList', - name: 'CheckDataList', - component: () => import('@/views/equipement/standard/checkData/list.vue'), - meta: { - title: '核查数据管理', - auth: '/standard/checkData', - icon: 'ep:key', - }, - }, - { - path: 'checkData/:type/:id?', - name: 'CheckDataDetail', - component: () => import('@/views/equipement/standard/checkData/detail.vue'), - meta: { - title: '核查数据管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkDataList', - }, - }, - { - path: 'checkRecordList', - name: 'CheckRecordList', - component: () => import('@/views/equipement/standard/checkRecord/list.vue'), - meta: { - title: '核查记录管理', - auth: '/standard/checkRecord', - icon: 'ep:key', - }, - }, - { - path: '/equipmentCheckRecord/:type/:id?', - name: 'CheckRecordDetail', - component: () => import('@/views/equipement/standard/checkRecord/detail.vue'), - meta: { - title: '核查记录管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkRecordList', - }, - }, - { - path: 'checkItemClassificationList', - name: 'CheckItemClassificationList', - component: () => import('@/views/equipement/standard/checkItemClassification/list.vue'), - meta: { - title: '核查项分类管理', - auth: '/standard/checkItemClassification', - icon: 'ep:key', - }, - }, - { - path: 'checkItemClassification/:type/:id?', - name: 'CheckItemClassificationDetail', - component: () => import('@/views/equipement/standard/checkItemClassification/detail.vue'), - meta: { - title: '核查项分类管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/checkItemClassificationList', - }, - }, - { - path: 'standardBuildList', - name: 'StandardBuildList', - component: () => import('@/views/equipement/standard/build/list.vue'), - meta: { - title: '建标管理', - auth: '/standard/build', - icon: 'ep:key', - }, - }, - { - path: '/build/:type/:id?', - name: 'StandardBuildEdit', - component: () => import('@/views/equipement/standard/build/edit.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - { - path: '/buildDoc/:type/:id?', - name: 'StandardBuildDetail', - component: () => import('@/views/equipement/standard/build/detail.vue'), - meta: { - title: '建标管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/standard/standardBuildList', - }, - }, - ], - }, - { - path: '/standardStateMaintenance', - component: Layout, - redirect: '/standardStateMaintenance/changeList', - name: 'StandardStateMaintenance', - meta: { - title: '标准装置状态维护', - icon: 'ep:key', - auth: '/standard/stateMaintenance', - }, - children: [ - { - path: 'changeList', - name: 'ChangeList', - component: () => import('@/views/equipement/StandardStateMaintenance/change/list.vue'), - meta: { - title: '更换申请', - auth: '/standard/change', - icon: 'ep:key', - }, - }, - { - path: 'change/:type/:id?', - name: 'ChangeDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/change/detail.vue'), - meta: { - title: '更换申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/changeList', - }, - }, - { - path: 'reviewList', - name: 'ReviewList', - component: () => import('@/views/equipement/StandardStateMaintenance/review/list.vue'), - meta: { - title: '复查申请', - auth: '/standard/review', - icon: 'ep:key', - }, - }, - { - path: 'review/:type/:id?', - name: 'ReviewDetail', - component: () => import('@/views/equipement/standardStateMaintenance/review/detail.vue'), - meta: { - title: '复查申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/reviewList', - }, - }, - { - path: 'revocationList', - name: 'RevocationList', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/list.vue'), - meta: { - title: '撤销申请', - auth: '/standard/revocation', - icon: 'ep:key', - }, - }, - { - path: 'revocation/:type/:id?', - name: 'RevocationDetail', - component: () => import('@/views/equipement/StandardStateMaintenance/revocation/detail.vue'), - meta: { - title: '撤销申请', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/StandardStateMaintenance/revocationList', - }, - }, - ], - }, - { - path: '/source', - component: Layout, - redirect: '/source/planList', - name: 'Source', - meta: { - title: '溯源管理', - icon: 'ep:key', - auth: '/equipment/source', - }, - children: [ - { - path: 'planList', - name: 'EquipmentSourcePlanList', - component: () => import('@/views/equipement/source/plan/list.vue'), - meta: { - title: '溯源计划管理', - auth: '/equipment/source/plan', - icon: 'ep:key', - }, - }, - { - path: 'plan/:type/:id?', - name: 'EquipmentSourcePlanDetail', - component: () => import('@/views/equipement/source/plan/detail.vue'), - meta: { - title: '溯源计划管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/planList', - }, - }, - { - path: 'resultConfirmList', - name: 'EquipmentSourceResultConfirmList', - component: () => import('@/views/equipement/source/resultConfirm/list.vue'), - meta: { - title: '溯源结果确认', - auth: '/equipment/source/resultConfirm', - icon: 'ep:key', - }, - }, - { - path: 'resultConfirm/:type/:id?', - name: 'EquipmentSourceResultConfirmEdit', - component: () => import('@/views/equipement/source/resultConfirm/edit.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultConfirmDoc/:type/:id?', - name: 'EquipmentSourceResultConfirmDetail', - component: () => import('@/views/equipement/source/resultConfirm/detail.vue'), - meta: { - title: '溯源结果确认', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultConfirmList', - }, - }, - { - path: 'resultCompleteList', - name: 'EquipmentSourceResultCompleteList', - component: () => import('@/views/equipement/source/resultComplete/list.vue'), - meta: { - title: '溯源结果完成情况', - auth: '/equipment/source/resultComplete', - icon: 'ep:key', - }, - }, - { - path: 'resultComplete/:type/:id?', - name: 'EquipmentSourceResultCompleteEdit', - component: () => import('@/views/equipement/source/resultComplete/edit.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'resultCompleteDoc/:type/:id?', - name: 'EquipmentSourceResultCompleteDetail', - component: () => import('@/views/equipement/source/resultComplete/detail.vue'), - meta: { - title: '溯源结果完成情况', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/resultCompleteList', - }, - }, - { - path: 'certList', - name: 'EquipmentSourceCertList', - component: () => import('@/views/equipement/source/cert/list.vue'), - meta: { - title: '溯源证书管理', - auth: '/equipment/source/cert', - icon: 'ep:key', - }, - }, - { - path: 'cert/:type/:id?', - name: 'EquipmentSourceCertDetail', - component: () => import('@/views/equipement/source/cert/detail.vue'), - meta: { - title: '溯源证书管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/certList', - }, - }, - { - path: 'changeList', - name: 'EquipmentSourceChangeList', - component: () => import('@/views/equipement/source/change/list.vue'), - meta: { - title: '溯源链变更管理', - auth: '/equipment/source/change', - icon: 'ep:key', - }, - }, - { - path: 'sourceChange/:type/:id?', - name: 'EquipmentSourceChangeDetail', - component: () => import('@/views/equipement/source/change/edit.vue'), - meta: { - title: '溯源链变更管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/source/changeList', - }, - }, - ], - }, - { - path: '/resume', - component: Layout, - redirect: '/resume/planList', - name: 'Resume', - meta: { - title: '开箱验收管理', - icon: 'ep:key', - auth: '/equipment/resume', - }, - children: [ - { - path: 'unpackList', - name: 'EquipmentResumeUnpackList', - component: () => import('@/views/equipement/resume/unpack/list.vue'), - meta: { - title: '开箱验收管理', - auth: '/equipment/resume/unpack', - icon: 'ep:key', - }, - }, - { - path: 'unpack/:type/:id?', - name: 'EquipmentResumeUnpackEdit', - component: () => import('@/views/equipement/resume/unpack/edit.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: '/unpackDoc/:type/:id?', - name: 'EquipmentResumeUnpackDetail', - component: () => import('@/views/equipement/resume/unpack/detail.vue'), - meta: { - title: '开箱验收管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/unpackList', - }, - }, - { - path: 'lendList', - name: 'EquipmentResumeLendList', - component: () => import('@/views/equipement/resume/lend/list.vue'), - meta: { - title: '设备借出管理', - auth: '/equipment/resume/lend', - icon: 'ep:key', - }, - }, - { - path: 'lend/:type/:id?', - name: 'EquipmentResumeLendEdit', - component: () => import('@/views/equipement/resume/lend/edit.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'lendDoc/:type/:id?', - name: 'EquipmentResumeLendDetail', - component: () => import('@/views/equipement/resume/lend/detail.vue'), - meta: { - title: '设备借出管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/lendList', - }, - }, - { - path: 'borrowList', - name: 'EquipmentResumeBorrowList', - component: () => import('@/views/equipement/resume/borrow/list.vue'), - meta: { - title: '设备借用管理', - auth: '/equipment/resume/borrow', - icon: 'ep:key', - }, - }, - { - path: 'borrow/:type/:id?', - name: 'EquipmentResumeBorrowEdit', - component: () => import('@/views/equipement/resume/borrow/edit.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'borrowDoc/:type/:id?', - name: 'EquipmentResumeBorrowDetail', - component: () => import('@/views/equipement/resume/borrow/detail.vue'), - meta: { - title: '设备借用管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/borrowList', - }, - }, - { - path: 'encasementList', - name: 'EquipmentResumeEncasementList', - component: () => import('@/views/equipement/resume/encasement/list.vue'), - meta: { - title: '设备运输装箱管理', - auth: '/equipment/resume/encasement', - icon: 'ep:key', - }, - }, - { - path: 'encasement/:type/:id?', - name: 'EquipmentResumeEncasementDetail', - component: () => import('@/views/equipement/resume/encasement/edit.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'encasementDoc/:type/:id?', - name: 'EquipmentResumeEncasementDetailDoc', - component: () => import('@/views/equipement/resume/encasement/detail.vue'), - meta: { - title: '设备运输装箱管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/encasementList', - }, - }, - { - path: 'courseList', - name: 'EquipmentResumeCourseList', - component: () => import('@/views/equipement/resume/course/list.vue'), - meta: { - title: '设备运输过程管理', - auth: '/equipment/resume/course', - icon: 'ep:key', - }, - }, - { - path: 'course/:type/:id?', - name: 'EquipmentResumeCourseDetail', - component: () => import('@/views/equipement/resume/course/edit.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'courseDoc/:type/:id?', - name: 'EquipmentResumeCourseDetailDoc', - component: () => import('@/views/equipement/resume/course/detail.vue'), - meta: { - title: '设备运输过程管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/courseList', - }, - }, - { - path: 'errorList', - name: 'EquipmentResumeErrorList', - component: () => import('@/views/equipement/resume/error/list.vue'), - meta: { - title: '异常情况处置管理', - auth: '/equipment/resume/error', - icon: 'ep:key', - }, - }, - { - path: 'error/:type/:id?', - name: 'EquipmentResumeErrorEdit', - component: () => import('@/views/equipement/resume/error/edit.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'errorDoc/:type/:id?', - name: 'EquipmentResumeErrorDetail', - component: () => import('@/views/equipement/resume/error/detail.vue'), - meta: { - title: '异常情况处置管理', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/errorList', - }, - }, - { - path: 'weekList', - name: 'EquipmentResumeWeekList', - component: () => import('@/views/equipement/resume/week/list.vue'), - meta: { - title: '周维护', - auth: '/equipment/resume/week', - icon: 'ep:key', - }, - }, - { - path: 'week/:type/:id?', - name: 'EquipmentResumeWeekDetail', - component: () => import('@/views/equipement/resume/week/detail.vue'), - meta: { - title: '周维护', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/weekList', - }, - }, - { - path: 'monthList', - name: 'EquipmentResumeMonthList', - component: () => import('@/views/equipement/resume/month/list.vue'), - meta: { - title: '月保养', - auth: '/equipment/resume/month', - icon: 'ep:key', - }, - }, - { - path: 'month/:type/:id?', - name: 'EquipmentResumeMonthDetail', - component: () => import('@/views/equipement/resume/month/detail.vue'), - meta: { - title: '月保养', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/resume/monthList', - }, - }, - ], - }, - { - path: '/monitor', - component: Layout, - redirect: '/monitor/deviceList', - name: 'Monitor', - meta: { - title: '监测测试管理', - icon: 'ep:key', - auth: '/equipment/monitor', - }, - children: [ - { - path: 'deviceList', - name: 'EquipmentResumeDeviceList', - component: () => import('@/views/equipement/monitor/device/list.vue'), - meta: { - title: '监测设备', - auth: '/equipment/monitor/device', - icon: 'ep:key', - }, - }, - { - path: 'device/:type/:id?', - name: 'EquipmentResumeDeviceDetail', - component: () => import('@/views/equipement/monitor/device/detail.vue'), - meta: { - title: '监测设备', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/deviceList', - }, - }, - { - path: 'radioList', - name: 'EquipmentResumeRadioList', - component: () => import('@/views/equipement/monitor/radio/list.vue'), - meta: { - title: '无线电库', - auth: '/equipment/monitor/radio', - icon: 'ep:key', - }, - }, - { - path: 'radio/:type/:id?', - name: 'EquipmentResumeRadioDetail', - component: () => import('@/views/equipement/monitor/radio/detail.vue'), - meta: { - title: '无线电库', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/radioList', - }, - }, - { - path: 'taskList', - name: 'EquipmentResumeTaskList', - component: () => import('@/views/equipement/monitor/task/list.vue'), - meta: { - title: '任务监测', - auth: '/equipment/monitor/task', - icon: 'ep:key', - }, - }, - { - path: 'task/:type/:id?', - name: 'EquipmentResumeTaskDetail', - component: () => import('@/views/equipement/monitor/task/detail.vue'), - meta: { - title: '任务监测', - icon: 'ep:key', - sidebar: false, - breadcrumb: true, - activeMenu: '/monitor/taskList', - }, - }, - ], - }, + }, */ ] export default routes diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue new file mode 100644 index 0000000..018f123 --- /dev/null +++ b/src/views/basic/device/addDeviceDialog.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/basic/device/detail.vue b/src/views/basic/device/detail.vue index e43ca3c..c24bb42 100644 --- a/src/views/basic/device/detail.vue +++ b/src/views/basic/device/detail.vue @@ -25,6 +25,7 @@ const deviceInfo = ref({ id: '', + groupId: '', devcode: '', deviceName: '', deviceType: '', @@ -41,6 +42,7 @@ encipherType: '', encipherTypeName: '', createTime: '', + createUserId: '', createUserName: '', dataValue: '', }) diff --git a/src/views/basic/device/device-info.ts b/src/views/basic/device/device-info.ts index 7a1c228..9db63f4 100644 --- a/src/views/basic/device/device-info.ts +++ b/src/views/basic/device/device-info.ts @@ -1,13 +1,13 @@ // 列表查询参数接口 export interface IListQuery { groupId: string // 分组 - productId: string + productId?: string devcode: string imei: string deviceType: string - status: string - beginCell: string // 电量 - endCell: string // + status?: string + beginCell?: string // 电量 + endCell?: string // offset?: number limit?: number sort?: string @@ -16,22 +16,24 @@ export interface IDeviceInfo { id: string + groupId: string devcode: string - deviceName: string + deviceName?: string deviceType: string - deviceTypeName: string - status: string - statusName: string - cell: string + deviceTypeName?: string + status?: string + statusName?: string + cell?: string imei: string iccid: string model: string - modelName: string + modelName?: string productId: string - productName: string + productName?: string encipherType: string - encipherTypeName: string + encipherTypeName?: string createTime: string - createUserName: string - dataValue: string + createUserId: string + createUserName?: string + dataValue?: string } diff --git a/src/views/basic/device/list.vue b/src/views/basic/device/list.vue index ba00120..140ecaf 100644 --- a/src/views/basic/device/list.vue +++ b/src/views/basic/device/list.vue @@ -7,7 +7,7 @@ import type { TableColumn } from '@/components/NormalTable/table_interface' import { getDictByCode } from '@/api/system/dict' import { exportFile } from '@/utils/exportUtils' -import { getGroupListPage } from '@/api/basic/group' +import { getGroupList } from '@/api/basic/group' import { delDevice, exportDevice, getDeviceListPage } from '@/api/basic/device' const router = useRouter() @@ -91,7 +91,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) } @@ -198,7 +198,7 @@ }) } const getAllGroupList = async () => { - await getGroupListPage({ offset: 1, limit: 20 }).then((res: any) => { + await getGroupList({}).then((res: any) => { if (res.code === 200) { groupList.value = res.data.rows } diff --git a/src/views/basic/device/listEmbedded.vue b/src/views/basic/device/listEmbedded.vue new file mode 100644 index 0000000..90822b4 --- /dev/null +++ b/src/views/basic/device/listEmbedded.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/basic/group/addDialog.vue b/src/views/basic/group/addDialog.vue deleted file mode 100644 index d1f3405..0000000 --- a/src/views/basic/group/addDialog.vue +++ /dev/null @@ -1,189 +0,0 @@ - - - - diff --git a/src/views/basic/group/addGroupDialog.vue b/src/views/basic/group/addGroupDialog.vue new file mode 100644 index 0000000..d1f3405 --- /dev/null +++ b/src/views/basic/group/addGroupDialog.vue @@ -0,0 +1,189 @@ + + + + diff --git a/src/views/basic/group/detail.vue b/src/views/basic/group/detail.vue index d88ad97..eec4dd8 100644 --- a/src/views/basic/group/detail.vue +++ b/src/views/basic/group/detail.vue @@ -3,6 +3,7 @@ import { ElLoading, ElMessage, ElMessageBox, dayjs } from 'element-plus' import type { IGroupInfo } from './group-info' import { detailGroup } from '@/api/basic/group' +import DeviceListEmbedded from '@/views/basic/device/listEmbedded.vue' // 从路由中传过来的参数 const type = ref('') @@ -12,155 +13,52 @@ const router = useRouter() const title = ref('') -const basicFormRef = ref() -const refFilterDialog = ref() +const radioItems = ref([ + { name: '设备管理', value: 'group-device' }, + { name: '订阅管理', value: 'group-subscribe' }, +]) +const current = ref('') +const currentLabel = ref('') -const sealInfo = ref({ +const basicFormRef = ref() + +const groupInfo = ref({ id: '', - sealNo: '', - sealName: '', - sealType: '', - sealTypeName: '', - status: '', - statusName: '', - applyTime: '', - abandonTime: '', - ratifyTime: '', + groupNo: '', + groupName: '', + deptid: '', + deptName: '', + descn: '', + createUserId: '', createTime: '', - approverId: '', - approverName: '', - minioFileName: '', - minioFileUrl: '', }) -const sealInfoRules = ref({ - sealNo: [{ required: true, message: '印章编号不能为空', trigger: 'blur' }], - sealName: [{ required: true, message: '印章名称不能为空', trigger: 'blur' }], - sealType: [{ required: true, message: '印章类型不能为空,请选择', trigger: ['blur', 'change'] }], - approverId: [{ required: true, message: '批准人不能为空', trigger: ['blur', 'change'] }], - applyTime: [{ required: true, message: '申请时间不能为空,请选择', trigger: 'blur' }], - ratifyTime: [{ required: true, message: '批准时间不能为空,请选择', trigger: 'blur' }], - status: [{ required: true, message: '在用状态不能为空,请选择', trigger: ['blur', 'change'] }], - minioFileName: [{ required: true, message: '图形不能为空,请选择一个文件上传', trigger: 'blur' }], -}) // 表单验证规则 - -const minioFileUrl = ref('') - // 逻辑 - const resetForm = () => { - sessionStorage.removeItem('sealInfo') // 返回列表时 将缓存中的数据删除 router.go(-1) } -// 添加 -const saveSealInfoForm = () => { - // 将创建时间改为提交的时间 - sealInfo.value.createTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss') - addSealInfo(sealInfo.value).then((res) => { - if (res.code === 200) { - // 提示保存成功 - ElMessage.success('保存成功') - type.value = 'detail' - title.value = '印章管理登记(详情)' - } - else { - // 提示失败信息 - ElMessage.error(`保存失败:${res.message}`) - } - }) -} -// 编辑 -const updateSealInfoById = () => { - updateSealInfo(sealInfo.value).then((res) => { - if (res.code === 200) { - // 提示保存成功 - ElMessage.success('保存成功') - type.value = 'detail' - title.value = '印章管理登记(详情)' - } - else { - // 提示失败信息 - ElMessage.error(`保存失败:${res.message}`) - } - }) -} - -// 保存 -const saveForm = async () => { - if (!basicFormRef) { return } - - await basicFormRef.value.validate((valid: boolean, fields: any) => { - if (valid === true) { - ElMessageBox.confirm( - '确认保存吗?', - '提示', - { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning', - }, - ).then(() => { - if (type.value === 'create') { - saveSealInfoForm() - } - else if (type.value === 'update') { - updateSealInfoById() - } - }) - } - }) -} - -// 上传请求 -const uploadQuarterlyEvaluateFile: any = (file: any) => { - const fd = new FormData() - fd.append('multipartFile', file.file) - const loading = ElLoading.service({ - lock: true, - background: 'rgba(255, 255, 255, 0.8)', - }) - UploadFile(fd).then((res) => { - if (res.code === 200) { - ElMessage.success('上传成功') - sealInfo.value.minioFileName = res.data[0] - loading.close() - - basicFormRef.value.validateField('minioFileName', () => {}) - } - }).catch(() => { - loading.close() - ElMessage.error('上传失败') - }) -} - -// 上传之前的验证 -const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => { - if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png' && rawFile.type !== 'image/jpg') { - ElMessage.error('只能上传png/jpeg/jpg格式的图片') - return false +// 详情页的各个tab切换操作 +const radioChangeHandler = (newVal: string | number | boolean) => { + const radioTarget = radioItems.value.filter(item => item.name === newVal) + if (radioTarget.length > 0) { + currentLabel.value = radioTarget[0].name + current.value = radioTarget[0].value } - else if (rawFile.size / 1024 / 1024 > 2) { - ElMessage.error('图片不能大于2MB') - return false + else { + currentLabel.value = radioItems.value[0].name + current.value = radioItems.value[0].value } - return true } -// 预览文件 -const previewSealImage = (url: string) => { - console.log(url) -} - -// 从用户账号中筛选进行人员登记 -const showFilterSysUser = () => { - refFilterDialog.value.showOrHideFilterDialog(true) -} - -const recordSelectedHandler = (row: any) => { - refFilterDialog.value.showOrHideFilterDialog(false) - sealInfo.value.approverName = row.name - sealInfo.value.approverId = row.id +// 查询详情 +const detailById = (id: string) => { + detailGroup({ id }).then((res) => { + if (res.code === 200) { + groupInfo.value = res.data + groupInfo.value.createTime = dayjs(groupInfo.value.createTime).format('YYYY-MM-DD') === 'Invalid Date' ? '' : dayjs(groupInfo.value.createTime).format('YYYY-MM-DD HH:mm:ss') + } + }) } const initDialog = (params: any) => { @@ -168,26 +66,16 @@ type.value = params.type id.value = params.id !== undefined ? params.id : '' + // 默认显示第一个tab内容 + current.value = radioItems.value[0].value + currentLabel.value = radioItems.value[0].name + switch (params.type) { - case 'create' : - title.value = '印章管理登记(新增)' - - // 创建时间设置默认值 - sealInfo.value.createTime = dayjs().format('YYYY-MM-DD HH:mm:ss') - - break - case 'update': - title.value = '印章管理登记(编辑)' - id.value = params.id - - sealInfo.value = JSON.parse(sessionStorage.getItem('sealInfo')!) - - break case 'detail': - title.value = '印章管理登记(详情)' + title.value = '分组详情' id.value = params.id - sealInfo.value = JSON.parse(sessionStorage.getItem('sealInfo')!) + detailById(id.value) break default: @@ -196,44 +84,6 @@ } } -// 监听 显示中文 立即监听 -watch(() => sealInfo.value.sealType, (newVal) => { - if (sealTypeDict.value.length === 0) { - sealTypeDict.value = JSON.parse(sessionStorage.getItem('bizSealType')!) - } - const targetList = sealTypeDict.value.filter(item => item.value === newVal) - if (targetList.length > 0) { - sealInfo.value.sealTypeName = targetList[0].name - } - else { - sealInfo.value.sealTypeName = '' - } -}, { immediate: true }) - -// 监听 显示中文 立即监听 -watch(() => sealInfo.value.status, (newVal) => { - if (sealStatusDict.value.length === 0) { - sealStatusDict.value = JSON.parse(sessionStorage.getItem('bizSealStatus')!) - } - const targetList = sealStatusDict.value.filter(item => item.value === newVal) - if (targetList.length > 0) { - sealInfo.value.statusName = targetList[0].name - } - else { - sealInfo.value.statusName = '' - } -}, { immediate: true }) - -watch(() => sealInfo.value.minioFileName, (newVal) => { - if (newVal !== '') { - getPhotoUrl(newVal).then((res) => { - if (res.code === 200) { - minioFileUrl.value = res.data - } - }) - } -}) - onMounted(async () => { initDialog(route.query) }) @@ -243,85 +93,38 @@ - + - - - - - - + + {{ groupInfo.groupNo }} - - - - - - + + {{ groupInfo.groupName }} - - - - - - - - - - - - + + {{ groupInfo.deptName }} - - - - - - - - - + + {{ groupInfo.createTime }} @@ -329,62 +132,28 @@ - - - - - - - - - + + {{ groupInfo.descn }} - - + + + + + + + + + + - - - - -./group-info diff --git a/src/views/basic/group/list.vue b/src/views/basic/group/list.vue index 2af82fb..4b0fceb 100644 --- a/src/views/basic/group/list.vue +++ b/src/views/basic/group/list.vue @@ -3,7 +3,7 @@ import { ElMessage, ElMessageBox, dayjs } from 'element-plus' import type { DateModelType } from 'element-plus' import type { IGroupInfo, IListQuery } from './group-info' -import AddGroupDialog from './addDialog.vue' +import AddGroupDialog from './addGroupDialog.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import { delGroup, getGroupListPage } from '@/api/basic/group' import { getDictByCode } from '@/api/system/dict' @@ -50,7 +50,7 @@ type: 'detail', id: row.id, }, - path: 'list/detail', + path: 'detail', }) }