Commit b32ed69207d88a182f3c434c6125b3a8c1c46f49
1 parent
07d502bc
perf: data board component data source default config
Showing
3 changed files
with
27 additions
and
9 deletions
| ... | ... | @@ -11,9 +11,8 @@ |
| 11 | 11 | import type { ComponentInfo, DataSource } from '/@/api/dataBoard/model'; |
| 12 | 12 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 13 | 13 | import { DataBoardLayoutInfo } from '../../types/type'; |
| 14 | - import { FrontComponent, getComponentDefaultConfig } from '../config/help'; | |
| 14 | + import { FrontComponent } from '../config/help'; | |
| 15 | 15 | import { computed } from '@vue/reactivity'; |
| 16 | - import { WidgetComponentType } from '../config/visualOptions'; | |
| 17 | 16 | |
| 18 | 17 | type DataSourceFormEL = { [key: string]: Nullable<FormActionType> }; |
| 19 | 18 | |
| ... | ... | @@ -22,6 +21,7 @@ |
| 22 | 21 | const props = defineProps<{ |
| 23 | 22 | record: DataBoardLayoutInfo; |
| 24 | 23 | frontId?: string; |
| 24 | + defaultConfig?: Partial<ComponentInfo>; | |
| 25 | 25 | }>(); |
| 26 | 26 | |
| 27 | 27 | const { createMessage } = useMessage(); |
| ... | ... | @@ -30,7 +30,9 @@ |
| 30 | 30 | // ...props.record, |
| 31 | 31 | // } as unknown as DataBoardLayoutInfo); |
| 32 | 32 | |
| 33 | - const dataSource = ref<DataSourceEl[]>([{ id: buildUUID() } as unknown as DataSourceEl]); | |
| 33 | + const dataSource = ref<DataSourceEl[]>([ | |
| 34 | + { id: buildUUID(), componentInfo: props.defaultConfig || {} } as unknown as DataSourceEl, | |
| 35 | + ]); | |
| 34 | 36 | |
| 35 | 37 | const [basicRegister, basicMethod] = useForm({ |
| 36 | 38 | schemas: basicSchema, |
| ... | ... | @@ -66,7 +68,7 @@ |
| 66 | 68 | const componentInfo = unref(dataSource)[index].componentInfo || {}; |
| 67 | 69 | _dataSource.push({ |
| 68 | 70 | ...value, |
| 69 | - componentInfo: { ...componentInfo }, | |
| 71 | + componentInfo: { ...(props.defaultConfig || {}), ...componentInfo }, | |
| 70 | 72 | }); |
| 71 | 73 | } |
| 72 | 74 | return _dataSource; |
| ... | ... | @@ -98,9 +100,12 @@ |
| 98 | 100 | return; |
| 99 | 101 | } |
| 100 | 102 | |
| 101 | - const defaultConfig = getComponentDefaultConfig(props.frontId as WidgetComponentType); | |
| 103 | + // const defaultConfig = getComponentDefaultConfig(props.frontId as WidgetComponentType); | |
| 102 | 104 | |
| 103 | - const componentInfo: ComponentInfo = { ...defaultConfig, ...(item.componentInfo || {}) }; | |
| 105 | + const componentInfo: ComponentInfo = { | |
| 106 | + ...(props.defaultConfig || {}), | |
| 107 | + ...(item.componentInfo || {}), | |
| 108 | + }; | |
| 104 | 109 | |
| 105 | 110 | openModal(true, { |
| 106 | 111 | recordId: item.id, |
| ... | ... | @@ -117,6 +122,7 @@ |
| 117 | 122 | const handleAdd = () => { |
| 118 | 123 | unref(dataSource).push({ |
| 119 | 124 | id: buildUUID(), |
| 125 | + componentInfo: props.defaultConfig || {}, | |
| 120 | 126 | } as unknown as DataSourceEl); |
| 121 | 127 | }; |
| 122 | 128 | ... | ... |
| ... | ... | @@ -10,6 +10,7 @@ |
| 10 | 10 | import { DataBoardLayoutInfo } from '../../types/type'; |
| 11 | 11 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 12 | 12 | import { decode } from '../../config/config'; |
| 13 | + import { ComponentInfo } from '/@/api/dataBoard/model'; | |
| 13 | 14 | |
| 14 | 15 | interface DataComponentRouteParams extends RouteParams { |
| 15 | 16 | id: string; |
| ... | ... | @@ -31,6 +32,8 @@ |
| 31 | 32 | |
| 32 | 33 | const componentRecord = ref<DataBoardLayoutInfo>({} as unknown as DataBoardLayoutInfo); |
| 33 | 34 | |
| 35 | + const componentDefaultConfig = ref<Partial<ComponentInfo>>({}); | |
| 36 | + | |
| 34 | 37 | const [register, { closeModal, changeOkLoading }] = useModalInner( |
| 35 | 38 | (data: { isEdit: boolean; record?: DataBoardLayoutInfo }) => { |
| 36 | 39 | componentRecord.value = data.record || ({} as unknown as DataBoardLayoutInfo); |
| ... | ... | @@ -94,6 +97,10 @@ |
| 94 | 97 | changeOkLoading(false); |
| 95 | 98 | } |
| 96 | 99 | }; |
| 100 | + | |
| 101 | + const handleComponentCheckedChange = (record: ComponentInfo) => { | |
| 102 | + componentDefaultConfig.value = record; | |
| 103 | + }; | |
| 97 | 104 | </script> |
| 98 | 105 | |
| 99 | 106 | <template> |
| ... | ... | @@ -112,10 +119,11 @@ |
| 112 | 119 | ref="basicConfigurationEl" |
| 113 | 120 | :front-id="frontId" |
| 114 | 121 | :record="componentRecord" |
| 122 | + :defaultConfig="componentDefaultConfig" | |
| 115 | 123 | /> |
| 116 | 124 | </Tabs.TabPane> |
| 117 | 125 | <Tabs.TabPane key="2" tab="可视化配置"> |
| 118 | - <VisualConfiguration v-model:value="frontId" /> | |
| 126 | + <VisualConfiguration v-model:value="frontId" @change="handleComponentCheckedChange" /> | |
| 119 | 127 | </Tabs.TabPane> |
| 120 | 128 | </Tabs> |
| 121 | 129 | </section> | ... | ... |
| ... | ... | @@ -5,15 +5,19 @@ |
| 5 | 5 | import { textComponentConfig } from '../../components/TextComponent/config'; |
| 6 | 6 | import { instrumentComponentConfig } from '../../components/InstrumentComponent'; |
| 7 | 7 | import { pictureComponentList } from '../../components/PictureComponent'; |
| 8 | + import { getComponentDefaultConfig } from '../config/help'; | |
| 9 | + import { WidgetComponentType } from '../config/visualOptions'; | |
| 8 | 10 | const props = defineProps<{ |
| 9 | 11 | value: string; |
| 10 | 12 | }>(); |
| 11 | - const emit = defineEmits(['update:value']); | |
| 13 | + const emit = defineEmits(['update:value', 'change']); | |
| 12 | 14 | |
| 13 | 15 | const grid = { gutter: 10, column: 1, xs: 1, sm: 2, md: 2, lg: 3, xl: 3, xxl: 4 }; |
| 14 | 16 | |
| 15 | - const handleCheck = (checked: string) => { | |
| 17 | + const handleCheck = (checked: WidgetComponentType) => { | |
| 18 | + const defaultConfig = getComponentDefaultConfig(checked); | |
| 16 | 19 | emit('update:value', checked); |
| 20 | + emit('change', defaultConfig); | |
| 17 | 21 | }; |
| 18 | 22 | </script> |
| 19 | 23 | ... | ... |