diff --git a/package-lock.json b/package-lock.json index c3e83c8..e865e3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "axios": "^1.9.0", "core-js": "^3.6.5", + "echarts": "^5.6.0", "element-ui": "^2.15.14", "lodash": "^4.17.21", "mapbox-gl": "^2.15.0", @@ -6291,6 +6292,20 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/echarts": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", + "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.1" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -17487,6 +17502,19 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true + }, + "node_modules/zrender": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" } }, "dependencies": { @@ -22265,6 +22293,22 @@ "safer-buffer": "^2.1.0" } }, + "echarts": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", + "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.6.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -31208,6 +31252,21 @@ "dev": true } } + }, + "zrender": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } } } } diff --git a/package.json b/package.json index 6f41495..23d1da7 100644 --- a/package.json +++ b/package.json @@ -9,18 +9,19 @@ "lint": "eslint --ext .js,.vue src" }, "dependencies": { - "core-js": "^3.6.5", - "vue": "^2.6.11", - "vuex": "^3.4.0", "axios": "^1.9.0", + "core-js": "^3.6.5", + "echarts": "^5.6.0", "element-ui": "^2.15.14", "lodash": "^4.17.21", "mapbox-gl": "^2.15.0", "mqtt": "^2.18.9", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", + "vue": "^2.6.11", "vue-router": "^3.6.5", - "vue-template-compiler": "^2.7.16" + "vue-template-compiler": "^2.7.16", + "vuex": "^3.4.0" }, "devDependencies": { "@mapbox/mapbox-gl-draw": "^1.5.0", @@ -45,4 +46,4 @@ "main": ".eslintrc.js", "author": "", "license": "ISC" -} \ No newline at end of file +} diff --git a/src/components/DateRangePicker.vue b/src/components/DateRangePicker.vue new file mode 100644 index 0000000..63f342d --- /dev/null +++ b/src/components/DateRangePicker.vue @@ -0,0 +1,131 @@ + + + diff --git a/src/router/index.js b/src/router/index.js index 9a73165..57ce50b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -99,6 +99,17 @@ const routes = [ roles: ['admin', 'editor'], tapName: 'plane' } + }, + { + path: '/register/flyData', + component: () => import('@/views/layout/components/main/register/flyData'), + meta: { + title: '飞行数据统计', + icon: 'el-icon-data-line', + roles: ['admin', 'editor'], + tapName: 'plane', + hidden: true + } } ] }, diff --git a/src/store/modules/app.js b/src/store/modules/app.js index e6d0297..64cbde2 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -5,10 +5,11 @@ const state = { isWideScreen: window.innerWidth < 480, // 屏幕宽度是否小于480 defaultLonLat: null, // 地图默认经纬度 defaultZoom: null, // 地图默认缩放 - orderSerch: null, // 订单列表页搜索条件 - /* 页面临时传参 */ - toMessageIdArr: [] // 用户管理 发布公告页面 id临时传参 + /* 页面参数 */ + orderSerch: null, // 订单列表页搜索条件 + toMessageIdArr: [], // 用户管理 发布公告页面 id临时传参 + toFlyDataIdArr: [] // 飞机飞行数据 临时传参 } const mutations = { @@ -56,8 +57,13 @@ const mutations = { }, /* 临时传参 */ + // 管理员管理 发布公告页面 传递id数组 setToMessageIdArr (state, idArr) { state.toMessageIdArr = idArr + }, + // 飞机飞行数据 传递id数组 + setToFlyDataIdArr (state, idArr) { + state.toFlyDataIdArr = idArr } } diff --git a/src/utils/api/table.js b/src/utils/api/table.js index 7c15488..683dd52 100644 --- a/src/utils/api/table.js +++ b/src/utils/api/table.js @@ -161,3 +161,20 @@ export async function pubMessage (tit, message, idArr, endTime) { const res = await api.post('pubMessage', params, 'Admin') // 模块名根据你实际配置来 return res } + +/** + * @abstract 获取指定飞机组的飞行数据(按时间范围) + * @param {Array} idArr 飞机ID数组 + * @param {Number} startTime 开始时间 + * @param {Number} endTime 结束时间 + * @returns 飞行数据列表 + */ +export async function getFlyData (idArr, startTime, endTime) { + const params = new URLSearchParams() + params.append('idArr', idArr.join(',')) // 后端只收字符串,用逗号分隔 + params.append('startTime', startTime) + params.append('endTime', endTime) + + const res = await api.post('getFlyDataByIdArr', params, 'Plane') + return res +} diff --git a/src/views/layout/components/main/register/flyData.vue b/src/views/layout/components/main/register/flyData.vue new file mode 100644 index 0000000..ad097b4 --- /dev/null +++ b/src/views/layout/components/main/register/flyData.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/src/views/layout/components/main/register/index.vue b/src/views/layout/components/main/register/index.vue index bd0c902..4924826 100644 --- a/src/views/layout/components/main/register/index.vue +++ b/src/views/layout/components/main/register/index.vue @@ -6,6 +6,7 @@ 删除 编辑 + 飞行数据 @@ -116,6 +117,17 @@ export default { this.$message.error('只能选择一条记录') } }, + /** + * @description: 跳转到飞机数据统计页面 + */ + toFlyDataPage (selIdArr) { + if (selIdArr.length === 0) { + this.$message.error('请选择至少一架飞机') + } else { + this.$store.commit('app/setToFlyDataIdArr', selIdArr)// 传参 + this.$router.push('/register/flyData/') + } + }, /** * @description: 删除飞机 */