config.ts 3.52 KB
import { PublicConfigClass } from '@/packages/public'
import { CreateComponentType } from '@/packages/index.d'
import { OverrideMapAmapConfig } from './index'
import { chartInitConfig } from '@/settings/designSetting'
import cloneDeep from 'lodash/cloneDeep'
import dataJson from './data.json'

export type dataExtraInfoType = typeof dataJson.markers[number]['extraInfo'] //data.json下的extraInfo类型

export type dataJsonType = typeof dataJson //data.json类型

export type dataJsonMarkersType = typeof dataJson.markers[number] //data.json markers类型

//标注数据格式
export const filterDevice = (items: any) => {
  const values = items.reduce((acc: any, curr: any) => {
    acc.push({
      name: curr.alias,
      value: 10,
      position: [curr.deviceInfo.longitude, curr.deviceInfo.latitude],
      extraInfo: {
        tbDeviceId: curr.tbDeviceId,
        name: curr.name,
        alias: curr.alias,
        organizationDTO: curr.organizationDTO,
        deviceState: curr.deviceState,
        deviceProfile: curr.deviceProfile,
        deviceProfileId: curr.deviceProfileId,
        deviceInfo: curr.deviceInfo
      }
    })
    return [...acc]
  }, [])
  return {
    markers: values
  }
}

export interface devicePartInfoInterface{
  tbDeviceId:string
  name:string
  alias:string
  deviceProfileId:string
}

export const dimensions= [
  {
    "title": "键",
    "key": "key"
  },
  {
    "title": "值",
    "key": "value"
  },
  {
    "title": "最后更新时间",
    "key": "lastUpdateTime"
  }
]

export  interface sourceInterface {
  key: string
  value: string
  lastUpdateTime: string
}

export enum ThemeEnum {
  NORMAL = 'normal',
  DARK = 'dark',
  LIGHT = 'light',
  WHITES_MOKE = 'whitesmoke',
  FRESH = 'fresh',
  GREY = 'grey',
  GRAFFITI = 'graffiti',
  MACARON = 'macaron',
  BLUE = 'blue',
  DARKBLUE = 'darkblue',
  WINE = 'wine',
  WEIXIN = 'tileLayer'
}

export enum LangEnum {
  ZH_CN = 'zh_cn',
  EN = 'en',
  ZH_EN = 'zh_en'
}

export enum ViewModeEnum {
  PLANE = '2D',
  STEREOSCOPIC = '3D'
}

export enum FeaturesEnum {
  BG = 'bg',
  POINT = 'point',
  ROAD = 'road',
  BUILDING = 'building'
}

export enum MarkerEnum {
  // 圆圈
  CIRCLE_MARKER = 'CircleMarker',
  // 定位标点
  MARKER = 'Marker',
  // 暂无
  NONE = 'none'
}

export const option = {
  dataset: dataJson,
  mapOptions: {
    pitch: 60,
    skyColor: '#53A9DE',
    amapKey: 'd5f3e16589dbecae64d05fe90e2ba4f2',
    amapStyleKey: ThemeEnum.DARK,
    amapStyleKeyCustom: '',
    amapLon: 104.108689,
    amapLat: 30.66176,
    amapZindex: 11,
    iconMarker: '1.png',
    mpBorderConfig: {
      value: 'Border01'
    },
    bgColor: 'rgba(255, 255, 255, 0.05)',
    marker: {
      fillColor: '#E98984FF',
      fillOpacity: 0.5,
      strokeColor: 'white',
      strokeWeight: 2,
      strokeOpacity: 0.5,
      zIndex: 10,
      bubble: true,
      cursor: 'pointer',
      clickable: true
    },
    mapMarkerType: MarkerEnum.MARKER,
    viewMode: ViewModeEnum.PLANE,
    lang: LangEnum.ZH_CN,
    features: [FeaturesEnum.BG, FeaturesEnum.POINT, FeaturesEnum.ROAD, FeaturesEnum.BUILDING],
  },
  // 自定义配置项
  dialogCustomField: false, // 弹窗内的label是否自定义
  dialogConfigField: [{
    label:'',
    value:'',
    realValue:''
  }] // 弹窗内配置字段
}

export default class Config extends PublicConfigClass implements CreateComponentType {
  public key = OverrideMapAmapConfig.key
  public attr = { ...chartInitConfig, w: 1000, h: 800, zIndex: -1 }
  public chartConfig = cloneDeep(OverrideMapAmapConfig)
  public option = cloneDeep(option)
}