Browse Source

feat: 自定义数据接口对接&逻辑实现

main
betaqi 2 weeks ago
parent
commit
e8fb7be067
  1. 60
      src/api/http.ts
  2. 147
      src/api/path/dataSource/index.ts
  3. 85
      src/enums/dataSourceEnum.ts
  4. 1
      src/enums/httpEnum.ts
  5. 2
      src/hooks/useChartDataFetch.hook.ts
  6. 1
      src/hooks/useChartDataPondFetch.hook.ts
  7. 5
      src/packages/public/publicConfig.ts
  8. 26
      src/store/modules/chartEditStore/chartEditStore.d.ts
  9. 2631
      src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestDataSourceConfig/data.ts
  10. 188
      src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestDataSourceConfig/index.vue
  11. 2
      src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataSource/components/data-source-model.vue
  12. 49
      src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataSource/index.vue
  13. 99
      src/views/chart/ContentConfigurations/components/ChartData/index.d.ts

60
src/api/http.ts

@ -1,16 +1,20 @@ @@ -1,16 +1,20 @@
import axiosInstance from './axios'
import {
RequestHttpEnum,
ContentTypeEnum,
RequestBodyEnum,
RequestDataTypeEnum,
RequestContentTypeEnum,
RequestDataTypeEnum,
RequestHttpEnum,
RequestParamsObjType
} from '@/enums/httpEnum'
import type { RequestGlobalConfigType, RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d'
import type {
RequestConfigType,
RequestGlobalConfigType
} from '@/store/modules/chartEditStore/chartEditStore.d'
import { getLocalStorage } from "@/utils";
import { StorageEnum } from "@/enums/storageEnum";
import { SystemStoreEnum, SystemStoreUserInfoEnum } from '@/store/modules/systemStore/systemStore.d'
import { axiosPre } from "@/settings/httpSetting";
export const get = <T = any>(url: string, params?: object) => {
return axiosInstance<T>({
@ -143,6 +147,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req @@ -143,6 +147,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
if (!targetParams || !globalParams) {
return
}
// 全局
const {
// 全局请求源地址
@ -252,3 +257,52 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req @@ -252,3 +257,52 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
window['$message'].error('URL地址格式有误!')
}
}
/**
* *
* @param requestConfig {
* url: 请求地址 -> ${ModuleTypeEnum.PROJECT}
* method: 请求方式 get/post/del/put/patch
* params: 请求参数
* }
*/
export const specialCustomizeHttp = async (
requestConfig: {
url: string
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | string
params: any
}
) => {
if (!requestConfig) return
// 处理头部
let headers = appendTokenAndTenant({}, import.meta.env.VITE_DEV_PATH)
// data 参数
let data: RequestParamsObjType | FormData | string = {}
// params 参数
let params: any = { ...requestConfig.params }
// form 类型处理
let formData: FormData = new FormData()
formData.set('default', 'defaultData')
// 类型处理
try {
const url = (new Function("return `" + `${import.meta.env.VITE_DEV_PATH}${axiosPre}${requestConfig.url}`.trim() + "`"))();
debugger
return await axiosInstance(
{
url,
method: requestConfig.method,
data,
params,
headers
}
)
} catch (error) {
console.error(error)
window['$message']?.error('URL 地址格式有误!')
return Promise.reject(error)
}
}

147
src/api/path/dataSource/index.ts

@ -0,0 +1,147 @@ @@ -0,0 +1,147 @@
import { http } from "@/api/http";
import { ModuleTypeEnum, RequestHttpEnum } from "@/enums/httpEnum";
import { ProjectDetail } from "@/api/path/project";
import { getLocalStorage, httpErrorHandle } from "@/utils";
import { RequestDataSourceConfig } from '@/store/modules/chartEditStore/chartEditStore.d'
import { StorageEnum } from "@/enums/storageEnum";
import { SystemStoreEnum } from '@/store/modules/systemStore/systemStore.d'
import { SelectDataSourceTypeAPIObj } from "@/enums/dataSourceEnum";
/*
*
*/
export const fetchDataSite = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-site`)
} catch {
httpErrorHandle()
}
}
/*
*
* @param data {
* siteId // 站点
* }
*/
export const fetchDataDevice = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-entity`,data)
} catch {
httpErrorHandle()
}
}
/*
*
* @param data {
* siteId // 站点
* entityId // 设备
* }
*/
export const fetchDataPoint = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-point`, data)
} catch {
httpErrorHandle()
}
}
// {
// "queryType": 2,
// "site": "53",
// "width": "1d",
// "tenantId": 169,
// "interval":"1h",
// "points":[]
// }
/*
*
* @param params {
* queryType = 2
* siteId // 站点
* entityId // 设备
* width = 1d
* tenantId
* interval
* points = []
* }
*/
export async function test (){
// const params = {
// "queryType": 1,
// "site": 56,
// "with": 30,
// "deviceSn": 454,
// "points": [
// 4,
// 7
// ],
// "tenantId": 169
// }
const params = {
"queryType": 2,
"site": 56,
"with": "6h",
"interval": "20m",
"points": [],
"tenantId": 169
}
try {
return await http(RequestHttpEnum.POST)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-by-iot`, params)
} catch {
httpErrorHandle()
}
}
function getPointParams(requestSource:RequestDataSourceConfig) {
let params:any = {
queryType: SelectDataSourceTypeAPIObj[requestSource.dataSourceType],
site: requestSource.station,
with: requestSource.recentTimeRange,
deviceSn: String(requestSource.device),
points: requestSource.points,
tenantId: getToken()
}
return params
}
function getEarningParams(requestSource:RequestDataSourceConfig){
let params: any = {
queryType: SelectDataSourceTypeAPIObj[requestSource.dataSourceType],
site:requestSource.station,
with: requestSource.recentTimeRange,
interval: '20m',
points: [],
tenantId: getToken()
}
return params
}
export const fetchDataByIot = async (requestSource:RequestDataSourceConfig) => {
let params:any = {}
if(requestSource.dataSourceType === 'point') {
params = getPointParams(requestSource)
} else if(requestSource.dataSourceType === 'earning') {
params = getEarningParams(requestSource)
}
try {
return await http(RequestHttpEnum.POST)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-by-iot`, params)
} catch {
httpErrorHandle()
}
}
function getToken() {
const info = getLocalStorage(StorageEnum.GO_SYSTEM_STORE)
return info ? info[SystemStoreEnum.TENANT_INFO]['tenantId'] : undefined
}

85
src/enums/dataSourceEnum.ts

@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
/**
* @description:
*/
export enum DataSourceTypeEnum {
// 收益
EARNING = 'earning',
// 分
POINT = 'point'
}
/**
* @description:
*/
export const SelectDataSourceTypeNameObj = {
[DataSourceTypeEnum.EARNING]: '收益数据',
[DataSourceTypeEnum.POINT]: '点位数据',
}
export const SelectDataSourceTypeAPIObj = {
[DataSourceTypeEnum.EARNING]: 2,
[DataSourceTypeEnum.POINT]: 1,
}
/**
* @description:
*/
export enum EarningTimeRangeEnum {
LAST_6h= '6h',
LAST_12h= '12h',
LAST_1d= '1d',
LAST_2d= '2d',
LAST_3d = '3d',
LAST_4d = '4d',
LAST_5d = '5d',
LAST_6d = '6d',
LAST_7d = '7d',
}
/**
* @description:
*/
export const EarningTimeRangeNameObj = {
[EarningTimeRangeEnum.LAST_6h]: '最近6小时',
[EarningTimeRangeEnum.LAST_12h]: '最近12小时',
[EarningTimeRangeEnum.LAST_1d]: '最近1天',
[EarningTimeRangeEnum.LAST_2d]: '最近2天',
[EarningTimeRangeEnum.LAST_3d]: '最近3天',
[EarningTimeRangeEnum.LAST_4d]: '最近4天',
[EarningTimeRangeEnum.LAST_5d]: '最近5天',
[EarningTimeRangeEnum.LAST_6d]: '最近6天',
[EarningTimeRangeEnum.LAST_7d]: '最近7天',
}
/**
* @description:
*/
export enum PointsTimeRangeEnum {
// 收益
LAST_30= '30m',
LAST_25= '25m',
LAST_20 = '20m',
LAST_15 = '15m',
LAST_10 = '10m',
LAST_5 = '5m',
LAST_1 = '1m',
}
/**
* @description: // 收益时间范围名称
*/
export const PointsTimeRangeNameObj = {
[PointsTimeRangeEnum.LAST_30]: '最近30分钟',
[PointsTimeRangeEnum.LAST_25]: '最近25分钟',
[PointsTimeRangeEnum.LAST_20]: '最近20分钟',
[PointsTimeRangeEnum.LAST_15]: '最近15分钟',
[PointsTimeRangeEnum.LAST_10]: '最近10分钟',
[PointsTimeRangeEnum.LAST_5 ]: '最近5分钟',
[PointsTimeRangeEnum.LAST_1 ]: '最近1分钟',
}

1
src/enums/httpEnum.ts

@ -3,6 +3,7 @@ export enum ModuleTypeEnum { @@ -3,6 +3,7 @@ export enum ModuleTypeEnum {
SYSTEM = 'system',
INFRA = 'infra',
PROJECT = 'report/go-view/project',
DATA= 'report/go-view/data',
}
// 请求结果集

2
src/hooks/useChartDataFetch.hook.ts

@ -123,7 +123,7 @@ export const useChartDataFetch = ( @@ -123,7 +123,7 @@ export const useChartDataFetch = (
const chartEditStore = useChartEditStore()
const {
station,
devices,
device,
points,
requestIntervalUnit: targetUnit,
requestInterval: targetInterval

1
src/hooks/useChartDataPondFetch.hook.ts

@ -97,7 +97,6 @@ export const useChartDataPondFetch = () => { @@ -97,7 +97,6 @@ export const useChartDataPondFetch = () => {
const requestDataPondId = targetComponent.request.requestDataPondId as string
// 新增数据项
const mittPondIdArr = mittDataPondMap.get(requestDataPondId) || []
debugger
mittPondIdArr.push({
updateCallback: updateCallback,
filter: targetComponent.filter

5
src/packages/public/publicConfig.ts

@ -20,6 +20,7 @@ import { @@ -20,6 +20,7 @@ import {
} from '@/packages/index.d'
import { chartInitConfig } from '@/settings/designSetting'
import cloneDeep from 'lodash/cloneDeep'
import { PointsTimeRangeEnum, DataSourceTypeEnum } from "@/enums/dataSourceEnum";
// 请求基础属性
export const requestConfig: RequestConfigType = {
@ -47,9 +48,11 @@ export const requestConfig: RequestConfigType = { @@ -47,9 +48,11 @@ export const requestConfig: RequestConfigType = {
// 请求数据源属性
export const requestDataSourceConfig: RequestDataSourceConfig = {
dataSourceType: DataSourceTypeEnum.POINT,
station: '',
devices: [],
device: '',
points: [],
recentTimeRange: PointsTimeRangeEnum.LAST_20,
requestInterval: 5,
requestIntervalUnit: RequestHttpIntervalEnum.SECOND,
}

26
src/store/modules/chartEditStore/chartEditStore.d.ts vendored

@ -1,17 +1,21 @@ @@ -1,17 +1,21 @@
import { CreateComponentType, CreateComponentGroupType, FilterEnum } from '@/packages/index.d'
import { CreateComponentGroupType, CreateComponentType, FilterEnum } from '@/packages/index.d'
import { HistoryActionTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d'
import { SyncEnum } from '@/enums/editPageEnum'
import {
RequestHttpEnum,
RequestBodyEnum,
RequestContentTypeEnum,
RequestDataTypeEnum,
RequestHttpEnum,
RequestHttpIntervalEnum,
RequestParams,
RequestBodyEnum,
RequestParamsObjType
RequestParams
} from '@/enums/httpEnum'
import { PreviewScaleEnum } from '@/enums/styleEnum'
import type { ChartColorsNameType, CustomColorsType, GlobalThemeJsonType } from '@/settings/chartThemes/index'
import type {
ChartColorsNameType,
CustomColorsType,
GlobalThemeJsonType
} from '@/settings/chartThemes/index'
import { DataSourceTypeEnum } from "@/enums/dataSourceEnum";
// 项目数据枚举
export enum ProjectInfoEnum {
@ -22,7 +26,7 @@ export enum ProjectInfoEnum { @@ -22,7 +26,7 @@ export enum ProjectInfoEnum {
// 描述
REMARKS = 'remarks',
// 缩略图
THUMBNAIL= 'thumbnail',
THUMBNAIL = 'thumbnail',
// 是否公开发布
RELEASE = 'release'
}
@ -48,7 +52,7 @@ export enum EditCanvasTypeEnum { @@ -48,7 +52,7 @@ export enum EditCanvasTypeEnum {
IS_CREATE = 'isCreate',
IS_DRAG = 'isDrag',
IS_SELECT = 'isSelect',
IS_CODE_EDIT="isCodeEdit"
IS_CODE_EDIT = "isCodeEdit"
}
// 编辑区域
@ -236,9 +240,11 @@ export interface RequestConfigType extends RequestPublicConfigType { @@ -236,9 +240,11 @@ export interface RequestConfigType extends RequestPublicConfigType {
// 数据源请求配置
export interface RequestDataSourceConfig {
dataSourceType: DataSourceTypeEnum
station: string,
devices: [],
points: [],
device: Array[any],
points: Array[any],
recentTimeRange: number,
requestInterval: number,
requestIntervalUnit: RequestHttpIntervalEnum,
}

2631
src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestDataSourceConfig/data.ts

File diff suppressed because it is too large Load Diff

188
src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestDataSourceConfig/index.vue

@ -1,38 +1,72 @@ @@ -1,38 +1,72 @@
<template>
<setting-item-box
:itemRightStyle="{
gridTemplateColumns: '3fr 3fr 1.5fr'
gridTemplateColumns: '3fr 3fr'
}"
style="padding-right: 25px"
>
<template #name>
数据源
数据源:
</template>
<setting-item name="数据类型">
<n-input-group>
<n-select
v-model:value="targetDataSourceRequest.dataSourceType"
:options="selectDataSourceTypeOptions"
/>
</n-input-group>
</setting-item>
<setting-item name="站点选择">
<n-input-group>
<n-select
v-model:value="targetDataSourceRequest.station"
placeholder="请选择站点"
:options="options"
:options="siteList"
labelField="name"
valueField="id"
@update:value="handleStationChange"
/>
</n-input-group>
</setting-item>
</setting-item-box>
<setting-item name="设备选择">
<setting-item-box
:itemRightStyle="{
gridTemplateColumns: '4.5fr 2.5fr 2fr'
}"
style="padding-right: 25px"
>
<template #name>
数据配置:
</template>
<setting-item name="设备选择" v-if="targetDataSourceRequest.dataSourceType == 'point'">
<n-cascader
v-model:value="targetDataSourceRequest.devices"
v-model:value="targetDataSourceRequest.device"
:cascade="false"
multiple
:multiple="false"
:show-path="false"
placeholder="请选择设备"
max-tag-count="responsive"
expand-trigger="click"
:options="deviceData"
:options="deviceList"
label-field="name"
value-field="id"
@update:value="handleUpdateValue"
value-field="sn"
check-strategy="all"
:leaf-only="false"
@update:value="handleDeviceChange"
/>
</setting-item>
<setting-item name="时间范围">
<n-input-group>
<n-select
v-model:value="targetDataSourceRequest.recentTimeRange"
:options="selectRecentTimeRangeOptions"
/>
</n-input-group>
</setting-item>
<setting-item name="更新间隔,为0只会初始化">
<n-input-group>
<n-input-number
@ -52,16 +86,17 @@ @@ -52,16 +86,17 @@
<setting-item-box
style="padding-right: 25px"
:itemRightStyle="{ gridTemplateColumns: '1fr' }"
v-show="targetDataSourceRequest.dataSourceType == 'point'"
>
<template #name>
点位:
</template>
<n-infinite-scroll style="height: 500px" :distance="10">
<n-infinite-scroll style="height: 428px; overflow: auto" :distance="10">
<n-checkbox-group v-model:value="targetDataSourceRequest.points">
<n-grid :y-gap="8" :cols="3">
<n-gi v-for="point in pointsData">
<n-checkbox :value="point.id" :label="point.nameCn"/>
<n-gi v-for="point in pointList" :key="point.columnName">
<n-checkbox :value="point.columnName" :label="point.nameCn"/>
</n-gi>
</n-grid>
</n-checkbox-group>
@ -71,50 +106,99 @@ @@ -71,50 +106,99 @@
<script setup lang="ts">
import { SettingItem, SettingItemBox } from "@/components/Pages/ChartItemSetting";
import { type PropType } from "vue";
import {
deviceData,
pointsData
} from "@/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestDataSourceConfig/data";
import { NCascader, NInfiniteScroll } from 'naive-ui'
import { computed, onMounted, ref, watch } from "vue";
import { NCascader } from 'naive-ui'
import type { RequestDataSourceConfig } from "@/store/modules/chartEditStore/chartEditStore.d";
import { selectTimeOptions } from '@/views/chart/ContentConfigurations/components/ChartData/index.d'
import {
selectDataSourceTypeOptions,
selectEarningTimeRangeOptions,
selectPointsTimeRangeOptions,
selectTimeOptions
} from '@/views/chart/ContentConfigurations/components/ChartData/index.d'
import { fetchDataDevice, fetchDataPoint, fetchDataSite } from "@/api/path/dataSource";
const props = defineProps<{
targetDataSourceRequest: PropType<RequestDataSourceConfig>
targetDataSourceRequest:RequestDataSourceConfig
}>()
const options = [
{
label: 'Everybody\'s Got Something to Hide Except Me and My Monkey',
value: 'song0',
disabled: true
},
{
label: 'Drive My Car',
value: 'song1'
},
{
label: 'Norwegian Wood',
value: 'song2'
},
{
label: 'You Won\'t See',
value: 'song3',
disabled: true
},
{
label: 'Nowhere Man',
value: 'song4'
},
{
label: 'Think For Yourself',
value: 'song5'
},
{
label: 'The Word',
value: 'song6'
}]
const selectRecentTimeRangeOptions = computed(() => {
console.log('computed')
if (props.targetDataSourceRequest!.dataSourceType === 'point') {
props.targetDataSourceRequest!.recentTimeRange = selectPointsTimeRangeOptions[0].value
return selectPointsTimeRangeOptions
} else if(props.targetDataSourceRequest!.dataSourceType === 'earning') {
props.targetDataSourceRequest!.recentTimeRange = selectEarningTimeRangeOptions[0].value
return selectEarningTimeRangeOptions
}
return []
})
const siteList = ref<any>([])
async function loadSiteData() {
const res = await fetchDataSite()
if (res && res.code === 0 && Array.isArray(res.data)) {
siteList.value = res.data
} else {
window['$message'].error('站点列表数据获取失败!')
}
}
watch(() => props.targetDataSourceRequest.station, (val) => {
val && loadDevicesData()
},{
immediate: true,
})
function handleStationChange() {
props.targetDataSourceRequest.device = ''
}
const deviceList = ref<any>([])
async function loadDevicesData() {
const res = await fetchDataDevice({
siteId: props.targetDataSourceRequest.station
})
if (res && res.code === 0 && Array.isArray(res.data)) {
deviceList.value = res.data
} else {
window['$message'].error('设备列表数据获取失败!')
}
}
watch(() => props.targetDataSourceRequest.device, (val) => {
val && loadPointsData()
},{
immediate: true,
})
function handleDeviceChange () {
props.targetDataSourceRequest.points = []
}
const pointList = ref<any>([])
async function loadPointsData(){
const findDeviceId = deviceList.value.find((device: any) => device.sn ===
props.targetDataSourceRequest.device).id
if (!findDeviceId) {
pointList.value = []
return
}
const res = await fetchDataPoint({
siteId: props.targetDataSourceRequest.station,
entityId: findDeviceId
})
if (res && res.code === 0 && Array.isArray(res.data)) {
pointList.value = res.data
} else {
window['$message'].error('点位列表数据获取失败!')
}
}
onMounted(()=>{
loadSiteData()
})
</script>
<style scoped lang="scss">
.select-time-options {

2
src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataSource/components/data-source-model.vue

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
:onEsc="onEsc"
>
<n-card :bordered="false" role="dialog" size="small" aria-modal="true"
style="width: 1000px; height: 718px">
style="width: 1000px; height: auto; max-height: 718px">
<template #header></template>
<template #header-extra></template>
<n-scrollbar style="max-height: 718px">

49
src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataSource/index.vue

@ -1,20 +1,20 @@ @@ -1,20 +1,20 @@
<template>
<div class="go-chart-configurations-data-source">
<n-card class="n-card-shallow">
<setting-item-box name="站点选择" :alone="true">
<n-input size="small" :placeholder="targetData.requestSource.station || '暂无'"
<setting-item-box name="设备选择" :alone="true">
<n-input size="small" :placeholder="SelectDataSourceTypeNameObj[targetData.requestSource.dataSourceType] || '暂无'"
:disabled="true">
<template #prefix>
<n-icon :component="DataCenterIcon"/>
<n-icon :component="DevicesIcon"/>
</template>
</n-input>
</setting-item-box>
<setting-item-box name="设备选择" :alone="true">
<n-input size="small" :placeholder="!!targetData.requestSource.devices.length || '暂无'"
<setting-item-box name="站点选择" :alone="true">
<n-input size="small" :placeholder="targetData.requestSource.station || '暂无'"
:disabled="true">
<template #prefix>
<n-icon :component="DevicesIcon"/>
<n-icon :component="DataCenterIcon"/>
</template>
</n-input>
</setting-item-box>
@ -65,12 +65,12 @@ import { @@ -65,12 +65,12 @@ import {
import { computed, ref } from "vue";
import { SettingItemBox } from "@/components/Pages/ChartItemSetting";
import { useTargetData } from "../../../hooks/useTargetData.hook";
import { request } from "dom-helpers/animationFrame";
import DataSourceModel from "./components/data-source-model.vue";
import { useDesignStore } from '@/store/modules/designStore/designStore'
import {
ChartDataRequest
} from "@/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/index";
import { SelectDataSourceTypeNameObj } from "@/enums/dataSourceEnum";
import { specialCustomizeHttp } from "@/api/http";
import { newFunctionHandle } from "@/utils";
import { fetchDataByIot } from "@/api/path/dataSource";
const { DataCenterIcon, DevicesIcon, ActivityIcon } = icon.carbon
const { HelpOutlineIcon, FlashIcon } = icon.ionicons5
@ -79,7 +79,7 @@ const { targetData, chartEditStore } = useTargetData() @@ -79,7 +79,7 @@ const { targetData, chartEditStore } = useTargetData()
const loading = ref(false)
const sourceModelShow = ref(false)
const showMatching = ref(false)
function requestSourceModelHandle() {
sourceModelShow.value = true
@ -89,6 +89,33 @@ const designStore = useDesignStore() @@ -89,6 +89,33 @@ const designStore = useDesignStore()
const themeColor = computed(() => {
return designStore.getAppTheme
})
async function sendHandle(){
const requestSource = targetData.value?.requestSource
if (!requestSource) return
loading.value = true
try {
const res = await fetchDataByIot(requestSource)
if (res) {
const { data } = res
if (!data && !targetData.value.filter) {
window['$message'].warning('您的数据不符合默认格式,请配置过滤器!')
showMatching.value = true
return
}
targetData.value.option.dataset = newFunctionHandle(data, res, targetData.value.filter)
showMatching.value = true
return
}
window['$message'].warning('没有拿到返回值,请检查接口!')
}catch (error) {
console.error(error);
loading.value = false
window['$message'].warning('数据异常,请检查参数!')
}
}
</script>
<style scoped lang="scss">

99
src/views/chart/ContentConfigurations/components/ChartData/index.d.ts vendored

@ -1,4 +1,17 @@ @@ -1,4 +1,17 @@
import { RequestHttpEnum, RequestHttpIntervalEnum, RequestDataTypeEnum, SelectHttpTimeNameObj } from '@/enums/httpEnum'
import {
RequestDataTypeEnum,
RequestHttpEnum,
RequestHttpIntervalEnum,
SelectHttpTimeNameObj
} from '@/enums/httpEnum'
import {
DataSourceTypeEnum,
EarningTimeRangeEnum,
EarningTimeRangeNameObj,
PointsTimeRangeEnum,
PointsTimeRangeNameObj,
SelectDataSourceTypeNameObj
} from "@/enums/dataSourceEnum";
// 匹配结果
export enum DataResultEnum {
@ -103,4 +116,88 @@ export const selectTimeOptions: SelectHttpTimeType[] = [ @@ -103,4 +116,88 @@ export const selectTimeOptions: SelectHttpTimeType[] = [
label: SelectHttpTimeNameObj[RequestHttpIntervalEnum.DAY],
value: RequestHttpIntervalEnum.DAY
},
]
// 数据源 数据类型选项
export interface SelectDataSourceType {
label: string
value: RequestHttpIntervalEnum
}
export const selectDataSourceTypeOptions: SelectDataSourceType[] = [
{
label: SelectDataSourceTypeNameObj[DataSourceTypeEnum.POINT],
value: DataSourceTypeEnum.POINT
},
{
label: SelectDataSourceTypeNameObj[DataSourceTypeEnum.EARNING],
value: DataSourceTypeEnum.EARNING
},
]
export const selectPointsTimeRangeOptions: SelectDataSourceType[] = [
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_30],
value: PointsTimeRangeEnum.LAST_30
},
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_25],
value: PointsTimeRangeEnum.LAST_25
},
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_20],
value: PointsTimeRangeEnum.LAST_20
},
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_15],
value: PointsTimeRangeEnum.LAST_15
},
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_5],
value: PointsTimeRangeEnum.LAST_5
},
{
label: PointsTimeRangeNameObj[PointsTimeRangeEnum.LAST_1],
value: PointsTimeRangeEnum.LAST_1
},
]
export const selectEarningTimeRangeOptions: SelectDataSourceType[] = [
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_6h],
value: EarningTimeRangeEnum.LAST_6h
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_12h],
value: EarningTimeRangeEnum.LAST_12h
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_1d],
value: EarningTimeRangeEnum.LAST_1d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_2d],
value: EarningTimeRangeEnum.LAST_2d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_3d],
value: EarningTimeRangeEnum.LAST_3d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_4d],
value: EarningTimeRangeEnum.LAST_4d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_5d],
value: EarningTimeRangeEnum.LAST_5d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_6d],
value: EarningTimeRangeEnum.LAST_6d
},
{
label: EarningTimeRangeNameObj[EarningTimeRangeEnum.LAST_7d],
value: EarningTimeRangeEnum.LAST_7d
}
]
Loading…
Cancel
Save