Commit 897143e439753184487844002ec285fd678e8ccd

Authored by ww
1 parent 93d021a9

fix: repeat fetch in visual board bind dataSource modal happend echo data

@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 return decode((ROUTE.params as DataComponentRouteParams).boardId as string); 33 return decode((ROUTE.params as DataComponentRouteParams).boardId as string);
34 }); 34 });
35 35
36 - const frontId = ref(FrontComponent.TEXT_COMPONENT_1); 36 + const frontId = ref();
37 37
38 const isEdit = ref(false); 38 const isEdit = ref(false);
39 39
@@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
48 const [register, { closeModal, changeOkLoading }] = useModalInner( 48 const [register, { closeModal, changeOkLoading }] = useModalInner(
49 (data: { isEdit: boolean; record?: DataBoardLayoutInfo }) => { 49 (data: { isEdit: boolean; record?: DataBoardLayoutInfo }) => {
50 componentRecord.value = data.record || ({} as unknown as DataBoardLayoutInfo); 50 componentRecord.value = data.record || ({} as unknown as DataBoardLayoutInfo);
  51 + if (!unref(isEdit)) frontId.value = FrontComponent.TEXT_COMPONENT_1;
51 frontId.value = 52 frontId.value =
52 (data.record?.record?.frontId as FrontComponent) || FrontComponent.TEXT_COMPONENT_1; 53 (data.record?.record?.frontId as FrontComponent) || FrontComponent.TEXT_COMPONENT_1;
53 isEdit.value = data.isEdit || false; 54 isEdit.value = data.isEdit || false;
1 <script lang="ts" setup> 1 <script lang="ts" setup>
2 - import { ref, onMounted, unref } from 'vue'; 2 + import { ref, onMounted, unref, computed } from 'vue';
3 import { FrontComponent } from '../../../const/const'; 3 import { FrontComponent } from '../../../const/const';
4 import { DataSourceField, dataSourceSchema } from '../../config/basicConfiguration'; 4 import { DataSourceField, dataSourceSchema } from '../../config/basicConfiguration';
5 import { DeviceTypeEnum } from '/@/api/device/model/deviceModel'; 5 import { DeviceTypeEnum } from '/@/api/device/model/deviceModel';
@@ -7,12 +7,18 @@ @@ -7,12 +7,18 @@
7 import BasicForm from '/@/components/Form/src/BasicForm.vue'; 7 import BasicForm from '/@/components/Form/src/BasicForm.vue';
8 const formEl = ref<Nullable<FormActionType>>(null); 8 const formEl = ref<Nullable<FormActionType>>(null);
9 9
10 - defineProps<{ 10 + const props = defineProps<{
11 frontId?: FrontComponent; 11 frontId?: FrontComponent;
12 }>(); 12 }>();
13 13
14 defineExpose({ formActionType: formEl }); 14 defineExpose({ formActionType: formEl });
15 15
  16 + const getDataSchema = computed(() => {
  17 + const { frontId } = props;
  18 + if (!frontId) return [];
  19 + return dataSourceSchema(frontId);
  20 + });
  21 +
16 onMounted(() => { 22 onMounted(() => {
17 unref(formEl)?.setFieldsValue({ [DataSourceField.DEVICE_TYPE]: DeviceTypeEnum.SENSOR }); 23 unref(formEl)?.setFieldsValue({ [DataSourceField.DEVICE_TYPE]: DeviceTypeEnum.SENSOR });
18 }); 24 });
@@ -21,7 +27,7 @@ @@ -21,7 +27,7 @@
21 <template> 27 <template>
22 <BasicForm 28 <BasicForm
23 ref="formEl" 29 ref="formEl"
24 - :schemas="dataSourceSchema($props.frontId)" 30 + :schemas="getDataSchema"
25 class="w-full flex-1 data-source-form" 31 class="w-full flex-1 data-source-form"
26 :show-action-button-group="false" 32 :show-action-button-group="false"
27 :row-props="{ 33 :row-props="{
@@ -149,6 +149,7 @@ export const dataSourceSchema = (frontId?: FrontComponent): FormSchema[] => { @@ -149,6 +149,7 @@ export const dataSourceSchema = (frontId?: FrontComponent): FormSchema[] => {
149 const { setFieldsValue } = formActionType; 149 const { setFieldsValue } = formActionType;
150 const deviceProfileId = formModel[DataSourceField.DEVICE_PROFILE_ID]; 150 const deviceProfileId = formModel[DataSourceField.DEVICE_PROFILE_ID];
151 const deviceType = formModel[DataSourceField.DEVICE_TYPE]; 151 const deviceType = formModel[DataSourceField.DEVICE_TYPE];
  152 + if (![deviceType, deviceProfileId].every(Boolean)) return {};
152 return { 153 return {
153 api: async () => { 154 api: async () => {
154 if (!deviceType) return []; 155 if (!deviceType) return [];
@@ -253,6 +254,7 @@ export const dataSourceSchema = (frontId?: FrontComponent): FormSchema[] => { @@ -253,6 +254,7 @@ export const dataSourceSchema = (frontId?: FrontComponent): FormSchema[] => {
253 componentProps({ formModel }) { 254 componentProps({ formModel }) {
254 const deviceProfileId = formModel[DataSourceField.DEVICE_PROFILE_ID]; 255 const deviceProfileId = formModel[DataSourceField.DEVICE_PROFILE_ID];
255 const transportType = formModel[DataSourceField.TRANSPORT_TYPE]; 256 const transportType = formModel[DataSourceField.TRANSPORT_TYPE];
  257 + if (![deviceProfileId, transportType].every(Boolean)) return {};
256 return { 258 return {
257 api: async () => { 259 api: async () => {
258 try { 260 try {