From a19cbf233ed161173009af8a27e4c047946e12ee Mon Sep 17 00:00:00 2001 From: guanj Date: Fri, 28 Nov 2025 16:27:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=80=E5=8C=97=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/harmonic-boot/cockpit/cockpit.ts | 119 ++ src/api/system-boot/csstatisticalset.ts | 157 ++- src/assets/img/amplify.png | Bin 0 -> 4439 bytes src/assets/img/reduce.png | Bin 0 -> 4689 bytes src/assets/img/view.vue | 295 +++++ src/components/cockpit/dataCleaning/index.vue | 512 ++++++++ src/components/cockpit/integrity/index.vue | 491 +++++++ src/components/cockpit/onlineRate/index.vue | 489 +++++++ .../cockpit/terminalEvaluation/index.vue | 430 +++++++ .../cockpit/terminalEvaluation/index1.vue | 450 +++++++ src/components/form/datePicker/index.vue | 1126 ++++++++--------- src/components/table/header/index.vue | 754 +++++------ src/components/tree/pqs/pointTree.vue | 308 ++--- src/layouts/admin/router-view/main.vue | 208 +-- src/stores/timeCache.ts | 34 + src/utils/pageBubble.ts | 218 ++-- src/utils/router.ts | 38 +- .../homePage/components/routingConfig.vue | 161 +++ src/views/pqs/cockpit/homePage/index.vue | 583 +++++---- .../pqs/cockpit/realTimeData/iframeDia.vue | 459 +++++++ src/views/pqs/cockpit/realTimeData/index.vue | 244 ++++ .../pqs/cockpit/setUp/components/popup.vue | 89 +- .../pqs/cockpit/setUp/components/view.vue | 560 ++++---- src/views/pqs/cockpit/setUp/index.vue | 570 ++++----- .../embed/dataOverview_JB/index.vue | 377 ++++++ .../embed/lntegruty/components/echart.vue | 582 ++++----- .../embed/lntegruty/components/table.vue | 628 ++++----- .../embed/lntegruty/components_JB/echart.vue | 291 +++++ .../embed/lntegruty/components_JB/table.vue | 314 +++++ .../embed/lntegruty/index_JB.vue | 637 ++++++++++ .../embed/onlinerate/components/echart.vue | 582 ++++----- .../embed/onlinerate/index_JB.vue | 636 ++++++++++ .../reportForms/statistics/index.vue | 54 +- .../runEvaluate/components/statistics.vue | 255 ++-- src/views/pqs/runManage/runEvaluate/index.vue | 1001 ++++++++------- .../pqs/runManage/runEvaluate/index_JB.vue | 630 +++++++++ .../monitoringPoint/online/index.vue | 164 +-- .../online/navigation/index.vue | 173 +-- .../online/transientReport/index.vue | 300 +++++ 39 files changed, 11033 insertions(+), 3886 deletions(-) create mode 100644 src/api/harmonic-boot/cockpit/cockpit.ts create mode 100644 src/assets/img/amplify.png create mode 100644 src/assets/img/reduce.png create mode 100644 src/assets/img/view.vue create mode 100644 src/components/cockpit/dataCleaning/index.vue create mode 100644 src/components/cockpit/integrity/index.vue create mode 100644 src/components/cockpit/onlineRate/index.vue create mode 100644 src/components/cockpit/terminalEvaluation/index.vue create mode 100644 src/components/cockpit/terminalEvaluation/index1.vue create mode 100644 src/stores/timeCache.ts create mode 100644 src/views/pqs/cockpit/homePage/components/routingConfig.vue create mode 100644 src/views/pqs/cockpit/realTimeData/iframeDia.vue create mode 100644 src/views/pqs/cockpit/realTimeData/index.vue create mode 100644 src/views/pqs/harmonicMonitoring/embed/dataOverview_JB/index.vue create mode 100644 src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/echart.vue create mode 100644 src/views/pqs/harmonicMonitoring/embed/lntegruty/components_JB/table.vue create mode 100644 src/views/pqs/harmonicMonitoring/embed/lntegruty/index_JB.vue create mode 100644 src/views/pqs/harmonicMonitoring/embed/onlinerate/index_JB.vue create mode 100644 src/views/pqs/runManage/runEvaluate/index_JB.vue create mode 100644 src/views/pqs/voltageSags/monitoringPoint/online/transientReport/index.vue 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 0000000000000000000000000000000000000000..b9fb44979283e9458ed13c8268bbecb95c392f59 GIT binary patch literal 4439 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 literal 0 HcmV?d00001 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 @@ + + +