diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/basic/product/group-info.ts b/src/views/basic/product/group-info.ts
new file mode 100644
index 0000000..00bbef6
--- /dev/null
+++ b/src/views/basic/product/group-info.ts
@@ -0,0 +1,23 @@
+// 列表查询参数接口
+export interface IListQuery {
+ ids?: [] // id列表 导出用
+ groupNo?: string
+ groupName: string // 分组名
+ beginTime: string // 创建时间-开始
+ endTime: string // 创建时间-结束
+ offset: number
+ limit: number
+ sort?: string
+ order?: string
+}
+
+export interface IGroupInfo {
+ id: string // id
+ groupNo?: string // 分组编号
+ groupName: string // 分组名称
+ deptid: string // 所属组织
+ deptName: string // 所属组织名称
+ descn: string // 分组描述
+ createUserId: string
+ createTime?: string
+}
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/basic/product/group-info.ts b/src/views/basic/product/group-info.ts
new file mode 100644
index 0000000..00bbef6
--- /dev/null
+++ b/src/views/basic/product/group-info.ts
@@ -0,0 +1,23 @@
+// 列表查询参数接口
+export interface IListQuery {
+ ids?: [] // id列表 导出用
+ groupNo?: string
+ groupName: string // 分组名
+ beginTime: string // 创建时间-开始
+ endTime: string // 创建时间-结束
+ offset: number
+ limit: number
+ sort?: string
+ order?: string
+}
+
+export interface IGroupInfo {
+ id: string // id
+ groupNo?: string // 分组编号
+ groupName: string // 分组名称
+ deptid: string // 所属组织
+ deptName: string // 所属组织名称
+ descn: string // 分组描述
+ createUserId: string
+ createTime?: string
+}
diff --git a/src/views/basic/product/list.vue b/src/views/basic/product/list.vue
new file mode 100644
index 0000000..4b0fceb
--- /dev/null
+++ b/src/views/basic/product/list.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/basic/product/group-info.ts b/src/views/basic/product/group-info.ts
new file mode 100644
index 0000000..00bbef6
--- /dev/null
+++ b/src/views/basic/product/group-info.ts
@@ -0,0 +1,23 @@
+// 列表查询参数接口
+export interface IListQuery {
+ ids?: [] // id列表 导出用
+ groupNo?: string
+ groupName: string // 分组名
+ beginTime: string // 创建时间-开始
+ endTime: string // 创建时间-结束
+ offset: number
+ limit: number
+ sort?: string
+ order?: string
+}
+
+export interface IGroupInfo {
+ id: string // id
+ groupNo?: string // 分组编号
+ groupName: string // 分组名称
+ deptid: string // 所属组织
+ deptName: string // 所属组织名称
+ descn: string // 分组描述
+ createUserId: string
+ createTime?: string
+}
diff --git a/src/views/basic/product/list.vue b/src/views/basic/product/list.vue
new file mode 100644
index 0000000..4b0fceb
--- /dev/null
+++ b/src/views/basic/product/list.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/data/query/data-query.ts b/src/views/data/query/data-query.ts
new file mode 100644
index 0000000..576871e
--- /dev/null
+++ b/src/views/data/query/data-query.ts
@@ -0,0 +1,36 @@
+// 列表查询参数接口
+export interface IListQuery {
+ groupId: string // 分组
+ devcode: string
+ deviceType: string
+ beginTime?: string // 电量
+ endTime?: string //
+ offset?: number
+ limit?: number
+ sort?: string
+ order?: string
+}
+
+export interface IDeviceInfo {
+ id: string
+ groupId: string
+ devcode: string
+ deviceName?: string
+ deviceType: string
+ deviceTypeName?: string
+ status?: string
+ statusName?: string
+ cell?: string
+ imei: string
+ iccid: string
+ model: string
+ modelName?: string
+ productId: string
+ productName?: string
+ encipherType: string
+ encipherTypeName?: string
+ createTime: string
+ createUserId: string
+ createUserName?: string
+ dataValue?: string
+}
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/basic/product/group-info.ts b/src/views/basic/product/group-info.ts
new file mode 100644
index 0000000..00bbef6
--- /dev/null
+++ b/src/views/basic/product/group-info.ts
@@ -0,0 +1,23 @@
+// 列表查询参数接口
+export interface IListQuery {
+ ids?: [] // id列表 导出用
+ groupNo?: string
+ groupName: string // 分组名
+ beginTime: string // 创建时间-开始
+ endTime: string // 创建时间-结束
+ offset: number
+ limit: number
+ sort?: string
+ order?: string
+}
+
+export interface IGroupInfo {
+ id: string // id
+ groupNo?: string // 分组编号
+ groupName: string // 分组名称
+ deptid: string // 所属组织
+ deptName: string // 所属组织名称
+ descn: string // 分组描述
+ createUserId: string
+ createTime?: string
+}
diff --git a/src/views/basic/product/list.vue b/src/views/basic/product/list.vue
new file mode 100644
index 0000000..4b0fceb
--- /dev/null
+++ b/src/views/basic/product/list.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/data/query/data-query.ts b/src/views/data/query/data-query.ts
new file mode 100644
index 0000000..576871e
--- /dev/null
+++ b/src/views/data/query/data-query.ts
@@ -0,0 +1,36 @@
+// 列表查询参数接口
+export interface IListQuery {
+ groupId: string // 分组
+ devcode: string
+ deviceType: string
+ beginTime?: string // 电量
+ endTime?: string //
+ offset?: number
+ limit?: number
+ sort?: string
+ order?: string
+}
+
+export interface IDeviceInfo {
+ id: string
+ groupId: string
+ devcode: string
+ deviceName?: string
+ deviceType: string
+ deviceTypeName?: string
+ status?: string
+ statusName?: string
+ cell?: string
+ imei: string
+ iccid: string
+ model: string
+ modelName?: string
+ productId: string
+ productName?: string
+ encipherType: string
+ encipherTypeName?: string
+ createTime: string
+ createUserId: string
+ createUserName?: string
+ dataValue?: string
+}
diff --git a/src/views/data/query/list.vue b/src/views/data/query/list.vue
new file mode 100644
index 0000000..d15d867
--- /dev/null
+++ b/src/views/data/query/list.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出列表
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset! - 1) * searchQuery.limit! + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+
+
+
+
diff --git a/src/api/basic/device.ts b/src/api/basic/device.ts
index 63d7803..fe5bc37 100644
--- a/src/api/basic/device.ts
+++ b/src/api/basic/device.ts
@@ -56,7 +56,7 @@
}
// 批量删除设备
-export function delDeviceBatch(ids: []) {
+export function delDeviceBatch(ids: string[]) {
return request({
url: `${prefix}/delete`,
method: 'post',
diff --git a/src/api/data/query.ts b/src/api/data/query.ts
new file mode 100644
index 0000000..9b5de39
--- /dev/null
+++ b/src/api/data/query.ts
@@ -0,0 +1,22 @@
+import request from '../index'
+const prefix = 'device/data'
+
+// 查询数据 分页
+export function getDeviceDataListPage(data: object) {
+ return request({
+ url: `${prefix}/list-page`,
+ method: 'post',
+ data,
+ })
+}
+
+// 导出
+export function exportDeviceData(data: object) {
+ return request({
+ url: `${prefix}/list-export`,
+ responseType: 'blob',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-alarm.svg b/src/assets/icons/icon-alarm.svg
new file mode 100644
index 0000000..cf54837
--- /dev/null
+++ b/src/assets/icons/icon-alarm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-analysis.svg b/src/assets/icons/icon-analysis.svg
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/src/assets/icons/icon-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-data.svg b/src/assets/icons/icon-data.svg
new file mode 100644
index 0000000..c9e6aad
--- /dev/null
+++ b/src/assets/icons/icon-data.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-query.svg b/src/assets/icons/icon-query.svg
new file mode 100644
index 0000000..ec62c90
--- /dev/null
+++ b/src/assets/icons/icon-query.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-statis.svg b/src/assets/icons/icon-statis.svg
new file mode 100644
index 0000000..1bb944e
--- /dev/null
+++ b/src/assets/icons/icon-statis.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 2308656..d4ec3f7 100644
--- a/src/router/modules/basic.ts
+++ b/src/router/modules/basic.ts
@@ -4,42 +4,6 @@
const routes: Route.recordRaw[] = [
{
- path: '/basic/group',
- component: Layout,
- 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',
@@ -76,6 +40,42 @@
],
},
{
+ path: '/basic/group',
+ component: Layout,
+ 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/product',
component: Layout,
redirect: '/basic/product/list',
@@ -100,40 +100,39 @@
},
],
},
- /*
{
- path: '/product',
+ path: '/basic/ota',
component: Layout,
- redirect: 'product/list',
- name: 'Product',
+ redirect: '/basic/ota/list',
+ name: 'OTA',
meta: {
- title: '产品管理',
+ title: '远程升级',
icon: 'ep:key',
- auth: '/basic/product',
+ auth: '/basic/ota',
},
children: [
{
- path: 'product/list',
- name: 'ProductList',
+ path: 'list',
+ name: 'OTAPackageList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
- title: '产品管理',
- auth: '/basic/product/list',
+ title: '升级包管理',
+ auth: '/basic/ota/list',
icon: 'ep:key',
},
},
{
- path: 'product/ota',
- name: 'ProductOTAList',
+ path: 'task',
+ name: 'OTATaskList',
component: () => import('@/views/basic/group/list.vue'),
meta: {
title: '远程升级',
- auth: '/basic/product/ota',
+ auth: '/basic/ota/task',
icon: 'ep:key',
},
},
],
- }, */
+ },
]
export default routes
diff --git a/src/router/modules/data.ts b/src/router/modules/data.ts
new file mode 100644
index 0000000..6278c5b
--- /dev/null
+++ b/src/router/modules/data.ts
@@ -0,0 +1,105 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/data/query',
+ component: Layout,
+ redirect: '/data/query/list',
+ name: 'Group',
+ meta: {
+ title: '数据查询',
+ icon: 'ep:key',
+ auth: '/data/query',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'DataQueryList',
+ component: () => import('@/views/data/query/list.vue'),
+ meta: {
+ title: '数据查询',
+ auth: '/data/query',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/query',
+ },
+ },
+ /* {
+ path: 'detail/:id?',
+ name: 'GroupInfoDetail',
+ component: () => import('@/views/basic/group/detail.vue'),
+ meta: {
+ title: '分组详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/group',
+ },
+ }, */
+ ],
+ },
+ {
+ path: '/data/alarm',
+ component: Layout,
+ redirect: '/data/alarm/list',
+ name: 'Alarm',
+ meta: {
+ title: '报警查询',
+ icon: 'ep:key',
+ auth: '/data/alarm',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'AlarmList',
+ component: () => import('@/views/basic/device/list.vue'),
+ meta: {
+ title: '报警查询',
+ auth: '/data/alarm',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/alarm',
+ },
+ },
+ {
+ path: 'detail/:id?',
+ name: 'DeviceInfoDetail',
+ component: () => import('@/views/basic/device/detail.vue'),
+ meta: {
+ title: '设备详情',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/basic/device',
+ },
+ },
+ ],
+ },
+ {
+ path: '/data/statis',
+ component: Layout,
+ redirect: '/data/statis/overview',
+ name: 'Statis',
+ meta: {
+ title: '统计分析',
+ icon: 'ep:key',
+ auth: '/data/statis',
+ },
+ children: [
+ {
+ path: 'overview',
+ name: 'StatisOverview',
+ component: () => import('@/views/basic/product/list.vue'),
+ meta: {
+ title: '产品管理',
+ auth: '/data/statis',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/data/statis',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 95ff1bb..2c4a1ec 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -2,6 +2,7 @@
import generatedRoutes from 'virtual:generated-pages'
import systemRoute from './modules/system'
import basicRoute from './modules/basic'
+import dataRoute from './modules/data'
import type { Route } from '@/global'
import useSettingsStore from '@/store/modules/settings'
@@ -116,6 +117,16 @@
},
{
meta: {
+ title: '数据管理',
+ icon: '',
+ auth: '/data',
+ },
+ children: [
+ ...dataRoute,
+ ],
+ },
+ {
+ meta: {
title: '系统设置',
icon: '',
auth: '/system',
diff --git a/src/views/basic/device/addDeviceDialog.vue b/src/views/basic/device/addDeviceDialog.vue
index 018f123..9b130e0 100644
--- a/src/views/basic/device/addDeviceDialog.vue
+++ b/src/views/basic/device/addDeviceDialog.vue
@@ -1,8 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/basic/product/group-info.ts b/src/views/basic/product/group-info.ts
new file mode 100644
index 0000000..00bbef6
--- /dev/null
+++ b/src/views/basic/product/group-info.ts
@@ -0,0 +1,23 @@
+// 列表查询参数接口
+export interface IListQuery {
+ ids?: [] // id列表 导出用
+ groupNo?: string
+ groupName: string // 分组名
+ beginTime: string // 创建时间-开始
+ endTime: string // 创建时间-结束
+ offset: number
+ limit: number
+ sort?: string
+ order?: string
+}
+
+export interface IGroupInfo {
+ id: string // id
+ groupNo?: string // 分组编号
+ groupName: string // 分组名称
+ deptid: string // 所属组织
+ deptName: string // 所属组织名称
+ descn: string // 分组描述
+ createUserId: string
+ createTime?: string
+}
diff --git a/src/views/basic/product/list.vue b/src/views/basic/product/list.vue
new file mode 100644
index 0000000..4b0fceb
--- /dev/null
+++ b/src/views/basic/product/list.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/data/query/data-query.ts b/src/views/data/query/data-query.ts
new file mode 100644
index 0000000..576871e
--- /dev/null
+++ b/src/views/data/query/data-query.ts
@@ -0,0 +1,36 @@
+// 列表查询参数接口
+export interface IListQuery {
+ groupId: string // 分组
+ devcode: string
+ deviceType: string
+ beginTime?: string // 电量
+ endTime?: string //
+ offset?: number
+ limit?: number
+ sort?: string
+ order?: string
+}
+
+export interface IDeviceInfo {
+ id: string
+ groupId: string
+ devcode: string
+ deviceName?: string
+ deviceType: string
+ deviceTypeName?: string
+ status?: string
+ statusName?: string
+ cell?: string
+ imei: string
+ iccid: string
+ model: string
+ modelName?: string
+ productId: string
+ productName?: string
+ encipherType: string
+ encipherTypeName?: string
+ createTime: string
+ createUserId: string
+ createUserName?: string
+ dataValue?: string
+}
diff --git a/src/views/data/query/list.vue b/src/views/data/query/list.vue
new file mode 100644
index 0000000..d15d867
--- /dev/null
+++ b/src/views/data/query/list.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出列表
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset! - 1) * searchQuery.limit! + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+
+
+
+
diff --git a/src/views/data/query/listEmbedded.vue b/src/views/data/query/listEmbedded.vue
new file mode 100644
index 0000000..cf4710e
--- /dev/null
+++ b/src/views/data/query/listEmbedded.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出列表
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset! - 1) * searchQuery.limit! + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+
+
+
+