diff --git a/src/api/data/index.ts b/src/api/data/index.ts new file mode 100644 index 0000000..6b14b76 --- /dev/null +++ b/src/api/data/index.ts @@ -0,0 +1,122 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { weatherVo } from './types'; + +/** + * 获取公司列表 + */ +export function companyList() { + return request({ + url: '/assetData/dataScreenMain/company/tree/0', + method: 'get' + }); +} + +/** + * 获取天气预报 + */ +export function getWeather(): AxiosPromise<[]> { + return request({ + url: 'assetData/dataScreenMain/weather/0', + method: 'get' + }); +} + +/** + * 总发电量接口 + */ +export function powerInfoAll(data: any) { + return request({ + url: '/assetData/dataScreenMain/powerInfoAll', + method: 'post', + data: data + }); +} + +/** + * 公司面积接口 + */ +export function squareInfoCompany(data: any) { + return request({ + url: '/assetData/dataScreenMain/squareInfoCompany', + method: 'post', + data: data + }); +} + +/** + * 集团面积接口 + */ +export function squareInfoGroup(data: any) { + return request({ + url: '/assetData/dataScreenMain/squareInfoGroup', + method: 'post', + data: data + }); +} + +/** + * 煤消耗接口 + */ +export function coalLostRate(data: any) { + return request({ + url: '/assetData/dataScreenMain/coalLostRate', + method: 'post', + data: data + }); +} + +/** + * 水消耗接口 + */ +export function waterInfo(data: any) { + return request({ + url: '/assetData/dataScreenMain/waterInfo', + method: 'post', + data: data + }); +} + +/** + * 电消耗接口 + */ +export function powerLostRate(data: any) { + return request({ + url: '/assetData/dataScreenMain/powerLostRate', + method: 'post', + data: data + }); +} + +/** + * 地图数据 + */ +export function mapInfo(data: any) { + return request({ + url: 'assetData/dataScreenMain/mapInfo', + method: 'post', + data: data + }); +} + +/** + * 每平米产热量数据排名 + */ +export function heatRateRange(data: any) { + return request({ + url: 'assetData/dataScreenMain/heatRateRange', + method: 'post', + data: data + }); +} + +/** + * 每平米耗煤量数据排名 + */ +export function coalConsumptionRange(data: any) { + return request({ + url: 'assetData/dataScreenMain/coalConsumptionRange', + method: 'post', + data: data + }); +} diff --git a/src/api/data/types.ts b/src/api/data/types.ts new file mode 100644 index 0000000..51a9603 --- /dev/null +++ b/src/api/data/types.ts @@ -0,0 +1,22 @@ +/** + * 天气参数 + */ +export interface weatherVo { + date: string; + tem_day: string; + tem_night: string; + wea: string; + wea_img: string; + win: string; + win_speed: string; +} + +/** + * 水消耗参数 + */ +export interface waterVo { + field1: number; + field2: number; + field3: number; + name: string; +} diff --git a/src/assets/fonts/SourceHanSansBold.OTF b/src/assets/fonts/SourceHanSansBold.OTF new file mode 100644 index 0000000..886f82f Binary files /dev/null and b/src/assets/fonts/SourceHanSansBold.OTF differ diff --git a/src/assets/fonts/SourceHanSansBold.ttf b/src/assets/fonts/SourceHanSansBold.ttf new file mode 100644 index 0000000..b1f65f2 Binary files /dev/null and b/src/assets/fonts/SourceHanSansBold.ttf differ diff --git a/src/assets/fonts/font.css b/src/assets/fonts/font.css index 96f3abd..cf3dae4 100644 --- a/src/assets/fonts/font.css +++ b/src/assets/fonts/font.css @@ -18,3 +18,7 @@ font-family: 'PangMenZhengDaoBiao'; src: url('PangMenZhengDaoBiao.ttf') format('truetype'); } +@font-face { + font-family: 'SourceHanSansBold'; + src: url('SourceHanSansBold.OTF') format('OpenType'); +} diff --git a/src/assets/icons/BIlogo.svg b/src/assets/icons/BIlogo.svg new file mode 100644 index 0000000..0188584 --- /dev/null +++ b/src/assets/icons/BIlogo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_back.svg b/src/assets/icons/icon_back.svg new file mode 100644 index 0000000..c481bc6 --- /dev/null +++ b/src/assets/icons/icon_back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_menu.svg b/src/assets/icons/icon_menu.svg new file mode 100644 index 0000000..b68f6f4 --- /dev/null +++ b/src/assets/icons/icon_menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/dataVisual/header_bg.png b/src/assets/images/dataVisual/header_bg.png new file mode 100644 index 0000000..42c7c13 Binary files /dev/null and b/src/assets/images/dataVisual/header_bg.png differ diff --git a/src/assets/images/dataVisual/icon_curve.svg b/src/assets/images/dataVisual/icon_curve.svg new file mode 100644 index 0000000..1f856af --- /dev/null +++ b/src/assets/images/dataVisual/icon_curve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/dataVisual/icon_list.svg b/src/assets/images/dataVisual/icon_list.svg new file mode 100644 index 0000000..18f0d95 --- /dev/null +++ b/src/assets/images/dataVisual/icon_list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/dataVisual/icon_search.svg b/src/assets/images/dataVisual/icon_search.svg new file mode 100644 index 0000000..a11b9a9 --- /dev/null +++ b/src/assets/images/dataVisual/icon_search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/dataVisual/title_bg.png b/src/assets/images/dataVisual/title_bg.png new file mode 100644 index 0000000..224cd4c Binary files /dev/null and b/src/assets/images/dataVisual/title_bg.png differ diff --git a/src/assets/images/dataVisual/title_bg_l.png b/src/assets/images/dataVisual/title_bg_l.png new file mode 100644 index 0000000..4d93d1a Binary files /dev/null and b/src/assets/images/dataVisual/title_bg_l.png differ diff --git a/src/assets/images/data_c/background.png b/src/assets/images/data_c/background.png new file mode 100644 index 0000000..b8396ca Binary files /dev/null and b/src/assets/images/data_c/background.png differ diff --git a/src/assets/images/data_c/background_16.png b/src/assets/images/data_c/background_16.png new file mode 100644 index 0000000..20a63d6 Binary files /dev/null and b/src/assets/images/data_c/background_16.png differ diff --git a/src/assets/images/data_c/background_16_copy.png b/src/assets/images/data_c/background_16_copy.png new file mode 100644 index 0000000..1d89799 Binary files /dev/null and b/src/assets/images/data_c/background_16_copy.png differ diff --git a/src/assets/images/data_c/bg_block.png b/src/assets/images/data_c/bg_block.png new file mode 100644 index 0000000..cbefa49 Binary files /dev/null and b/src/assets/images/data_c/bg_block.png differ diff --git a/src/assets/images/data_c/bg_title.png b/src/assets/images/data_c/bg_title.png new file mode 100644 index 0000000..0bc4c17 Binary files /dev/null and b/src/assets/images/data_c/bg_title.png differ diff --git a/src/assets/images/data_c/content_bg_16.png b/src/assets/images/data_c/content_bg_16.png new file mode 100644 index 0000000..6d3dba6 Binary files /dev/null and b/src/assets/images/data_c/content_bg_16.png differ diff --git a/src/assets/images/data_c/header_bg_16.png b/src/assets/images/data_c/header_bg_16.png new file mode 100644 index 0000000..a8ee5a4 Binary files /dev/null and b/src/assets/images/data_c/header_bg_16.png differ diff --git a/src/assets/images/data_c/rendering.png b/src/assets/images/data_c/rendering.png new file mode 100644 index 0000000..5a71b99 Binary files /dev/null and b/src/assets/images/data_c/rendering.png differ diff --git a/src/assets/images/data_c/title_bg.png b/src/assets/images/data_c/title_bg.png new file mode 100644 index 0000000..465b5df Binary files /dev/null and b/src/assets/images/data_c/title_bg.png differ diff --git a/src/assets/images/data_c/title_bg_l.png b/src/assets/images/data_c/title_bg_l.png new file mode 100644 index 0000000..d3c8772 Binary files /dev/null and b/src/assets/images/data_c/title_bg_l.png differ diff --git a/src/assets/images/data_c/title_short.png b/src/assets/images/data_c/title_short.png new file mode 100644 index 0000000..43d15fb Binary files /dev/null and b/src/assets/images/data_c/title_short.png differ diff --git a/src/mock/routes.json b/src/mock/routes.json index ab69c55..4c5c7c5 100644 --- a/src/mock/routes.json +++ b/src/mock/routes.json @@ -59,6 +59,18 @@ "roles": ["biadmin"], "keepAlive": true } + }, + { + "path": "/dataVisual", + "component": "data-visual/index", + "name": "dataVisual", + "meta": { + "title": "换热站", + "icon": "document", + "hidden": false, + "roles": ["biadmin"], + "keepAlive": true + } } ] } diff --git a/src/router/index.ts b/src/router/index.ts index 99942a9..0782b5e 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -54,6 +54,11 @@ export const constantRoutes: RouteRecordRaw[] = [ component: () => import('@/views/details/index.vue'), meta: { hidden: true } }, + { + path: '/dataVisual', + component: () => import('@/views/data-visual/index.vue'), + meta: { hidden: true } + }, { path: '/', diff --git a/src/store/modules/date.js b/src/store/modules/date.js new file mode 100644 index 0000000..38b20e3 --- /dev/null +++ b/src/store/modules/date.js @@ -0,0 +1,25 @@ +import { defineStore } from 'pinia'; + +const useCounter = defineStore('date', { + /** + * 存储全局状态 + */ + state: () => ({ + dateStr: '' + }), + + /** + * 用来封装计算属性 有缓存功能 类似于computed + */ + getters: {}, + + /** + * 编辑业务逻辑 类似于methods + */ + actions: { + dateStore(val) { + this.dateStr = val; + } + } +}); +export default useCounter; diff --git a/src/styles/index.scss b/src/styles/index.scss index 80595f2..63bc979 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -206,3 +206,25 @@ color: #000 !important; } } + +.menuPopover { + border-radius: 10px !important; + background: rgba(255, 255, 255, 0) !important; + backdrop-filter: blur(10px) !important; + border: 2px solid rgba(255, 255, 255, 0.1) !important; + box-shadow: 0 0 80px rgba(0, 0, 0, 0.25) !important; + --el-bg-color-overlay: transparent !important; + --el-border-color-light: #535352 !important; + .menuList { + .el-tree { + background: transparent !important; + --el-tree-node-hover-bg-color: transparent !important; + --el-color-primary-light-9: transparent !important; + --el-tree-text-color: #fff; + --el-tree-expand-icon-color: #fff; + } + .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{ + color: #b7cffc; + } + } +} diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts index 5742656..acba637 100644 --- a/src/types/auto-imports.d.ts +++ b/src/types/auto-imports.d.ts @@ -2,11 +2,9 @@ export {} declare global { const EffectScope: typeof import('vue')['EffectScope'] - const ElForm: typeof import('element-plus/es')['ElForm'] const ElMessage: typeof import('element-plus/es')['ElMessage'] const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] const ElNotification: typeof import('element-plus/es')['ElNotification'] - const NEllipsis: typeof import('naive-ui')['NEllipsis'] const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] const computed: typeof import('vue')['computed'] @@ -273,11 +271,9 @@ import { UnwrapRef } from 'vue' declare module 'vue' { interface ComponentCustomProperties { readonly EffectScope: UnwrapRef - readonly ElForm: UnwrapRef readonly ElMessage: UnwrapRef readonly ElMessageBox: UnwrapRef readonly ElNotification: UnwrapRef - readonly NEllipsis: UnwrapRef readonly asyncComputed: UnwrapRef readonly autoResetRef: UnwrapRef readonly computed: UnwrapRef diff --git a/src/types/components.d.ts b/src/types/components.d.ts index a2672c5..e77c575 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -23,12 +23,15 @@ declare module '@vue/runtime-core' { ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] diff --git a/src/views/data-visual/components/bar.vue b/src/views/data-visual/components/bar.vue new file mode 100644 index 0000000..67a40d4 --- /dev/null +++ b/src/views/data-visual/components/bar.vue @@ -0,0 +1,162 @@ + + + diff --git a/src/views/data-visual/components/boxPlot.vue b/src/views/data-visual/components/boxPlot.vue new file mode 100644 index 0000000..811fa4e --- /dev/null +++ b/src/views/data-visual/components/boxPlot.vue @@ -0,0 +1,154 @@ + + + diff --git a/src/views/data-visual/components/charts.vue b/src/views/data-visual/components/charts.vue new file mode 100644 index 0000000..a8e05a1 --- /dev/null +++ b/src/views/data-visual/components/charts.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/data-visual/components/header.vue b/src/views/data-visual/components/header.vue new file mode 100644 index 0000000..1da50d7 --- /dev/null +++ b/src/views/data-visual/components/header.vue @@ -0,0 +1,347 @@ + + + diff --git a/src/views/data-visual/components/line.vue b/src/views/data-visual/components/line.vue new file mode 100644 index 0000000..974d125 --- /dev/null +++ b/src/views/data-visual/components/line.vue @@ -0,0 +1,153 @@ + + + diff --git a/src/views/data-visual/components/table.vue b/src/views/data-visual/components/table.vue new file mode 100644 index 0000000..578a5d3 --- /dev/null +++ b/src/views/data-visual/components/table.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/views/data-visual/components/temp.vue b/src/views/data-visual/components/temp.vue new file mode 100644 index 0000000..ef52d60 --- /dev/null +++ b/src/views/data-visual/components/temp.vue @@ -0,0 +1,1221 @@ + + + diff --git a/src/views/data-visual/index.scss b/src/views/data-visual/index.scss new file mode 100644 index 0000000..033ed57 --- /dev/null +++ b/src/views/data-visual/index.scss @@ -0,0 +1,35 @@ +@import url('@/assets/fonts/font.css'); +.screenContainer { + // position: fixed; + // left: 50%; + // top: 50%; + transform-origin: 0 0; + transition: 0.3s; + color: #fff; + font-size: 16px; + background-color: #142036; + z-index: 100; + .header { + position: relative; + height: 125px; + padding: 21px 40px 0 40px; + background-color: #0C182C; + border-bottom: 1px solid #3D4C64; + // span { + // line-height: 62px; + // font-size: 30px; + // font-family: 'PangMenZhengDaoBiao'; + // font-weight: 400; + // letter-spacing: 4px; + // color: #e8effb; + // background: linear-gradient(0deg, #b2ccfc 0%, #ffffff 100%); + // background-clip: text; + // -webkit-background-clip: text; + // -webkit-text-fill-color: transparent; + // } + } + + .main { + padding: 12px 40px 0 40px; + } +} diff --git a/src/views/data-visual/index.vue b/src/views/data-visual/index.vue new file mode 100644 index 0000000..a66fd4b --- /dev/null +++ b/src/views/data-visual/index.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/monitoring/screen/components/main.vue b/src/views/monitoring/screen/components/main.vue index 3700158..e807298 100644 --- a/src/views/monitoring/screen/components/main.vue +++ b/src/views/monitoring/screen/components/main.vue @@ -135,6 +135,7 @@ import mitt from '@/plugins/bus'; import socket from '@/utils/socket'; import useStorage from '@/utils/useStorage'; import { useUserStoreHook } from '@/store/modules/user'; +import { useDateFormat } from '@vueuse/core'; const sessionStorageIns = useStorage('sessionStorage'); const { perms } = useUserStoreHook(); @@ -257,6 +258,7 @@ const headerData = ref(); onMounted(() => { // stationInfo(); // tableHeader(); + console.log('起始时间:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); console.log('aaaa', sessionStorage.getItem('currentPage')); tablePage.currentPage = sessionStorage.getItem('currentPage') === null ? 1 : Number(sessionStorage.getItem('currentPage')); @@ -407,6 +409,7 @@ function tableHeader() { function tableDatas() { //获取表格数据 // const params = menuKey.value; + console.log('接口开始:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); const params = { pageNum: tablePage.currentPage, pageSize: tablePage.pageSize, @@ -421,8 +424,10 @@ function tableDatas() { tablePage.total = res.total; // gridOptions.data = res.data; loadingShow.value = false; + console.log('接口结束:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); } }); + } const cellDBLClickEvent: VxeTableEvents.CellDblclick = ({ row, column }) => { @@ -449,6 +454,7 @@ const cellDBLClickEvent: VxeTableEvents.CellDblclick = ({ row, column } }; const formatRole: VxeColumnPropTypes.Formatter = ({ cellValue }) => { + console.log('渲染开始:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); //表单参数为object时处理 // console.log(cellValue); // const iconFont=cellValue.changeProp===-1?'':(cellValue.changeProp===1?'':'') @@ -467,11 +473,13 @@ const formatRole: VxeColumnPropTypes.Formatter = ({ cellValue }) => { ${cellValue.ctrlPro.valueType != 'bool' ? cellValue.val : cellValue.val === 'true' ? '启' : '停'} ${cellValue.canBeControl === '1' && controlPerm ? '' : ''}`; + console.log('渲染完成:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); return cellData; }; // 通用行合并函数(将相同多列数据合并为一行) const mergeRowMethod: VxeTablePropTypes.SpanMethod = ({ row, _rowIndex, column, visibleData }) => { + console.log('通用行合并渲染开始:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); const fields = ['gTitle']; const cellValue = row[column.field]; if (cellValue && fields.includes(column.field)) { @@ -489,6 +497,7 @@ const mergeRowMethod: VxeTablePropTypes.SpanMethod = ({ row, _rowIndex, } } } + console.log('通用行合并渲染完成:', useDateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss').value); }; const submitEvent: VxeFormEvents.Submit = () => {