Commit 7b1bbc8c5f09a972013bc9aad4442c50dfe29b8d

Authored by ww
1 parent 9156c53a

refactor: visual board component config

src/views/visual/board/components/ControlComponent/ToggleSwitch.vue renamed from src/views/visual/board/components/Other/ToggleSwitch.vue
1 <script lang="ts" setup> 1 <script lang="ts" setup>
  2 + import { RadioRecord } from '../../detail/config/util';
  3 +
2 const props = defineProps<{ 4 const props = defineProps<{
3 value?: boolean; 5 value?: boolean;
  6 + layout?: Recordable;
  7 + radio?: RadioRecord;
4 }>(); 8 }>();
5 9
6 const emit = defineEmits(['update:value', 'change']); 10 const emit = defineEmits(['update:value', 'change']);
@@ -76,12 +80,12 @@ @@ -76,12 +80,12 @@
76 transform-origin: center center -20px; 80 transform-origin: center center -20px;
77 transform: translateZ(20px) rotateX(-25deg); 81 transform: translateZ(20px) rotateX(-25deg);
78 transform-style: preserve-3d; 82 transform-style: preserve-3d;
79 - background-color: #9b0621;  
80 width: 100%; 83 width: 100%;
81 height: 100%; 84 height: 100%;
82 position: relative; 85 position: relative;
83 cursor: pointer; 86 cursor: pointer;
84 background: linear-gradient(#980000 0%, #6f0000 30%, #6f0000 70%, #980000 100%); 87 background: linear-gradient(#980000 0%, #6f0000 30%, #6f0000 70%, #980000 100%);
  88 + background-color: #9b0621;
85 background-repeat: no-repeat; 89 background-repeat: no-repeat;
86 } 90 }
87 91
@@ -113,7 +117,7 @@ @@ -113,7 +117,7 @@
113 transform: translateY(30px) rotateX(-90deg); 117 transform: translateY(30px) rotateX(-90deg);
114 position: absolute; 118 position: absolute;
115 bottom: 0; 119 bottom: 0;
116 - box-shadow: 0 30px 8px 0px black, 0 60px 20px 0px rgb(0 0 0 / 50%); 120 + box-shadow: 0 30px 8px 0 black, 0 60px 20px 0 rgb(0 0 0 / 50%);
117 } 121 }
118 122
119 .switch .light { 123 .switch .light {
  1 +export interface ToggleSwitchValue {
  2 + value?: boolean;
  3 +}
  4 +
  5 +export const transform = () => {};
@@ -102,11 +102,6 @@ @@ -102,11 +102,6 @@
102 102
103 watch(() => props.value, updateChartValue); 103 watch(() => props.value, updateChartValue);
104 104
105 - // watch(  
106 - // () => [props.value.gradientInfo, props.value.unit, props.value.valueColor, props.value.name],  
107 - // updateChartValue  
108 - // );  
109 -  
110 const updateChartFont = useThrottleFn(() => { 105 const updateChartFont = useThrottleFn(() => {
111 const option = beforeUpdateFn(props.layout.componentType); 106 const option = beforeUpdateFn(props.layout.componentType);
112 setTimeout(() => { 107 setTimeout(() => {
@@ -123,8 +118,6 @@ @@ -123,8 +118,6 @@
123 118
124 watch(() => props.layout.componentType, updateChartType); 119 watch(() => props.layout.componentType, updateChartType);
125 120
126 - // watch(() => props.value.gradientInfo, updateChartType);  
127 -  
128 let timeout: Nullable<number> = null; 121 let timeout: Nullable<number> = null;
129 122
130 function handleRandomValue() { 123 function handleRandomValue() {
1 import { EChartsOption } from 'echarts'; 1 import { EChartsOption } from 'echarts';
  2 +import { FrontComponent } from '../help';
2 import { fontSize, RadioRecord } from '../../detail/config/util'; 3 import { fontSize, RadioRecord } from '../../detail/config/util';
3 import { Gradient, visualOptionField } from '../../detail/config/visualOptions'; 4 import { Gradient, visualOptionField } from '../../detail/config/visualOptions';
4 import { 5 import {
@@ -10,8 +11,6 @@ import { @@ -10,8 +11,6 @@ import {
10 import { isArray } from '/@/utils/is'; 11 import { isArray } from '/@/utils/is';
11 import { buildUUID } from '/@/utils/uuid'; 12 import { buildUUID } from '/@/utils/uuid';
12 13
13 -export type InstrumentComponentType = 'instrument-component-1' | 'instrument-component-2';  
14 -  
15 export type GradientKey = 14 export type GradientKey =
16 | visualOptionField.FIRST_PHASE_COLOR 15 | visualOptionField.FIRST_PHASE_COLOR
17 | visualOptionField.FIRST_PHASE_VALUE 16 | visualOptionField.FIRST_PHASE_VALUE
@@ -38,7 +37,7 @@ export interface DashBoardValue { @@ -38,7 +37,7 @@ export interface DashBoardValue {
38 37
39 export interface DashboardComponentLayout { 38 export interface DashboardComponentLayout {
40 chartOption: EChartsOption; 39 chartOption: EChartsOption;
41 - componentType: InstrumentComponentType; 40 + componentType: FrontComponent;
42 } 41 }
43 42
44 export enum GradientColor { 43 export enum GradientColor {
1 import { ComponentInfo } from '/@/api/dataBoard/model'; 1 import { ComponentInfo } from '/@/api/dataBoard/model';
2 2
3 -export type DigitalDashBoardComponentType = 'digital-dashboard-component';  
4 -  
5 export interface DigitalDashBoardLayout { 3 export interface DigitalDashBoardLayout {
6 max: number; 4 max: number;
7 keepNumber: number; 5 keepNumber: number;
1 import { DataComponentRecord, DataSource } from '/@/api/dataBoard/model'; 1 import { DataComponentRecord, DataSource } from '/@/api/dataBoard/model';
2 2
3 -export type PictureComponentType = 'picture-component-1';  
4 -  
5 -export interface PictureComponentLayout {}  
6 -  
7 export interface PictureComponentValue { 3 export interface PictureComponentValue {
8 value?: string; 4 value?: string;
9 updateTime?: string; 5 updateTime?: string;
10 } 6 }
11 7
12 export const transformPictureConfig = ( 8 export const transformPictureConfig = (
13 - config: PictureComponentLayout,  
14 - record: DataComponentRecord, 9 + _config: Recordable,
  10 + _record: DataComponentRecord,
15 dataSourceRecord: DataSource 11 dataSourceRecord: DataSource
16 ) => { 12 ) => {
17 const componentInfo = dataSourceRecord.componentInfo; 13 const componentInfo = dataSourceRecord.componentInfo;
@@ -18,12 +18,6 @@ export interface TextComponentValue { @@ -18,12 +18,6 @@ export interface TextComponentValue {
18 deviceName?: string; 18 deviceName?: string;
19 } 19 }
20 20
21 -export type TextComponentType =  
22 - | 'text-component-1'  
23 - | 'text-component-3'  
24 - | 'text-component-4'  
25 - | 'text-component-5';  
26 -  
27 type TextComponentDefault = TextComponentLayout; 21 type TextComponentDefault = TextComponentLayout;
28 22
29 export const TextComponent1Config: TextComponentDefault = { 23 export const TextComponent1Config: TextComponentDefault = {
src/views/visual/board/components/help.ts renamed from src/views/visual/board/detail/config/help.ts
1 import { Component } from 'vue'; 1 import { Component } from 'vue';
2 -import TextComponent from '../../components/TextComponent/TextComponent.vue'; 2 +import TextComponent from './TextComponent/TextComponent.vue';
3 import { 3 import {
4 TextComponent1Config, 4 TextComponent1Config,
5 TextComponent3Config, 5 TextComponent3Config,
@@ -7,12 +7,11 @@ import { @@ -7,12 +7,11 @@ import {
7 TextComponent5Config, 7 TextComponent5Config,
8 TextComponentDefaultConfig, 8 TextComponentDefaultConfig,
9 transformTextComponentConfig, 9 transformTextComponentConfig,
10 -} from '../../components/TextComponent/config'; 10 +} from './TextComponent/config';
11 import { ComponentInfo, DataComponentRecord, DataSource } from '/@/api/dataBoard/model'; 11 import { ComponentInfo, DataComponentRecord, DataSource } from '/@/api/dataBoard/model';
12 -import DashBoardComponent from '../../components/InstrumentComponent/DashBoardComponent.vue';  
13 -import PictureComponent from '../../components/PictureComponent/PictureComponent.vue';  
14 -import { transformPictureConfig } from '../../components/PictureComponent/pictureComponent.config';  
15 -import { WidgetComponentType } from './visualOptions'; 12 +import DashBoardComponent from './InstrumentComponent/DashBoardComponent.vue';
  13 +import PictureComponent from './PictureComponent/PictureComponent.vue';
  14 +import { transformPictureConfig } from './PictureComponent/pictureComponent.config';
16 import { 15 import {
17 DashboardComponentLayout, 16 DashboardComponentLayout,
18 Instrument1DefaultConfig, 17 Instrument1DefaultConfig,
@@ -20,9 +19,10 @@ import { @@ -20,9 +19,10 @@ import {
20 instrumentComponent1, 19 instrumentComponent1,
21 instrumentComponent2, 20 instrumentComponent2,
22 transformDashboardComponentConfig, 21 transformDashboardComponentConfig,
23 -} from '../../components/InstrumentComponent/dashBoardComponent.config';  
24 -import DigitalDashBoard from '../../components/InstrumentComponent/DigitalDashBoard.vue';  
25 -import { DigitalComponentDefaultConfig } from '../../components/InstrumentComponent/digitalDashBoard.config'; 22 +} from './InstrumentComponent/dashBoardComponent.config';
  23 +import DigitalDashBoard from './InstrumentComponent/DigitalDashBoard.vue';
  24 +import { DigitalComponentDefaultConfig } from './InstrumentComponent/digitalDashBoard.config';
  25 +import ToggleSwitch from './ControlComponent/ToggleSwitch.vue';
26 26
27 export enum FrontComponentCategory { 27 export enum FrontComponentCategory {
28 TEXT = 'text', 28 TEXT = 'text',
@@ -32,13 +32,13 @@ export enum FrontComponentCategory { @@ -32,13 +32,13 @@ export enum FrontComponentCategory {
32 MAP = 'map', 32 MAP = 'map',
33 } 33 }
34 34
35 -export enum FrontComponentCategoryName {  
36 - text = '文本组件',  
37 - picture = '图片组件',  
38 - instrument = '仪表组件',  
39 - control = '控制组件',  
40 - map = '地图组件',  
41 -} 35 +export const FrontComponentCategoryName = {
  36 + [FrontComponentCategory.TEXT]: '文本组件',
  37 + [FrontComponentCategory.INSTRUMENT]: '仪表组件',
  38 + [FrontComponentCategory.CONTROL]: '控制组件',
  39 + [FrontComponentCategory.PICTURE]: '图片组件',
  40 + [FrontComponentCategory.MAP]: '地图组件',
  41 +};
42 42
43 export enum FrontComponent { 43 export enum FrontComponent {
44 TEXT_COMPONENT_1 = 'text-component-1', 44 TEXT_COMPONENT_1 = 'text-component-1',
@@ -50,6 +50,7 @@ export enum FrontComponent { @@ -50,6 +50,7 @@ export enum FrontComponent {
50 INSTRUMENT_COMPONENT_2 = 'instrument-component-2', 50 INSTRUMENT_COMPONENT_2 = 'instrument-component-2',
51 DIGITAL_DASHBOARD_COMPONENT = 'digital-dashboard-component', 51 DIGITAL_DASHBOARD_COMPONENT = 'digital-dashboard-component',
52 PICTURE_COMPONENT_1 = 'picture-component-1', 52 PICTURE_COMPONENT_1 = 'picture-component-1',
  53 + CONTROL_COMPONENT_TOGGLE_SWITCH = 'control-component-toggle-switch',
53 } 54 }
54 55
55 export interface ComponentConfig { 56 export interface ComponentConfig {
@@ -64,12 +65,9 @@ export interface ComponentConfig { @@ -64,12 +65,9 @@ export interface ComponentConfig {
64 ) => Recordable; 65 ) => Recordable;
65 } 66 }
66 67
67 -export const frontComponentDefaultConfigMap = new Map<  
68 - WidgetComponentType,  
69 - Partial<ComponentInfo>  
70 ->(); 68 +export const frontComponentDefaultConfigMap = new Map<FrontComponent, Partial<ComponentInfo>>();
71 69
72 -export const frontComponentMap = new Map<WidgetComponentType, ComponentConfig>(); 70 +export const frontComponentMap = new Map<FrontComponent, ComponentConfig>();
73 71
74 frontComponentMap.set(FrontComponent.TEXT_COMPONENT_1, { 72 frontComponentMap.set(FrontComponent.TEXT_COMPONENT_1, {
75 Component: TextComponent, 73 Component: TextComponent,
@@ -139,6 +137,12 @@ frontComponentMap.set(FrontComponent.PICTURE_COMPONENT_1, { @@ -139,6 +137,12 @@ frontComponentMap.set(FrontComponent.PICTURE_COMPONENT_1, {
139 transformConfig: transformPictureConfig, 137 transformConfig: transformPictureConfig,
140 }); 138 });
141 139
  140 +frontComponentMap.set(FrontComponent.CONTROL_COMPONENT_TOGGLE_SWITCH, {
  141 + Component: ToggleSwitch,
  142 + ComponentKey: FrontComponent.CONTROL_COMPONENT_TOGGLE_SWITCH,
  143 + transformConfig: () => {},
  144 +});
  145 +
142 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_1, TextComponentDefaultConfig); 146 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_1, TextComponentDefaultConfig);
143 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_3, TextComponentDefaultConfig); 147 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_3, TextComponentDefaultConfig);
144 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_4, TextComponentDefaultConfig); 148 frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_4, TextComponentDefaultConfig);
@@ -152,6 +156,6 @@ frontComponentDefaultConfigMap.set( @@ -152,6 +156,6 @@ frontComponentDefaultConfigMap.set(
152 DigitalComponentDefaultConfig 156 DigitalComponentDefaultConfig
153 ); 157 );
154 158
155 -export const getComponentDefaultConfig = (key: WidgetComponentType) => { 159 +export const getComponentDefaultConfig = (key: FrontComponent) => {
156 return frontComponentDefaultConfigMap.get(key) || {}; 160 return frontComponentDefaultConfigMap.get(key) || {};
157 }; 161 };
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 import type { ComponentInfo, DataSource } from '/@/api/dataBoard/model'; 11 import type { ComponentInfo, DataSource } from '/@/api/dataBoard/model';
12 import { useMessage } from '/@/hooks/web/useMessage'; 12 import { useMessage } from '/@/hooks/web/useMessage';
13 import { DataBoardLayoutInfo } from '../../types/type'; 13 import { DataBoardLayoutInfo } from '../../types/type';
14 - import { FrontComponent } from '../config/help'; 14 + import { FrontComponent } from '../../components/help';
15 import { computed } from '@vue/reactivity'; 15 import { computed } from '@vue/reactivity';
16 16
17 type DataSourceFormEL = { [key: string]: Nullable<FormActionType> }; 17 type DataSourceFormEL = { [key: string]: Nullable<FormActionType> };
@@ -112,8 +112,6 @@ @@ -112,8 +112,6 @@
112 return; 112 return;
113 } 113 }
114 114
115 - // const defaultConfig = getComponentDefaultConfig(props.frontId as WidgetComponentType);  
116 -  
117 const componentInfo: ComponentInfo = { 115 const componentInfo: ComponentInfo = {
118 ...(props.defaultConfig || {}), 116 ...(props.defaultConfig || {}),
119 ...(item.componentInfo || {}), 117 ...(item.componentInfo || {}),
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 import { decode } from '../../config/config'; 12 import { decode } from '../../config/config';
13 import { ComponentInfo } from '/@/api/dataBoard/model'; 13 import { ComponentInfo } from '/@/api/dataBoard/model';
14 import { useCalcGridLayout } from '../../hook/useCalcGridLayout'; 14 import { useCalcGridLayout } from '../../hook/useCalcGridLayout';
15 - import { FrontComponent } from '../config/help'; 15 + import { FrontComponent } from '../../components/help';
16 16
17 interface DataComponentRouteParams extends RouteParams { 17 interface DataComponentRouteParams extends RouteParams {
18 id: string; 18 id: string;
@@ -2,12 +2,12 @@ @@ -2,12 +2,12 @@
2 import { Tabs, List } from 'ant-design-vue'; 2 import { Tabs, List } from 'ant-design-vue';
3 import VisualWidgetSelect from './VisualWidgetSelect.vue'; 3 import VisualWidgetSelect from './VisualWidgetSelect.vue';
4 import { 4 import {
  5 + FrontComponent,
5 FrontComponentCategory, 6 FrontComponentCategory,
6 FrontComponentCategoryName, 7 FrontComponentCategoryName,
7 getComponentDefaultConfig, 8 getComponentDefaultConfig,
8 - } from '../config/help';  
9 - import { WidgetComponentType } from '../config/visualOptions';  
10 - import { frontComponentMap } from '../config/help'; 9 + } from '../../components/help';
  10 + import { frontComponentMap } from '../../components/help';
11 import { computed } from 'vue'; 11 import { computed } from 'vue';
12 12
13 interface DataSource { 13 interface DataSource {
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 return Array.from(category.values()); 40 return Array.from(category.values());
41 }); 41 });
42 42
43 - const handleCheck = (checked: WidgetComponentType) => { 43 + const handleCheck = (checked: FrontComponent) => {
44 const defaultConfig = getComponentDefaultConfig(checked); 44 const defaultConfig = getComponentDefaultConfig(checked);
45 emit('update:value', checked); 45 emit('update:value', checked);
46 emit('change', defaultConfig); 46 emit('change', defaultConfig);
1 <script lang="ts" setup> 1 <script lang="ts" setup>
2 import { ref, unref } from 'vue'; 2 import { ref, unref } from 'vue';
3 import { 3 import {
4 - WidgetComponentType,  
5 schemasMap, 4 schemasMap,
6 VisualOptionParams, 5 VisualOptionParams,
7 visualOptionField, 6 visualOptionField,
@@ -11,6 +10,7 @@ @@ -11,6 +10,7 @@
11 import { BasicModal, useModalInner } from '/@/components/Modal'; 10 import { BasicModal, useModalInner } from '/@/components/Modal';
12 import { ComponentInfo } from '/@/api/dataBoard/model'; 11 import { ComponentInfo } from '/@/api/dataBoard/model';
13 import { computed } from '@vue/reactivity'; 12 import { computed } from '@vue/reactivity';
  13 + import { FrontComponent } from '../../components/help';
14 14
15 const emit = defineEmits(['close', 'register']); 15 const emit = defineEmits(['close', 'register']);
16 16
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 const recordId = ref(''); 21 const recordId = ref('');
22 22
23 const getSchemas = computed(() => { 23 const getSchemas = computed(() => {
24 - return schemasMap.get((props.value as WidgetComponentType) || 'text-component-1'); 24 + return schemasMap.get((props.value as FrontComponent) || 'text-component-1');
25 }); 25 });
26 26
27 const [registerForm, method] = useForm({ 27 const [registerForm, method] = useForm({
1 -import { InstrumentComponentType } from '../../components/InstrumentComponent/dashBoardComponent.config';  
2 -import { DigitalDashBoardComponentType } from '../../components/InstrumentComponent/digitalDashBoard.config';  
3 -import { PictureComponentType } from '../../components/PictureComponent/pictureComponent.config';  
4 -import { TextComponentType } from '../../components/TextComponent/config';  
5 import { FormSchema } from '/@/components/Form'; 1 import { FormSchema } from '/@/components/Form';
6 2
7 -export type WidgetComponentType =  
8 - | TextComponentType  
9 - | InstrumentComponentType  
10 - | DigitalDashBoardComponentType  
11 - | PictureComponentType;  
12 -  
13 export interface VisualOptionParams { 3 export interface VisualOptionParams {
14 [visualOptionField.FONT_COLOR]: string; 4 [visualOptionField.FONT_COLOR]: string;
15 [visualOptionField.UNIT]: string; 5 [visualOptionField.UNIT]: string;
@@ -198,7 +188,7 @@ export const modeFour: FormSchema[] = [ @@ -198,7 +188,7 @@ export const modeFour: FormSchema[] = [
198 }, 188 },
199 ]; 189 ];
200 190
201 -export const schemasMap = new Map<WidgetComponentType, FormSchema[]>(); 191 +export const schemasMap = new Map<string, FormSchema[]>();
202 192
203 schemasMap.set('text-component-1', modeOne); 193 schemasMap.set('text-component-1', modeOne);
204 schemasMap.set('text-component-2', modeOne); 194 schemasMap.set('text-component-2', modeOne);
@@ -33,11 +33,10 @@ @@ -33,11 +33,10 @@
33 DataSource, 33 DataSource,
34 Layout, 34 Layout,
35 } from '/@/api/dataBoard/model'; 35 } from '/@/api/dataBoard/model';
36 - import { frontComponentMap } from './config/help'; 36 + import { frontComponentMap } from '../components/help';
37 import { calcScale } from './config/util'; 37 import { calcScale } from './config/util';
38 import { useMessage } from '/@/hooks/web/useMessage'; 38 import { useMessage } from '/@/hooks/web/useMessage';
39 import { DataBoardLayoutInfo } from '../types/type'; 39 import { DataBoardLayoutInfo } from '../types/type';
40 - import { WidgetComponentType } from './config/visualOptions';  
41 import Authority from '/@/components/Authority/src/Authority.vue'; 40 import Authority from '/@/components/Authority/src/Authority.vue';
42 import { useSocketConnect } from '../hook/useSocketConnect'; 41 import { useSocketConnect } from '../hook/useSocketConnect';
43 import { buildUUID } from '/@/utils/uuid'; 42 import { buildUUID } from '/@/utils/uuid';
@@ -45,6 +44,7 @@ @@ -45,6 +44,7 @@
45 import trendIcon from '/@/assets/svg/trend.svg'; 44 import trendIcon from '/@/assets/svg/trend.svg';
46 import backIcon from '/@/assets/images/back.png'; 45 import backIcon from '/@/assets/images/back.png';
47 import { useCalcGridLayout } from '../hook/useCalcGridLayout'; 46 import { useCalcGridLayout } from '../hook/useCalcGridLayout';
  47 + import { FrontComponent } from '../components/help';
48 48
49 const ROUTE = useRoute(); 49 const ROUTE = useRoute();
50 50
@@ -299,7 +299,7 @@ @@ -299,7 +299,7 @@
299 299
300 const getComponent = (record: DataComponentRecord) => { 300 const getComponent = (record: DataComponentRecord) => {
301 const frontComponent = record.frontId; 301 const frontComponent = record.frontId;
302 - const component = frontComponentMap.get(frontComponent as WidgetComponentType); 302 + const component = frontComponentMap.get(frontComponent as FrontComponent);
303 return component?.Component; 303 return component?.Component;
304 }; 304 };
305 305
@@ -308,7 +308,7 @@ @@ -308,7 +308,7 @@
308 dataSourceRecord: DataSource 308 dataSourceRecord: DataSource
309 ) => { 309 ) => {
310 const frontComponent = record.frontId; 310 const frontComponent = record.frontId;
311 - const component = frontComponentMap.get(frontComponent as WidgetComponentType); 311 + const component = frontComponentMap.get(frontComponent as FrontComponent);
312 return component?.transformConfig(component.ComponentConfig || {}, record, dataSourceRecord); 312 return component?.transformConfig(component.ComponentConfig || {}, record, dataSourceRecord);
313 }; 313 };
314 314