diff --git a/package.json b/package.json index 006e592..e37c147 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "preview": "node build/index.js --preview", "test:unit": "jest --clearCache && vue-cli-service test:unit", "svgo": "svgo -f src/assets/icons/svg --config=src/assets/icons/svgo.yml", - "new": "plop" + "new": "plop", + "serve": "vue-cli-service serve" }, "husky": { "hooks": { @@ -38,7 +39,7 @@ "clipboard": "2.0.4", "codemirror": "^5.49.2", "core-js": "^2.6.12", - "echarts": "^4.2.1", + "echarts": "^4.9.0", "echarts-wordcloud": "^1.1.3", "element-ui": "^2.15.14", "file-saver": "1.3.8", @@ -54,6 +55,7 @@ "qs": "^6.10.1", "screenfull": "4.2.0", "sortablejs": "1.8.4", + "tailwindcss": "^4.1.11", "vue": "2.7.16", "vue-count-to": "^1.0.13", "vue-cropper": "0.4.9", diff --git a/public/index.html b/public/index.html index e918500..c44aeda 100644 --- a/public/index.html +++ b/public/index.html @@ -1,15 +1,20 @@ - - - - - - - <%= webpackConfig.name %> - - -
- - - + + + + + + + + + <%= webpackConfig.name %> + + + + +
+ + + + \ No newline at end of file diff --git a/src/api/analysis/orderAnalysis.js b/src/api/analysis/orderAnalysis.js new file mode 100644 index 0000000..3695f2f --- /dev/null +++ b/src/api/analysis/orderAnalysis.js @@ -0,0 +1,32 @@ +import request from '@/utils/request' + +export function getAllOrderAnalysis() { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderAnalysis', + method: 'get' + }) +} + +export function getDailyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderAnalysis/day', + method: 'get', + params + }) +} + +export function getMonthlyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderAnalysis/month', + method: 'get', + params + }) +} + +export function getYearlyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderAnalysis/year', + method: 'get', + params + }) +} diff --git a/src/api/analysis/taskAnalysis.js b/src/api/analysis/taskAnalysis.js new file mode 100644 index 0000000..60f2bc4 --- /dev/null +++ b/src/api/analysis/taskAnalysis.js @@ -0,0 +1,38 @@ +// src/api/analysis/taskAnalysis.js +import request from '@/utils/request' + +// 获取子单任务分析统计 +export function getOrderDetailAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderDetailAnalysis', + method: 'get', + params, + }) +} + +// 按日范围分析子单任务 +export function getDailyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderDetailAnalysis/day', + method: 'get', + params, + }) +} + +// 按月范围分析子单任务 +export function getMonthlyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderDetailAnalysis/month', + method: 'get', + params, + }) +} + +// 按年范围分析子单任务 +export function getYearlyOrderAnalysis(params) { + return request({ + url: 'aerocraftAdminApi/fmsOdOrderDetailAnalysis/year', + method: 'get', + params, + }) +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index a6f5eec..9603daa 100644 --- a/src/main.js +++ b/src/main.js @@ -24,6 +24,7 @@ import router from './router/routers' import './assets/icons' // icon import './router/index' // permission control + Vue.use(checkPer) Vue.use(permission) Vue.use(dict) diff --git a/src/router/routers.js b/src/router/routers.js index ef5d1e5..84e78f5 100644 --- a/src/router/routers.js +++ b/src/router/routers.js @@ -5,7 +5,8 @@ import Layout from '../layout/index' Vue.use(Router) export const constantRouterMap = [ - { path: '/login', + { + path: '/login', meta: { title: '登录', noCache: true }, component: (resolve) => require(['@/views/login'], resolve), hidden: true diff --git a/src/utils/request.js b/src/utils/request.js index ce7fd1b..07dfd9f 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -36,7 +36,7 @@ service.interceptors.response.use( if (error.response.data instanceof Blob && error.response.data.type.toLowerCase().indexOf('json') !== -1) { const reader = new FileReader() reader.readAsText(error.response.data, 'utf-8') - reader.onload = function(e) { + reader.onload = function (e) { const errorMsg = JSON.parse(reader.result).message Notification.error({ title: errorMsg, diff --git a/src/views/analysis/taskAnalysis/index.vue b/src/views/analysis/taskAnalysis/index.vue new file mode 100644 index 0000000..d69e180 --- /dev/null +++ b/src/views/analysis/taskAnalysis/index.vue @@ -0,0 +1,474 @@ + + + + + \ No newline at end of file diff --git a/src/views/service/task.html b/src/views/service/task.html index c77e903..c2d0085 100644 --- a/src/views/service/task.html +++ b/src/views/service/task.html @@ -91,9 +91,9 @@ } .kpi-value { - font-size: 32px; + font-size: 40px; font-weight: 700; - margin: 12px 0 8px; + margin: 20px 10px 8px 25px; } .kpi-card:nth-child(1) .kpi-value { @@ -112,21 +112,6 @@ color: var(--neutral-gray); } - .trend-change { - font-size: 14px; - display: flex; - align-items: center; - margin-top: 4px; - } - - .trend-up { - color: var(--success-green); - } - - .trend-down { - color: var(--alert-red); - } - .chart-container { border-radius: var(--border-radius); background: var(--light-gray); @@ -145,13 +130,6 @@ align-items: center; } - .dual-column { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 20px; - padding: 0 30px 40px; - } - .date-range-picker { display: flex; align-items: center; @@ -164,20 +142,20 @@ cursor: pointer; } - .day-selector { + .time-granularity { border: 1px solid #e2e8f0; border-radius: var(--border-radius); padding: 8px 12px; font-size: 14px; color: var(--dark-gray); background: white; + margin-left: 10px; } .chart-holder { height: 350px; } - /* Flatpickr 样式覆盖 */ .flatpickr-calendar { font-family: "PingFang SC", "Microsoft YaHei", sans-serif; box-shadow: var(--shadow); @@ -196,47 +174,30 @@
-
实时任务完成率
+
任务完成率
82.5%
-
- - 较昨日 ↑2.1% -
-
关键任务失败率
+
任务失败率
5.2%
-
- - 同比 ↓1.3% -
平均任务周期
-
4.8h
-
- - 行业平均 5.2h -
+
30min
-
资源闲置率
-
12.3%
-
- - 周同比 ↓3.5% -
- 今日无人机使用率
+
87.7%
+
@@ -245,71 +206,128 @@
任务完成趋势分析 -
- - 2023年7月1日 - 2023年7月31日 +
+
+ + 2023年7月1日 - 2023年7月31日 +
- - -
- -
-
任务状态分布
-
-
- - -
-
- 本周24小时任务状态分布 - -
-
-
-
diff --git a/vue.config.js b/vue.config.js index fbb0aed..41a39e5 100644 --- a/vue.config.js +++ b/vue.config.js @@ -81,7 +81,7 @@ module.exports = { bundler: 'webpack', }) ); - + // set svg-sprite-loader config.module .rule('svg') @@ -123,7 +123,7 @@ module.exports = { .plugin('ScriptExtHtmlWebpackPlugin') .after('html') .use('script-ext-html-webpack-plugin', [{ - // `runtime` must same as runtimeChunk name. default is `runtime` + // `runtime` must same as runtimeChunk name. default is `runtime` inline: /runtime\..*\.js$/ }]) .end()