From 9a1ecb7243756168eb8cd5d8a4430e51a26ccdaf Mon Sep 17 00:00:00 2001 From: huanghao1412 Date: Mon, 29 Jan 2024 17:02:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20token=E5=A4=B1=E6=95=88=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E7=99=BB=E5=BD=95=E9=A1=B5=20=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=8E=A5=E5=8F=A3=E5=8A=A0=E7=A9=BA=E9=97=B4?= =?UTF-8?q?id=20=E5=8A=A0=E4=BB=AA=E8=A1=A8=E7=9B=98=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=8B=E5=8F=B3=E8=B7=9D=E7=A6=BB=E9=80=89=E9=A1=B9=20?= =?UTF-8?q?=E9=87=87=E9=9B=86=E6=B5=81=E9=87=8F=E5=AE=9E=E6=97=B6=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/axios.ts | 55 ++- src/assets/images/chart/charts/Dashboard.png | Bin 0 -> 82106 bytes .../ChartItemSetting/PositionSetting.vue | 49 ++- .../commonDataComponents/useDeviceClassRes.ts | 19 + src/hooks/useChartCommonData.hook.ts | 32 +- .../CustomComponents/Dashboard/config.ts | 32 ++ .../CustomComponents/Dashboard/config.vue | 65 ++++ .../CustomComponents/Dashboard/index.ts | 14 + .../CustomComponents/Dashboard/index.vue | 364 ++++++++++++++++++ .../RealTimeTraffic/index.vue | 39 +- .../CustomComponents/index.ts | 2 + src/packages/public/publicConfig.ts | 3 +- .../chartEditStore/chartEditStore.d.ts | 9 +- .../ContentCharts/hooks/useAside.hook.ts | 16 +- .../ChartDataV2/components/DeviceClass.vue | 34 ++ .../components/MonthAlarmClass.vue | 4 +- .../components/ChartDataV2/index.vue | 6 +- 17 files changed, 682 insertions(+), 61 deletions(-) create mode 100644 src/assets/images/chart/charts/Dashboard.png create mode 100644 src/hooks/commonDataComponents/useDeviceClassRes.ts create mode 100644 src/packages/components/CustomComponents/CustomComponents/Dashboard/config.ts create mode 100644 src/packages/components/CustomComponents/CustomComponents/Dashboard/config.vue create mode 100644 src/packages/components/CustomComponents/CustomComponents/Dashboard/index.ts create mode 100644 src/packages/components/CustomComponents/CustomComponents/Dashboard/index.vue create mode 100644 src/views/chart/ContentConfigurations/components/ChartDataV2/components/DeviceClass.vue diff --git a/src/api/axios.ts b/src/api/axios.ts index 4444fa27..3a7a82e6 100644 --- a/src/api/axios.ts +++ b/src/api/axios.ts @@ -1,5 +1,5 @@ import axios, { AxiosResponse, AxiosRequestConfig, Axios, AxiosError, InternalAxiosRequestConfig } from 'axios' -import { RequestHttpHeaderEnum, ResultEnum, ModuleTypeEnum } from '@/enums/httpEnum' +import { RequestHttpHeaderEnum, ResultEnum, ResultErrcode } from '@/enums/httpEnum' import { PageEnum, ErrorPageNameMap } from '@/enums/pageEnum' import { StorageEnum } from '@/enums/storageEnum' import { axiosPre } from '@/settings/httpSetting' @@ -7,6 +7,7 @@ import { SystemStoreEnum, SystemStoreUserInfoEnum } from '@/store/modules/system import { redirectErrorPage, getLocalStorage, routerTurnByName, isPreview } from '@/utils' import { fetchAllowList } from './axios.config' import includes from 'lodash/includes' +import { postMessageToParent } from "@/utils"; export interface MyResponseType { code: ResultEnum @@ -50,16 +51,27 @@ axiosInstance.interceptors.request.use( // 响应拦截器 axiosInstance.interceptors.response.use( (res: AxiosResponse) => { + const { code, errcode, errmsg } = res.data as { code: number, errcode: string, errmsg: string } + + const logOutCodeList = ['00004', '000012', '000013'] + if(logOutCodeList.some(_ => _ === errcode)) { + window['$message'].error(errmsg) + setTimeout(() => { + postMessageToParent({ + type: 'logOut' + }) + }) + return Promise.resolve(res.data) + } // 预览页面错误不进行处理 if (isPreview()) { return Promise.resolve(res.data) } - const { code } = res.data as { code: number } - if (code === undefined || code === null) return Promise.resolve(res.data) + // if (code === undefined || code === null) return Promise.resolve(res.data) // 成功 - if (code === ResultEnum.SUCCESS) { + if (errcode === ResultErrcode.SUCCESS) { return Promise.resolve(res.data) } @@ -71,27 +83,28 @@ axiosInstance.interceptors.response.use( // } // 固定错误码重定向 - if (ErrorPageNameMap.get(code)) { - redirectErrorPage(code) - return Promise.resolve(res.data) - } + // if (ErrorPageNameMap.get(code)) { + // redirectErrorPage(code) + // return Promise.resolve(res.data) + // } - // 提示错误 - window['$message'].error(window['$t']((res.data as any).msg)) + // 统一提示错误 + window['$message'].error(errmsg) return Promise.resolve(res.data) }, (err: AxiosError) => { - const status = err.response?.status - switch (status) { - case 401: - routerTurnByName(PageEnum.BASE_LOGIN_NAME) - Promise.reject(err) - break - - default: - Promise.reject(err) - break - } + Promise.reject(err) + // const status = err.response?.status + // switch (status) { + // case 401: + // routerTurnByName(PageEnum.BASE_LOGIN_NAME) + // Promise.reject(err) + // break + // + // default: + // Promise.reject(err) + // break + // } } ) diff --git a/src/assets/images/chart/charts/Dashboard.png b/src/assets/images/chart/charts/Dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..7da2b61bb8fef225993cb2570d7be2f3f5a845f9 GIT binary patch literal 82106 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 z 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 literal 0 HcmV?d00001 diff --git a/src/components/Pages/ChartItemSetting/PositionSetting.vue b/src/components/Pages/ChartItemSetting/PositionSetting.vue index 82f17bd0..a10cf6cf 100644 --- a/src/components/Pages/ChartItemSetting/PositionSetting.vue +++ b/src/components/Pages/ChartItemSetting/PositionSetting.vue @@ -33,13 +33,37 @@ + + + + + + diff --git a/src/hooks/commonDataComponents/useDeviceClassRes.ts b/src/hooks/commonDataComponents/useDeviceClassRes.ts new file mode 100644 index 00000000..398db572 --- /dev/null +++ b/src/hooks/commonDataComponents/useDeviceClassRes.ts @@ -0,0 +1,19 @@ +import { publicInterface } from "@/api/path"; +import { CreateComponentType } from '@/packages/index.d' +import { ResultErrcode } from "@/enums/httpEnum"; +import { DeviceClassType } from '@/store/modules/chartEditStore/chartEditStore.d' +import dataJson from "./data.json"; + +export const handleDeviceClass = (targetComponent: CreateComponentType) => { + const obj = targetComponent.commonData[targetComponent.commonData.currentSource] as DeviceClassType + let { enable, space_complete_id } = obj + if(!enable) return { + errcode: ResultErrcode.SUCCESS, + data: { ...dataJson }, + errmsg: '' + } + const query = { + space_complete_id + } + return publicInterface('/dcim/system/custom_large_screen', 'count_device_by_device_type_active', query) +} diff --git a/src/hooks/useChartCommonData.hook.ts b/src/hooks/useChartCommonData.hook.ts index b1fa0cec..3a5adc5b 100644 --- a/src/hooks/useChartCommonData.hook.ts +++ b/src/hooks/useChartCommonData.hook.ts @@ -12,6 +12,7 @@ import { handleRecordValueHistory } from './commonDataComponents/useRecordValueH import { handlePointRealTime } from './commonDataComponents/usePointRealTimeRes' import { handleSinglePoint } from './commonDataComponents/useSinglePointRes' import { handleMonthAlarmClass } from './commonDataComponents/useMonthAlarmClassRes' +import { handleDeviceClass } from './commonDataComponents/useDeviceClassRes' import { handleNoParam } from './commonDataComponents/useNoParamRes' import { ResultErrcode } from '@/enums/httpEnum' @@ -97,7 +98,7 @@ export const useChartCommonData = ( clearInterval(fetchInterval) const fetchFn = async () => { - let res + let res, isMultiple = true switch (targetComponent.commonData?.currentSource) { case CurrentSourceEnum.POINTHISTORY: res = await handlePointHistory(targetComponent) @@ -113,30 +114,41 @@ export const useChartCommonData = ( break; case CurrentSourceEnum.SINGLEPOINT: res = await handleSinglePoint(targetComponent) + isMultiple = false break; case CurrentSourceEnum.MONTHALARMCLASS: res = await handleMonthAlarmClass(targetComponent) break; + case CurrentSourceEnum.DEVICECLASS: + res = await handleDeviceClass(targetComponent) + break; default: - res = await handleNoParam(targetComponent) + // res = await handleNoParam(targetComponent) break; } if (res && res.errcode === ResultErrcode.SUCCESS) { try { const { data } = res - if(Object.prototype.toString.call(data) === '[object Array]') { - if(data.length) echartsUpdateHandle(data[0]) + // 多值的 + if(isMultiple) { + if(Object.prototype.toString.call(data) === '[object Array]') { + if(data.length && data[0].dimensions && data[0].source) echartsUpdateHandle(data[0]) + else throw Error() + } + else if(Object.prototype.toString.call(data) === '[object Object]'){ + if(data.dimensions && data.source) echartsUpdateHandle(data) + else throw Error() + } } - else if(Object.prototype.toString.call(data) === '[object Object]'){ - echartsUpdateHandle(data) + // 单值的 + else { + if(data) echartsUpdateHandle(data) + else throw Error() } } catch (error) { - console.error(error) + window['$message'].error('数据错误') } } - else if(res && res.errmsg){ - window['$message'].warning(res.errmsg) - } } // 普通初始化与组件交互处理监听 watch( diff --git a/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.ts b/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.ts new file mode 100644 index 00000000..319ef9ed --- /dev/null +++ b/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.ts @@ -0,0 +1,32 @@ +import { PublicConfigClass } from '@/packages/public' +import { CreateComponentType } from '@/packages/index.d' +import { DashboardConfig } from './index' +import cloneDeep from 'lodash/cloneDeep' +// import logo from '@/assets/logo.png' +import { CurrentSourceEnum } from '@/store/modules/chartEditStore/chartEditStore.d' + + +export const option = { + dataset: 0, + showUnit: false, + showSubtext: true, + showSubtextUnit: true, + min: 0, + max: 100, + titleFontSize: 24, + titleColor: '#fff', + subtextFontSize: 20, + subtextColor: '#fff' +} + +export default class Config extends PublicConfigClass implements CreateComponentType { + constructor() { + super(); + this.attr.w = 250 + this.attr.h = 250 + this.commonData.currentSource = CurrentSourceEnum.SINGLEPOINT + } + public key = DashboardConfig.key + public chartConfig = cloneDeep(DashboardConfig) + public option = cloneDeep(option) +} diff --git a/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.vue b/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.vue new file mode 100644 index 00000000..bdacaa6b --- /dev/null +++ b/src/packages/components/CustomComponents/CustomComponents/Dashboard/config.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.ts b/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.ts new file mode 100644 index 00000000..10c06428 --- /dev/null +++ b/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.ts @@ -0,0 +1,14 @@ +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' +import { ChatCategoryEnum, ChatCategoryEnumName } from '@/packages/components/CustomComponents/index.d' + +export const DashboardConfig: ConfigType = { + key: 'Dashboard', + chartKey: 'VDashboard', + conKey: 'VCDashboard', + title: '仪表盘', + category: ChatCategoryEnum.CUSTOMCOMPONENTS, + categoryName: ChatCategoryEnumName.CUSTOMCOMPONENTS, + package: PackagesCategoryEnum.CUSTOMCOMPONENTS, + chartFrame: ChartFrameEnum.ECHARTS, + image: 'Dashboard.png' +} diff --git a/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.vue b/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.vue new file mode 100644 index 00000000..1848074f --- /dev/null +++ b/src/packages/components/CustomComponents/CustomComponents/Dashboard/index.vue @@ -0,0 +1,364 @@ + + + + + \ No newline at end of file diff --git a/src/packages/components/CustomComponents/CustomComponents/RealTimeTraffic/index.vue b/src/packages/components/CustomComponents/CustomComponents/RealTimeTraffic/index.vue index be0b8119..9ef846d9 100644 --- a/src/packages/components/CustomComponents/CustomComponents/RealTimeTraffic/index.vue +++ b/src/packages/components/CustomComponents/CustomComponents/RealTimeTraffic/index.vue @@ -6,8 +6,7 @@ :option="option" :manual-update="false" :update-options="{ - notMerge: true, - replaceMerge: ['series', 'xAxis'] + replaceMerge: [] }" autoresize style="overflow: visible" @@ -235,22 +234,34 @@ const getData = () => { } query.types = [methodArr[0]] query.query_type = methodArr[1] || '' - option.xAxis['data'] = [] - option.series[0]['data'] = [] + // option.xAxis['data'] = [] + // option.series[0]['data'] = [] publicInterface('/dcim/dems/statistic', 'get_point_realtime_data_echarts', query).then((res:any) => { if (res && res.data && res.data['current']) { const data = res.data - option.xAxis['data'] = data['echarts'] && data['echarts']['xAxis'] && data['echarts']['xAxis']['data'] ? data['echarts']['xAxis']['data'].map((item:any) => { - const time = query.query_type === '' ? moment(item).format('YYYY-MM-DD HH:mm:ss') : query.query_type === 'day' ? moment(item).format('YYYY-MM-DD') : moment(item).format('YYYY-MM') - return time - }) : [] - option.series[0]['data'] = data['echarts'] && data['echarts']['series'] && data['echarts']['series'][0] && data['echarts']['series'][0]['data'] ? data['echarts']['series'][0] && data['echarts']['series'][0]['data'] : [] - if (query.query_type === '') { - option.tooltip.formatter = '{b}
' + '速率(测点/s)' + '  ' + '{c}' - } else { - option.tooltip.formatter = '{b}
' + '测点总数' + '  ' + '{c}' - } + // option.xAxis['data'] = data['echarts'] && data['echarts']['xAxis'] && data['echarts']['xAxis']['data'] ? data['echarts']['xAxis']['data'].map((item:any) => { + // const time = query.query_type === '' ? moment(item).format('YYYY-MM-DD HH:mm:ss') : query.query_type === 'day' ? moment(item).format('YYYY-MM-DD') : moment(item).format('YYYY-MM') + // return time + // }) : [] + // option.series[0]['data'] = data['echarts'] && data['echarts']['series'] && data['echarts']['series'][0] && data['echarts']['series'][0]['data'] ? data['echarts']['series'][0] && data['echarts']['series'][0]['data'] : [] + // if (query.query_type === '') { + // option.tooltip.formatter = '{b}
' + '速率(测点/s)' + '  ' + '{c}' + // } else { + // option.tooltip.formatter = '{b}
' + '测点总数' + '  ' + '{c}' + // } + nextTick(() => { + if(!vChartRef.value) return + let xAxisData = data['echarts'] && data['echarts']['xAxis'] && data['echarts']['xAxis']['data'] ? data['echarts']['xAxis']['data'].map((item:any) => { + const time = query.query_type === '' ? moment(item).format('YYYY-MM-DD HH:mm:ss') : query.query_type === 'day' ? moment(item).format('YYYY-MM-DD') : moment(item).format('YYYY-MM') + return time + }) : [] + let series0Data = data['echarts'] && data['echarts']['series'] && data['echarts']['series'][0] && data['echarts']['series'][0]['data'] ? data['echarts']['series'][0] && data['echarts']['series'][0]['data'] : [] + vChartRef.value.setOption({ + xAxis: { data: xAxisData }, + series: [{ data:series0Data }] + }) + }) } }).catch((e:unknown) => { console.log(e) diff --git a/src/packages/components/CustomComponents/CustomComponents/index.ts b/src/packages/components/CustomComponents/CustomComponents/index.ts index 32e28fa2..b4c48450 100644 --- a/src/packages/components/CustomComponents/CustomComponents/index.ts +++ b/src/packages/components/CustomComponents/CustomComponents/index.ts @@ -4,6 +4,7 @@ import { RealTimeTrafficConfig } from './RealTimeTraffic' import { OverviewOfComputingNodesConfig } from './OverviewOfComputingNodes' import { GDMapConfig } from './GDMap' import { MonitorRealTimeEventsConfig } from './MonitorRealTimeEvents' +import { DashboardConfig } from './Dashboard' export default [ // Theme1Config, @@ -12,4 +13,5 @@ export default [ OverviewOfComputingNodesConfig, GDMapConfig, MonitorRealTimeEventsConfig, + DashboardConfig, ] diff --git a/src/packages/public/publicConfig.ts b/src/packages/public/publicConfig.ts index cbbb2173..4b212809 100644 --- a/src/packages/public/publicConfig.ts +++ b/src/packages/public/publicConfig.ts @@ -80,7 +80,8 @@ const commonData: commonDataType = { space_complete_id: '' }, deviceClass: { - enable: false + enable: false, + space_complete_id: '' }, singlePoint: { enable: false, diff --git a/src/store/modules/chartEditStore/chartEditStore.d.ts b/src/store/modules/chartEditStore/chartEditStore.d.ts index 041d21b7..f61cab23 100644 --- a/src/store/modules/chartEditStore/chartEditStore.d.ts +++ b/src/store/modules/chartEditStore/chartEditStore.d.ts @@ -335,6 +335,12 @@ export interface MonthAlarmClassType { space_complete_id: string } +// 设备分类统计 +export interface DeviceClassType { + enable: boolean + space_complete_id: string +} + // 通用组件数据 export interface commonDataType { // 多数据 @@ -345,7 +351,8 @@ export interface commonDataType { pointRealTime: PointRealTimeType monthAlarmClass: MonthAlarmClassType // 多数据无参数 - deviceClass: NoParamsType + // 设备分类统计 + deviceClass: DeviceClassType // 单数据 singlePoint: SinglePointType } diff --git a/src/views/chart/ContentCharts/hooks/useAside.hook.ts b/src/views/chart/ContentCharts/hooks/useAside.hook.ts index 836c549d..227bce32 100644 --- a/src/views/chart/ContentCharts/hooks/useAside.hook.ts +++ b/src/views/chart/ContentCharts/hooks/useAside.hook.ts @@ -44,18 +44,18 @@ const packagesListObj = { icon: renderIcon(AirPlaneOutlineIcon), label: PackagesCategoryName.ICONS }, - [PackagesCategoryEnum.THEMESANDLAYOUTS]: { - icon: renderIcon(Apps20RegularIcon), - label: PackagesCategoryName.THEMESANDLAYOUTS - }, + // [PackagesCategoryEnum.THEMESANDLAYOUTS]: { + // icon: renderIcon(Apps20RegularIcon), + // label: PackagesCategoryName.THEMESANDLAYOUTS + // }, [PackagesCategoryEnum.CUSTOMCOMPONENTS]: { icon: renderIcon(AreaCustomIcon), label: PackagesCategoryName.CUSTOMCOMPONENTS }, - [PackagesCategoryEnum.BACKGROUNDS]: { - icon: renderIcon(InsertPhotoSharpIcon), - label: PackagesCategoryName.BACKGROUNDS - } + // [PackagesCategoryEnum.BACKGROUNDS]: { + // icon: renderIcon(InsertPhotoSharpIcon), + // label: PackagesCategoryName.BACKGROUNDS + // } } export const useAsideHook = () => { diff --git a/src/views/chart/ContentConfigurations/components/ChartDataV2/components/DeviceClass.vue b/src/views/chart/ContentConfigurations/components/ChartDataV2/components/DeviceClass.vue new file mode 100644 index 00000000..bfdce82f --- /dev/null +++ b/src/views/chart/ContentConfigurations/components/ChartDataV2/components/DeviceClass.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/views/chart/ContentConfigurations/components/ChartDataV2/components/MonthAlarmClass.vue b/src/views/chart/ContentConfigurations/components/ChartDataV2/components/MonthAlarmClass.vue index 0b6d756a..0215bf10 100644 --- a/src/views/chart/ContentConfigurations/components/ChartDataV2/components/MonthAlarmClass.vue +++ b/src/views/chart/ContentConfigurations/components/ChartDataV2/components/MonthAlarmClass.vue @@ -25,14 +25,14 @@ import {SettingItemBox} from '@/components/Pages/ChartItemSetting' import {useTargetData} from '../../hooks/useTargetData.hook' import {DateOptions, PolicyOptions} from './ComponentsType.d' import {icon} from '@/plugins/icon' -import {commonDataType, RecordValueHistoryType} from '@/store/modules/chartEditStore/chartEditStore.d' +import {commonDataType, MonthAlarmClassType} from '@/store/modules/chartEditStore/chartEditStore.d' const {CloseIcon, AddIcon} = icon.ionicons5 const {targetData} = useTargetData() as { targetData: Ref<{ commonData: commonDataType, id: string }> } const target = computed(() => { - return targetData.value.commonData[targetData.value.commonData.currentSource] + return targetData.value.commonData[targetData.value.commonData.currentSource] as MonthAlarmClassType }) // const recordValueHistory: Ref = computed(() => targetData.value.commonData.recordValueHistory) diff --git a/src/views/chart/ContentConfigurations/components/ChartDataV2/index.vue b/src/views/chart/ContentConfigurations/components/ChartDataV2/index.vue index 128b1062..f3df6eca 100644 --- a/src/views/chart/ContentConfigurations/components/ChartDataV2/index.vue +++ b/src/views/chart/ContentConfigurations/components/ChartDataV2/index.vue @@ -9,7 +9,7 @@ - +