feat(editor,schema): 支持组件显示条件配置
This commit is contained in:
56
packages/editor/src/fields/DataSourceFieldSelect.vue
Normal file
56
packages/editor/src/fields/DataSourceFieldSelect.vue
Normal file
@@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<m-form-container
|
||||
:config="{
|
||||
...config,
|
||||
...cascaderConfig,
|
||||
}"
|
||||
:model="model"
|
||||
@change="onChangeHandler"
|
||||
></m-form-container>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, inject } from 'vue';
|
||||
|
||||
import { DataSourceFieldSelectConfig, Services } from '@editor/type';
|
||||
|
||||
const services = inject<Services>('services');
|
||||
const emit = defineEmits(['change']);
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
config: DataSourceFieldSelectConfig;
|
||||
model: any;
|
||||
lastValues?: any;
|
||||
prop: string;
|
||||
name: string;
|
||||
disabled?: boolean;
|
||||
size: 'small' | 'default' | 'large';
|
||||
}>(),
|
||||
{
|
||||
disabled: false,
|
||||
},
|
||||
);
|
||||
|
||||
const dataSources = computed(() => services?.dataSourceService.get('dataSources'));
|
||||
|
||||
const cascaderConfig = {
|
||||
type: 'cascader',
|
||||
name: props.name,
|
||||
options: () =>
|
||||
dataSources.value
|
||||
?.filter((ds) => ds.fields?.length)
|
||||
?.map((ds) => ({
|
||||
label: ds.title || ds.id,
|
||||
value: ds.id,
|
||||
children: ds.fields?.map((field) => ({
|
||||
label: field.title,
|
||||
value: field.name,
|
||||
})),
|
||||
})) || [],
|
||||
};
|
||||
|
||||
const onChangeHandler = (value: any) => {
|
||||
emit('change', value);
|
||||
};
|
||||
</script>
|
||||
Reference in New Issue
Block a user