Skip to content

Designer Data and Methods ​

Call fc-designer component methods through refs.designer to operate and configure the designer. Detailed descriptions and examples for each method:

Mobile designer is the fc-designer-mobile component

Vue3

vue
<template>
    <fc-designer ref="designer"/>
</template>
<script setup>
    import {onMounted} from "vue";
    const designer = ref(null);
    // Note: Must wait for component initialization to complete before calling its methods
    onMounted(() => {
        designer.value.addComponent([
            // Extend components
        ])
    });
</script>
Vue2
vue
<template>
    <fc-designer ref="designer"></fc-designer>
</template>
<script>
    export default {
        name: 'Component',
        // Note: Must wait for component initialization to complete before calling its methods
        mounted() {
            this.$refs.designer.addComponent([
                // Extend components
            ])
        }
    };
</script>

Fields ​

Component instance fields:

Field NameDescription
activeRuleCurrently selected component rule.
formOptionsCurrent form's rules.

Methods ​

Component instance methods:

Method NameDescriptionType Definition
getConfigGet designer configuration items.(key: string, def: any) => any
addComponentAdd one or more component templates or drag components to the designer, automatically categorized under corresponding menus based on menu field.AddComponent
setMenuItemOverride add drag components to the specified menu, menuName is the target menu name.(menuName: string, list: MenuList) => void
addMenuAdd a new menu item to the designer's left menu bar.(menu: Menu) => void
setRuleSet form generation rules, supports string or rule object array.(rule: string | Rule[]) => void
setOptionSet form configuration options (such as layout, label width).
Alias method: setOptions.
(opt: Options) => void
mergeOptionsUpdate form configuration options through merging.(opt: Options) => void
getRuleGet current form's rendering rules (array form).() => Rule[]
getJsonGet current form's JSON rendering rules (string form).() => string
getOptionGet current form's configuration object.
Alias method: getOptions.
() => Options
getOptionsJsonGet current form's JSON configuration (string form).() => string
getFormDataGet current form's formData object.() => Object
setFormDataSet form's formData object (for pre-filling data).(formData: Object) => void
getDescriptionGet form's hierarchical structure data.() => TreeData
getFormDescriptionGet form component's hierarchical structure data.() => TreeData
openPreviewOpen form preview mode.() => void
openInputDataEnable or disable data input mode (true to enable, false to disable).(open: boolean) => void
clearDragRuleClear all form components in the designer.() => void
fieldsGet list of all field names in the designer.() => string[]
triggerActiveSelect specified component (supports rule object or field/name/_fc_id).(rule: Rule | string) => void
clearActiveRuleClear currently selected component state.() => void
setFormRuleConfigSet form configuration rules (same as config.formRule).(rule: () => Rule[], append: boolean) => void
setBaseRuleConfigSet component basic configuration rules (same as config.baseRule).(rule: () => Rule[], append: boolean) => void
setComponentRuleConfigSet specified component's property configuration rules (same as config.componentRule).(id: string, rule: () => Rule[], append: boolean) => void

Examples ​

Extend Custom Components ​

Custom components let you extend the form designer with specific input controls, business modules, or third-party UI components.

vue
<template>
    <fc-designer ref="designer"></fc-designer>
</template>
<script>
    import lineChart from './rule/charts/lineChart';
    import areaChart from './rule/charts/areaChart';
    import barChart from './rule/charts/barChart';
    import stripeChart from './rule/charts/stripeChart';
    import pieChart from './rule/charts/pieChart';
    import funnelChart from './rule/charts/funnelChart';
    import gaugeChart from './rule/charts/gaugeChart';
    import radarChart from './rule/charts/radarChart';
    import scatterChart from './rule/charts/scatterChart';
    import customChart from './rule/charts/customChart';

    export default {
        name: 'Component',
        // Note: Must wait for component initialization to complete before calling its methods
        mounted() {
            this.$refs.designer.addComponent([
                lineChart, areaChart, barChart, stripeChart, pieChart, 
                funnelChart, gaugeChart, radarChart, scatterChart, customChart
            ])
        }
    };
</script>

Import Design Form Rules ​

Import pre-designed form rules into the designer for editing existing configurations:

vue
<template>
    <fc-designer ref="designer"></fc-designer>
</template>
<script>
    import formCreate from '@form-create/element-ui';
    export default {
        name: 'Component',
        // Note: Must wait for component initialization to complete before calling its methods
        mounted() {
            axios.get('/api/getForm').then(({ ruleJson, optionsJson }) => {
                this.$refs.designer.setRule(formCreate.parseJson(ruleJson));
                this.$refs.designer.setOptions(formCreate.parseJson(optionsJson));
            })
        }
    };
</script>

Save Design Form Rules ​

Save form design rules after completing the design:

vue
<template>
    <fc-designer ref="designer"></fc-designer>
    <el-button @click="save">Save</el-button>
</template>
<script>
    import formCreate from '@form-create/element-ui';
    export default {
        name: 'Component',
        methods: {
            save() {
                axios.post('/api/saveForm', {
                    rules: formCreate.toJson(this.$refs.designer.getRule()), // JSON string
                    options: formCreate.toJson(this.$refs.designer.getOptions()), // JSON string
                }).then(response => {
                    // Handle save success logic
                    console.log('Save successful');
                })
            },
        }
    };
</script>

Manually Select Specified Component ​

After designer initialization, manually select and activate a form component using triggerActive with a field name, component name, or rule object:

vue
<template>
    <fc-designer ref="designer"></fc-designer>
</template>
<script>
    import formCreate from '@form-create/element-ui';
    export default {
        name: 'Component',
        // Note: Must wait for component initialization to complete before calling its methods
        mounted() {
            // Select by component field
            this.$refs.designer.triggerActive('field');
            // Select by component name
            this.$refs.designer.triggerActive('name');
            // Select by component rule
            this.$refs.designer.triggerActive(rule);
        }
    };
</script>

Type Definitions ​

Expand
ts
// Single component or component array addition
type AddComponent =
    (dragRule: dragRule | dragTemplateRule) => void |
        (dragRule: Array<dragRule | dragTemplateRule>) => void;

        // Menu item operations
type SetMenuItem = (menuName: string, list: MenuList) => void;
type AddMenu = (menu: Menu) => void;

// Rule and configuration operations
type SetRule = (rule: string | Rule[]) => void;
type SetOption = (opt: Options) => void;
type MergeOptions = (opt: Options) => void;
type GetRule = () => Rule[];
type GetJson = () => string;
type GetOption = () => Options;
type GetOptionsJson = () => string;

// Form data operations
type GetFormData = () => Object;
type SetFormData = (formData: Object) => void;

// Structure data retrieval
type GetDescription = () => TreeData;
type GetFormDescription = () => TreeData;

// View control
type OpenPreview = () => void;
type OpenInputData = (open: boolean) => void;

// Designer operations
type ClearDragRule = () => void;
type Fields = () => string[];
type TriggerActive = (rule: Rule | string) => void;
type ClearActiveRule = () => void;

// Rule configuration
type SetFormRuleConfig = (rule: () => Rule[], append: boolean) => void;
type SetBaseRuleConfig = (rule: () => Rule[], append: boolean) => void;
type SetComponentRuleConfig = (id: string, rule: () => Rule[], append: boolean) => void;

For complete type definitions, see the TypeScript data structure documentation: TypeScript Data Structure