diff --git a/src/api/harmonic-boot/cockpit/cockpit.ts b/src/api/harmonic-boot/cockpit/cockpit.ts new file mode 100644 index 00000000..c62a8032 --- /dev/null +++ b/src/api/harmonic-boot/cockpit/cockpit.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request' + +// 主要监测点列表查询>>分页 +export function mainLineList(data: any) { + return request({ + url: '/harmonic-boot/mainLine/list', + method: 'post', + data: data + }) +} +// 主要监测点指标越限详情 +export function statLimitRateDetails(data: any) { + return request({ + url: '/harmonic-boot/mainLine/statLimitRateDetails', + method: 'post', + data: data + }) +} + +// 查询监测点列表=全部>>不分页 +export function cslineList(data: any) { + return request({ + url: '/cs-device-boot/csline/list', + method: 'post', + data: data + }) +} + +// 监测点详情 趋势图数据 +export function trendData(data: any) { + return request({ + url: '/cs-device-boot/csGroup/trendData', + method: 'post', + data: data + }) +} + +// 每日越限占比统计 +export function totalLimitStatisticsDetails(data: any) { + return request({ + url: '/harmonic-boot/totalLimitStatistics/details', + method: 'post', + data: data + }) +} + +// 总体指标越限统计列表 +export function totalLimitStatisticsList(data: any) { + return request({ + url: '/harmonic-boot/totalLimitStatistics/list', + method: 'post', + data: data + }) +} + +// 总体指标越限统计数据 +export function totalLimitStatisticsData(data: any) { + return request({ + url: '/harmonic-boot/totalLimitStatistics/data', + method: 'post', + data: data + }) +} + +// 指标越限程度数据 +export function limitExtentData(data: any) { + return request({ + url: '/harmonic-boot/limitRateDetailD/limitExtentData', + method: 'post', + data: data + }) +} +// 指标日趋势图数据 +export function limitExtentDayData(data: any) { + return request({ + url: '/harmonic-boot/limitRateDetailD/limitExtentDayData', + method: 'post', + data: data + }) +} + +// 指标越限明细日历数据 +export function limitCalendarData(data: any) { + return request({ + url: '/harmonic-boot/limitRateDetailD/limitCalendarData', + method: 'post', + data: data + }) +} + +//指标拟合图数据 +export function fittingData(data: any) { + return request({ + url: '/cs-device-boot/csGroup/fittingData', + method: 'post', + data: data + }) +} + +//指标越限时间概率分布 +export function limitTimeProbabilityData(data: any) { + return request({ + url: '/harmonic-boot/limitRateDetailD/limitTimeProbabilityData', + method: 'post', + data: data + }) +} + +//指标越限程度概率分布 +export function limitProbabilityData(data: any) { + return request({ + url: '/harmonic-boot/limitRateDetailD/limitProbabilityData', + method: 'post', + data: data + }) +} + + + diff --git a/src/api/system-boot/csstatisticalset.ts b/src/api/system-boot/csstatisticalset.ts index 259ab59a..7ddae609 100644 --- a/src/api/system-boot/csstatisticalset.ts +++ b/src/api/system-boot/csstatisticalset.ts @@ -1,70 +1,87 @@ -import createAxios from '@/utils/request' -// 查询指标 -export const queryStatistical = (id: string) => { - let form = new FormData() - form.append('id', id) - return createAxios({ - url: '/system-boot/csstatisticalset/queryStatistical', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - data: form - }) -} - -// 绑定指标 -export const addStatistical = (params: any) => { - return createAxios({ - url: '/system-boot/csstatisticalset/addStatistical', - method: 'post', - data: params - }) -} -// 新增驾驶舱页面 -export const addDashboard = (data: any) => { - return createAxios({ - url: '/system-boot/dashboard/addDashboard', - method: 'post', - data: data - }) -} -// 修改驾驶舱页面 -export const updateDashboard = (data: any) => { - return createAxios({ - url: '/system-boot/dashboard/updateDashboard', - method: 'post', - data: data - }) -} -// 删除驾驶舱页面 -export const deleteDashboard = (params: any) => { - return createAxios({ - url: '/system-boot/dashboard/deleteDashboard', - method: 'post', - params - }) -} -// 激活的驾驶舱页面 -export const activatePage = (params: any) => { - return createAxios({ - url: '/system-boot/dashboard/activatePage', - method: 'post', - params - }) -} -// 查询激活的驾驶舱页面 -export const queryActivatePage = () => { - return createAxios({ - url: '/system-boot/dashboard/queryActivatePage', - method: 'post' - }) -} -// 更具id 查询驾驶舱页面 -export const queryById = (params: any) => { - return createAxios({ - url: '/system-boot/dashboard/queryById', - method: 'post', - params - }) -} +import createAxios from '@/utils/request' +// 查询指标 +export const queryStatistical = (id:string) => { + let form = new FormData() + form.append('id', id) + return createAxios({ + url: '/system-boot/csstatisticalset/queryStatistical', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: form + }) +} + +// 绑定指标 +export const addStatistical = (params:any) => { + return createAxios({ + url: '/system-boot/csstatisticalset/addStatistical', + method: 'post', + data: params + }) +} + +// 新增驾驶舱页面 +export const addDashboard = (data: any) => { + return createAxios({ + url: '/system-boot/dashboard/addDashboard', + method: 'post', + data: data + }) +} +// 修改驾驶舱页面 +export const updateDashboard = (data: any) => { + return createAxios({ + url: '/system-boot/dashboard/updateDashboard', + method: 'post', + data: data + }) +} +// 删除驾驶舱页面 +export const deleteDashboard = (params: any) => { + return createAxios({ + url: '/system-boot/dashboard/deleteDashboard', + method: 'post', + params + }) +} +// 激活的驾驶舱页面 +export const activatePage = (params: any) => { + return createAxios({ + url: '/system-boot/dashboard/activatePage', + method: 'post', + params + }) +} +// 查询激活的驾驶舱页面 +export const queryActivatePage = () => { + return createAxios({ + url: '/system-boot/dashboard/queryActivatePage', + method: 'post' + }) +} +// 更具id 查询驾驶舱页面 +export const queryById = (params: any) => { + return createAxios({ + url: '/system-boot/dashboard/queryById', + method: 'post', + params + }) +} +// 更具id 查询驾驶舱页面 +export const queryByPagePath = (params: any) => { + return createAxios({ + url: '/system-boot/dashboard/queryByPagePath', + method: 'post', + params + }) +} +// 根据用户id查询用户驾驶舱 +export const getDashboardPageByUserId = (params: any) => { + return createAxios({ + url: '/system-boot/dashboard/getDashboardPageByUserId', + method: 'post', + params + }) +} diff --git a/src/assets/img/amplify.png b/src/assets/img/amplify.png new file mode 100644 index 00000000..b9fb4497 Binary files /dev/null and b/src/assets/img/amplify.png differ diff --git a/src/assets/img/reduce.png b/src/assets/img/reduce.png new file mode 100644 index 00000000..de9c23b0 Binary files /dev/null and b/src/assets/img/reduce.png differ diff --git a/src/assets/img/view.vue b/src/assets/img/view.vue new file mode 100644 index 00000000..60059d27 --- /dev/null +++ b/src/assets/img/view.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/components/cockpit/dataCleaning/index.vue b/src/components/cockpit/dataCleaning/index.vue new file mode 100644 index 00000000..24d6087a --- /dev/null +++ b/src/components/cockpit/dataCleaning/index.vue @@ -0,0 +1,512 @@ + + + diff --git a/src/components/cockpit/integrity/index.vue b/src/components/cockpit/integrity/index.vue new file mode 100644 index 00000000..26a0ce80 --- /dev/null +++ b/src/components/cockpit/integrity/index.vue @@ -0,0 +1,491 @@ + + + diff --git a/src/components/cockpit/onlineRate/index.vue b/src/components/cockpit/onlineRate/index.vue new file mode 100644 index 00000000..a516e95d --- /dev/null +++ b/src/components/cockpit/onlineRate/index.vue @@ -0,0 +1,489 @@ + + + diff --git a/src/components/cockpit/terminalEvaluation/index.vue b/src/components/cockpit/terminalEvaluation/index.vue new file mode 100644 index 00000000..71617a26 --- /dev/null +++ b/src/components/cockpit/terminalEvaluation/index.vue @@ -0,0 +1,430 @@ + + + diff --git a/src/components/cockpit/terminalEvaluation/index1.vue b/src/components/cockpit/terminalEvaluation/index1.vue new file mode 100644 index 00000000..7bfa07fd --- /dev/null +++ b/src/components/cockpit/terminalEvaluation/index1.vue @@ -0,0 +1,450 @@ + + + diff --git a/src/components/form/datePicker/index.vue b/src/components/form/datePicker/index.vue index bb54159b..7580b78f 100644 --- a/src/components/form/datePicker/index.vue +++ b/src/components/form/datePicker/index.vue @@ -1,563 +1,563 @@ - - - - - + + + + + diff --git a/src/components/table/header/index.vue b/src/components/table/header/index.vue index a064f508..edecbff2 100644 --- a/src/components/table/header/index.vue +++ b/src/components/table/header/index.vue @@ -1,375 +1,379 @@ - - - - - + + + + + diff --git a/src/components/tree/pqs/pointTree.vue b/src/components/tree/pqs/pointTree.vue index 83e779f6..0342cc80 100644 --- a/src/components/tree/pqs/pointTree.vue +++ b/src/components/tree/pqs/pointTree.vue @@ -1,154 +1,154 @@ - - - - + + + + diff --git a/src/layouts/admin/router-view/main.vue b/src/layouts/admin/router-view/main.vue index f42c52b6..236401d9 100644 --- a/src/layouts/admin/router-view/main.vue +++ b/src/layouts/admin/router-view/main.vue @@ -1,104 +1,104 @@ - - - - - + + + + + diff --git a/src/stores/timeCache.ts b/src/stores/timeCache.ts new file mode 100644 index 00000000..a68ba757 --- /dev/null +++ b/src/stores/timeCache.ts @@ -0,0 +1,34 @@ +// src/stores/timeCache.ts +import { defineStore } from 'pinia' +import { RouteLocationNormalizedLoaded } from 'vue-router' + +// 时间组件的缓存值 用于驾驶舱放大的时候和内部的时间组件同步 +interface TimeCacheState { + cache: Map +} + +export const useTimeCacheStore = defineStore('timeCache', { + state: (): TimeCacheState => ({ + cache: new Map() + }), + + actions: { + setCache(routePath: string, interval: number | undefined, timeValue: any) { + this.cache.set(routePath, { + interval, + timeValue + }) + }, + + getCache(routePath: string) { + return this.cache.get(routePath) + }, + + hasCache(routePath: string) { + return this.cache.has(routePath) + } + } +}) \ No newline at end of file diff --git a/src/utils/pageBubble.ts b/src/utils/pageBubble.ts index f024753c..75a8dd06 100644 --- a/src/utils/pageBubble.ts +++ b/src/utils/pageBubble.ts @@ -1,104 +1,114 @@ -// 页面气泡效果 - -const bubble: { - width: number - height: number - bubbleEl: any - canvas: any - ctx: any - circles: any[] - animate: boolean - requestId: any -} = { - width: 0, - height: 0, - bubbleEl: null, - canvas: null, - ctx: {}, - circles: [], - animate: true, - requestId: null, -} - -export const init = function (): void { - bubble.width = window.innerWidth - bubble.height = window.innerHeight - - bubble.bubbleEl = document.getElementById('bubble') - bubble.bubbleEl.style.height = bubble.height + 'px' - - bubble.canvas = document.getElementById('bubble-canvas') - bubble.canvas.width = bubble.width - bubble.canvas.height = bubble.height - bubble.ctx = bubble.canvas.getContext('2d') - - // create particles - bubble.circles = [] - for (let x = 0; x < bubble.width * 0.5; x++) { - const c = new Circle() - bubble.circles.push(c) - } - animate() - addListeners() -} - -function scrollCheck() { - bubble.animate = document.body.scrollTop > bubble.height ? false : true -} - -function resize() { - bubble.width = window.innerWidth - bubble.height = window.innerHeight - bubble.bubbleEl.style.height = bubble.height + 'px' - bubble.canvas.width = bubble.width - bubble.canvas.height = bubble.height -} - -function animate() { - if (bubble.animate) { - bubble.ctx.clearRect(0, 0, bubble.width, bubble.height) - for (const i in bubble.circles) { - bubble.circles[i].draw() - } - } - bubble.requestId = requestAnimationFrame(animate) -} - -class Circle { - pos: { - x: number - y: number - } - alpha: number - scale: number - velocity: number - draw: () => void - constructor() { - this.pos = { - x: Math.random() * bubble.width, - y: bubble.height + Math.random() * 100, - } - this.alpha = 0.1 + Math.random() * 0.3 - this.scale = 0.1 + Math.random() * 0.3 - this.velocity = Math.random() - this.draw = function () { - this.pos.y -= this.velocity - this.alpha -= 0.0005 - bubble.ctx.beginPath() - bubble.ctx.arc(this.pos.x, this.pos.y, this.scale * 10, 0, 2 * Math.PI, false) - bubble.ctx.fillStyle = 'rgba(255,255,255,' + this.alpha + ')' - bubble.ctx.fill() - } - } -} - -function addListeners() { - window.addEventListener('scroll', scrollCheck) - window.addEventListener('resize', resize) -} - -export function removeListeners() { - window.removeEventListener('scroll', scrollCheck) - window.removeEventListener('resize', resize) - cancelAnimationFrame(bubble.requestId) -} +// 页面气泡效果 + +const bubble: { + width: number + height: number + bubbleEl: any + canvas: any + ctx: any + circles: any[] + animate: boolean + requestId: any +} = { + width: 0, + height: 0, + bubbleEl: null, + canvas: null, + ctx: {}, + circles: [], + animate: true, + requestId: null +} + +export const init = function (): void { + bubble.width = window.innerWidth + bubble.height = window.innerHeight + + bubble.bubbleEl = document.getElementById('bubble') + bubble.bubbleEl.style.height = bubble.height + 'px' + + bubble.canvas = document.getElementById('bubble-canvas') + bubble.canvas.width = bubble.width + bubble.canvas.height = bubble.height + bubble.ctx = bubble.canvas.getContext('2d') + + // create particles + bubble.circles = [] + for (let x = 0; x < bubble.width * 0.5; x++) { + const c = new Circle() + bubble.circles.push(c) + } + animate() + addListeners() +} + +function scrollCheck() { + bubble.animate = document.body.scrollTop > bubble.height ? false : true +} + +function resize() { + bubble.width = window.innerWidth + bubble.height = window.innerHeight + bubble.bubbleEl.style.height = bubble.height + 'px' + bubble.canvas.width = bubble.width + bubble.canvas.height = bubble.height +} + +function animate() { + if (bubble.animate) { + bubble.ctx.clearRect(0, 0, bubble.width, bubble.height) + for (const i in bubble.circles) { + bubble.circles[i].draw() + } + } + bubble.requestId = requestAnimationFrame(animate) +} + +class Circle { + pos: { + x: number + y: number + } + alpha: number + scale: number + velocity: number + draw: () => void + constructor() { + this.pos = { + x: Math.random() * bubble.width, + y: bubble.height + Math.random() * 100 + } + this.alpha = 0.1 + Math.random() * 0.3 + this.scale = 0.1 + Math.random() * 0.3 + this.velocity = Math.random() + this.draw = function () { + this.pos.y -= this.velocity + this.alpha -= 0.0005 + // 当气泡超出顶部或透明度为 0 时,重置位置和属性 + if (this.pos.y < -10 || this.alpha < 0) { + this.pos = { + x: Math.random() * bubble.width, + y: bubble.height + Math.random() * 100 + } + this.alpha = 0.1 + Math.random() * 0.35 + this.scale = 0.1 + Math.random() * 0.35 + this.velocity = Math.random() + } + bubble.ctx.beginPath() + bubble.ctx.arc(this.pos.x, this.pos.y, this.scale * 10, 0, 2 * Math.PI, false) + bubble.ctx.fillStyle = 'rgba(255,255,255,' + this.alpha + ')' + bubble.ctx.fill() + } + } +} + +function addListeners() { + window.addEventListener('scroll', scrollCheck) + window.addEventListener('resize', resize) +} + +export function removeListeners() { + window.removeEventListener('scroll', scrollCheck) + window.removeEventListener('resize', resize) + cancelAnimationFrame(bubble.requestId) +} diff --git a/src/utils/router.ts b/src/utils/router.ts index 65610d61..11cf4612 100644 --- a/src/utils/router.ts +++ b/src/utils/router.ts @@ -7,8 +7,10 @@ import { useNavTabs } from '@/stores/navTabs' import { closeShade } from '@/utils/pageShade' import { adminBaseRoute } from '@/router/static' import { compact, isEmpty, reverse } from 'lodash-es' +import { getRouteMenu, dictDataCache } from '@/api/auth' import { isAdminApp } from '@/utils/common' - +import { adminBaseRoutePath } from '@/router/static' +const route:any = useRouter() /** * 导航失败有错误消息的路由push * @param to — 导航位置,同 router.push @@ -293,3 +295,37 @@ const getParentNames = (name: string) => { } return reverse(parentNames) } +// 刷新菜单 +export const getMenu = () => { + getRouteMenu().then((res: any) => { + const handlerMenu = (data: any) => { + data.forEach((item: any) => { + item.routePath = + item.routePath[0] == '/' ? item.routePath.substring(1, item.routePath.length) : item.routePath + item.path = item.routePath + item.name = item.routePath + item.keepalive = item.routePath + item.component = item.routeName + ? item.routeName.indexOf('/src/views/') > -1 + ? item.routeName + : `/src/views/${item.routeName}/index.vue` + : '' + item.type = item.children && item.children.length > 0 ? 'menu_dir' : 'menu' + item.menu_type = item.children && item.children.length > 0 ? null : 'tab' + if (item.children) { + handlerMenu(item.children) + } + }) + } + handlerMenu(res.data) + handleAdminRoute(res.data) + if (route?.params.to) { + const lastRoute = JSON.parse(route.params.to as string) + if (lastRoute.path != adminBaseRoutePath) { + let query = !isEmpty(lastRoute.query) ? lastRoute.query : {} + routePush({ path: lastRoute.path, query: query }) + return + } + } + }) +} diff --git a/src/views/pqs/cockpit/homePage/components/routingConfig.vue b/src/views/pqs/cockpit/homePage/components/routingConfig.vue new file mode 100644 index 00000000..0de4b55c --- /dev/null +++ b/src/views/pqs/cockpit/homePage/components/routingConfig.vue @@ -0,0 +1,161 @@ + + + diff --git a/src/views/pqs/cockpit/homePage/index.vue b/src/views/pqs/cockpit/homePage/index.vue index 05db3d64..dcbd1412 100644 --- a/src/views/pqs/cockpit/homePage/index.vue +++ b/src/views/pqs/cockpit/homePage/index.vue @@ -1,245 +1,338 @@ - - - - - + + + + + diff --git a/src/views/pqs/cockpit/realTimeData/iframeDia.vue b/src/views/pqs/cockpit/realTimeData/iframeDia.vue new file mode 100644 index 00000000..884d0cc2 --- /dev/null +++ b/src/views/pqs/cockpit/realTimeData/iframeDia.vue @@ -0,0 +1,459 @@ + + + + + + diff --git a/src/views/pqs/cockpit/realTimeData/index.vue b/src/views/pqs/cockpit/realTimeData/index.vue new file mode 100644 index 00000000..83f6e7ca --- /dev/null +++ b/src/views/pqs/cockpit/realTimeData/index.vue @@ -0,0 +1,244 @@ + + + diff --git a/src/views/pqs/cockpit/setUp/components/popup.vue b/src/views/pqs/cockpit/setUp/components/popup.vue index eac422de..9577fdb3 100644 --- a/src/views/pqs/cockpit/setUp/components/popup.vue +++ b/src/views/pqs/cockpit/setUp/components/popup.vue @@ -1,29 +1,29 @@ - - - - - - - + + + + + diff --git a/src/views/pqs/cockpit/setUp/index.vue b/src/views/pqs/cockpit/setUp/index.vue index baee025f..04bae3dd 100644 --- a/src/views/pqs/cockpit/setUp/index.vue +++ b/src/views/pqs/cockpit/setUp/index.vue @@ -1,284 +1,286 @@ - - - + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/dataOverview_JB/index.vue b/src/views/pqs/harmonicMonitoring/embed/dataOverview_JB/index.vue new file mode 100644 index 00000000..37fe3593 --- /dev/null +++ b/src/views/pqs/harmonicMonitoring/embed/dataOverview_JB/index.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/echart.vue b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/echart.vue index a55bc838..84f3d310 100644 --- a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/echart.vue +++ b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/echart.vue @@ -1,291 +1,291 @@ - - - - + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/table.vue b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/table.vue index e619f584..7e1cb079 100644 --- a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/table.vue +++ b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components/table.vue @@ -1,314 +1,314 @@ - - - - + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/echart.vue b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/echart.vue new file mode 100644 index 00000000..84f3d310 --- /dev/null +++ b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/echart.vue @@ -0,0 +1,291 @@ + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/table.vue b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/table.vue new file mode 100644 index 00000000..0cfbea20 --- /dev/null +++ b/src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/table.vue @@ -0,0 +1,314 @@ + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/lntegruty/index_JB.vue b/src/views/pqs/harmonicMonitoring/embed/lntegruty/index_JB.vue new file mode 100644 index 00000000..60b73b08 --- /dev/null +++ b/src/views/pqs/harmonicMonitoring/embed/lntegruty/index_JB.vue @@ -0,0 +1,637 @@ + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/onlinerate/components/echart.vue b/src/views/pqs/harmonicMonitoring/embed/onlinerate/components/echart.vue index 54578bb3..7167c5ee 100644 --- a/src/views/pqs/harmonicMonitoring/embed/onlinerate/components/echart.vue +++ b/src/views/pqs/harmonicMonitoring/embed/onlinerate/components/echart.vue @@ -1,291 +1,291 @@ - - - - + + + + diff --git a/src/views/pqs/harmonicMonitoring/embed/onlinerate/index_JB.vue b/src/views/pqs/harmonicMonitoring/embed/onlinerate/index_JB.vue new file mode 100644 index 00000000..4de29186 --- /dev/null +++ b/src/views/pqs/harmonicMonitoring/embed/onlinerate/index_JB.vue @@ -0,0 +1,636 @@ + + + + diff --git a/src/views/pqs/harmonicMonitoring/reportForms/statistics/index.vue b/src/views/pqs/harmonicMonitoring/reportForms/statistics/index.vue index 6cf5145f..d5d84de0 100644 --- a/src/views/pqs/harmonicMonitoring/reportForms/statistics/index.vue +++ b/src/views/pqs/harmonicMonitoring/reportForms/statistics/index.vue @@ -41,6 +41,9 @@
@@ -58,10 +61,11 @@ import TableStore from '@/utils/tableStore' import PointTree from '@/components/tree/pqs/pointTree.vue' import TableHeader from '@/components/table/header/index.vue' import { useDictData } from '@/stores/dictData' +import { exportModelJB } from '@/api/harmonic-boot/harmonic' import { mainHeight } from '@/utils/layout' import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel' import { exportExcel } from '@/views/system/reportForms/export.js' - +import { ElMessage } from 'element-plus' defineOptions({ name: 'harmonic-boot/xieboReport' }) @@ -113,12 +117,13 @@ const tableStore = new TableStore({ showtoolbar: false, // 是否显示工具栏 showinfobar: false, // 是否显示顶部信息栏 showsheetbar: true, // 是否显示底部sheet按钮 - allowEdit: false, // 禁止所有编辑操作(必填) + allowEdit: false, // 禁止所有编辑操作(必填) data: tableStore.table.data }) }, 10) } }) +const loading = ref(false) provide('tableStore', tableStore) onMounted(() => { @@ -159,6 +164,50 @@ const handleNodeClick = (data: any, node: any) => { const exportEvent = () => { exportExcel(luckysheet.getAllSheets(), '统计报表下载') } +const exportReport = () => { + if (!line) { + ElMessage({ + type: 'warning', + + message: '请选择要导出的数据' + }) + return + } + loading.value = true + let form = new FormData() + form.append('isUrl', false) + form.append('lineIndex', dotList.value.id) + form.append('startTime', TableHeaderRef.value.datePickerRef.timeValue[0]) + form.append('endTime', TableHeaderRef.value.datePickerRef.timeValue[1]) + form.append('type', 0) + form.append('name', dotList.value.name) + ElMessage({ + message: '下载报告中,请稍等.....', + duration: 1000 + }) + exportModelJB(form) + .then(async res => { + let blob = new Blob([res], { + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + }) + + const url = window.URL.createObjectURL(blob) + const link = document.createElement('a') // 创建a标签 + link.href = url + link.download = + dotList.value.name + + TableHeaderRef.value.datePickerRef.timeValue[0] + + '_' + + TableHeaderRef.value.datePickerRef.timeValue[1] // 设置下载的文件名 + document.body.appendChild(link) + link.click() //执行下载 + document.body.removeChild(link) + loading.value = false + }) + .catch(() => { + loading.value = false + }) +} diff --git a/src/views/pqs/runManage/runEvaluate/components/statistics.vue b/src/views/pqs/runManage/runEvaluate/components/statistics.vue index 6d7542c3..fb1210c2 100644 --- a/src/views/pqs/runManage/runEvaluate/components/statistics.vue +++ b/src/views/pqs/runManage/runEvaluate/components/statistics.vue @@ -1,125 +1,130 @@ - - - + + + diff --git a/src/views/pqs/runManage/runEvaluate/index.vue b/src/views/pqs/runManage/runEvaluate/index.vue index a7f32ca3..3a91393c 100644 --- a/src/views/pqs/runManage/runEvaluate/index.vue +++ b/src/views/pqs/runManage/runEvaluate/index.vue @@ -1,501 +1,500 @@ - - - + + + diff --git a/src/views/pqs/runManage/runEvaluate/index_JB.vue b/src/views/pqs/runManage/runEvaluate/index_JB.vue new file mode 100644 index 00000000..8812285f --- /dev/null +++ b/src/views/pqs/runManage/runEvaluate/index_JB.vue @@ -0,0 +1,630 @@ + + + + diff --git a/src/views/pqs/voltageSags/monitoringPoint/online/index.vue b/src/views/pqs/voltageSags/monitoringPoint/online/index.vue index 99107b92..948b46fb 100644 --- a/src/views/pqs/voltageSags/monitoringPoint/online/index.vue +++ b/src/views/pqs/voltageSags/monitoringPoint/online/index.vue @@ -1,82 +1,82 @@ - - - + + + diff --git a/src/views/pqs/voltageSags/monitoringPoint/online/navigation/index.vue b/src/views/pqs/voltageSags/monitoringPoint/online/navigation/index.vue index bd805a35..0815922f 100644 --- a/src/views/pqs/voltageSags/monitoringPoint/online/navigation/index.vue +++ b/src/views/pqs/voltageSags/monitoringPoint/online/navigation/index.vue @@ -1,86 +1,87 @@ - - - + + + diff --git a/src/views/pqs/voltageSags/monitoringPoint/online/transientReport/index.vue b/src/views/pqs/voltageSags/monitoringPoint/online/transientReport/index.vue new file mode 100644 index 00000000..c627fe29 --- /dev/null +++ b/src/views/pqs/voltageSags/monitoringPoint/online/transientReport/index.vue @@ -0,0 +1,300 @@ + + +