index.d.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import type { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  2. import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d'
  3. export enum ChartFrameEnum {
  4. // 支持 dataset 的 echarts 框架
  5. ECHARTS = 'echarts',
  6. // UI 组件框架
  7. NAIVE_UI = 'naiveUI',
  8. // 自定义带数据组件
  9. COMMON = 'common',
  10. // 无数据变更
  11. STATIC = 'static'
  12. }
  13. // 组件配置
  14. export type ConfigType = {
  15. key: string
  16. chartKey: string
  17. conKey: string
  18. title: string
  19. category: string
  20. categoryName: string
  21. package: string
  22. chartFrame?: ChartFrameEnum
  23. image: string | (() => Promise<typeof import('*.png')>)
  24. }
  25. // 数据请求
  26. interface requestConfig {
  27. request: RequestConfigType
  28. }
  29. // Echarts 数据类型
  30. interface EchartsDataType {
  31. dimensions: string[]
  32. source: any[]
  33. }
  34. // 组件状态
  35. export interface StatusType {
  36. lock: boolean
  37. hide: boolean
  38. }
  39. // 滤镜/变换枚举
  40. export enum FilterEnum {
  41. // 是否启用
  42. FILTERS_SHOW = 'filterShow',
  43. // 透明度
  44. OPACITY = 'opacity',
  45. // 饱和度
  46. SATURATE = 'saturate',
  47. // 对比度
  48. CONTRAST = 'contrast',
  49. // 色相
  50. HUE_ROTATE = 'hueRotate',
  51. // 亮度
  52. BRIGHTNESS = 'brightness',
  53. // 旋转
  54. ROTATE_Z = 'rotateZ',
  55. ROTATE_X = 'rotateX',
  56. ROTATE_Y = 'rotateY',
  57. // 倾斜
  58. SKEW_X = 'skewX',
  59. SKEW_Y = 'skewY',
  60. // 混合模式
  61. BLEND_MODE = 'blendMode'
  62. }
  63. export const BlendModeEnumList = [
  64. { label: '正常', value: 'normal' },
  65. { label: '正片叠底', value: 'multiply' },
  66. { label: '叠加', value: 'overlay' },
  67. { label: '滤色', value: 'screen' },
  68. { label: '变暗', value: 'darken' },
  69. { label: '变亮', value: 'lighten' },
  70. { label: '颜色减淡', value: 'color-dodge' },
  71. { label: '颜色加深', value: 'color-burn;' },
  72. { label: '强光', value: 'hard-light' },
  73. { label: '柔光', value: 'soft-light' },
  74. { label: '差值', value: 'difference' },
  75. { label: '排除', value: 'exclusion' },
  76. { label: '色相', value: 'hue' },
  77. { label: '饱和度', value: 'saturation' },
  78. { label: '颜色', value: 'color' },
  79. { label: '亮度', value: 'luminosity' }
  80. ]
  81. // 组件实例类
  82. export interface PublicConfigType {
  83. id: string
  84. isGroup: boolean
  85. attr: { x: number; y: number; w: number; h: number; zIndex: number; offsetX: number; offsetY: number }
  86. styles: {
  87. [FilterEnum.FILTERS_SHOW]: boolean
  88. [FilterEnum.OPACITY]: number
  89. [FilterEnum.SATURATE]: number
  90. [FilterEnum.CONTRAST]: number
  91. [FilterEnum.HUE_ROTATE]: number
  92. [FilterEnum.BRIGHTNESS]: number
  93. [FilterEnum.ROTATE_Z]: number
  94. [FilterEnum.ROTATE_X]: number
  95. [FilterEnum.ROTATE_Y]: number
  96. [FilterEnum.SKEW_X]: number
  97. [FilterEnum.SKEW_Y]: number
  98. [FilterEnum.BLEND_MODE]: string
  99. // 动画
  100. animations: string[]
  101. }
  102. filter?: string
  103. status: StatusType
  104. events?: {
  105. [K in EventLife]?: string
  106. }
  107. }
  108. // vue3 生命周期事件
  109. export enum EventLife {
  110. BEFORE_MOUNT = 'vnodeBeforeMount',
  111. MOUNTED = 'vnodeMounted'
  112. }
  113. export interface CreateComponentType extends PublicConfigType, requestConfig {
  114. key: string
  115. chartConfig: ConfigType
  116. option: GlobalThemeJsonType,
  117. }
  118. // 组件成组实例类
  119. export interface CreateComponentGroupType extends CreateComponentType {
  120. groupList: Array<CreateComponentType>
  121. }
  122. // 获取组件实例类中某个key对应value类型的方法
  123. export type PickCreateComponentType<T extends keyof CreateComponentType> = Pick<CreateComponentType, T>[T]
  124. // 包分类枚举
  125. export enum PackagesCategoryEnum {
  126. CHARTS = 'Charts',
  127. TABLES = 'Tables',
  128. INFORMATIONS = 'Informations',
  129. DECORATES = 'Decorates'
  130. }
  131. // 包分类名称
  132. export enum PackagesCategoryName {
  133. CHARTS = '图表',
  134. TABLES = '列表',
  135. INFORMATIONS = '信息',
  136. DECORATES = '小组件'
  137. }
  138. // 获取组件
  139. export enum FetchComFlagType {
  140. VIEW,
  141. CONFIG
  142. }
  143. // 图表包类型
  144. export type PackagesType = {
  145. [PackagesCategoryEnum.CHARTS]: ConfigType[]
  146. [PackagesCategoryEnum.INFORMATIONS]: ConfigType[]
  147. [PackagesCategoryEnum.TABLES]: ConfigType[]
  148. [PackagesCategoryEnum.DECORATES]: ConfigType[]
  149. }