Skip to content

表单渲染

在使用设计好的规则进行表单设计和回显时,正确地处理 JSON 数据格式是至关重要的。以下文档详细介绍了如何渲染表单,并包含了动态加载和保存表单配置的高级用法示例。

注意

必须使用 formCreate.parseJson 代替 JSON.stringify 方法,使用 formCreate.toJson 代替 JSON.parse 方法来转换 JSON 数据,以确保数据格式正确。

表单渲染

要渲染表单,您需要挂载 form-create 到 Vue 应用中,并加载表单规则和配置。

挂载 formCreate 示例

js
//从设计器中导入 formCreate
import {formCreate} from 'path/to/fcDesignerPro';
//挂载 formCreate
app.use(formCreate);

表单渲染示例

以下示例演示如何获取后端存储的表单规则,并通过 formCreate 渲染表单。

vue
<template>
    <div id="app">
        <form-create v-if="rule.length" v-model="formData" v-model:api="fApi" @sumbit="handleSubmit" :rule="rule"
                     :option="option"></form-create>
    </div>
</template>
<script setup>
    import {formCreate} from 'path/to/fcDesignerPro';
    const rule = ref([]);
    const options = ref({});
    const fApi = ref(null);
    //表单数据
    const formData = ref({});
    function handleSubmit(formData) {
        // 模拟提交表单数据到后端
        axios.post('/api/submitFormData', formData)
            .then(response => {
                console.log('提交成功:', response.data);
            })
            .catch(error => {
                console.error('提交失败:', error);
            });
    }
    onMounted(() => {
        // 模拟从后端加载表单JSON规则
        axios.get('/api/getFormRules')
            .then(response => {
                const {ruleJson, optionsJson, formData} = response.data;
                rule.value = formCreate.parseJson(ruleJson);
                options.value = formCreate.parseJson(optionsJson);
                formData.value = formData;
            })
            .catch(error => {
                console.error('加载表单规则失败:', error);
            });
    });
</script>

表单阅读模式

通过设置 options.preview 配置项,您可以让表单进入阅读模式,以便在无需编辑时展示表单内容。

阅读模式示例

以下示例展示如何设置表单为阅读模式:

vue
<template>
    <div id="app">
        <form-create v-if="rule.length" v-model="formData" v-model:api="fApi" @sumbit="handleSubmit" :rule="rule" :option="option"></form-create>
    </div>
</template>
<script setup>
    import {formCreate} from 'path/to/fcDesignerPro';
    const rule = ref([]);
    const options = ref({});
    //表单数据
    const formData = ref({});
    const fApi = ref(null);
    onMounted(() => {
        // 加载之前存储的表单规则和配置
        axios.get('/api/getFormRules')
            .then(response => {
                const { ruleJson, optionsJson, formData } = response.data;
                rule.value = formCreate.parseJson(ruleJson);
                options.value = formCreate.parseJson(optionsJson);
                formData.value = formData;
                options.value.preview = true; // 设置为阅读模式
            })
            .catch(error => {
                console.error('加载表单规则失败:', error);
            });
    });
</script>

注意事项

  • 确保从后端返回的 JSON 数据格式正确,以保证 formCreate.parseJson 的正常工作。
  • 在实际实现时,根据你的 API 结构调整请求URL和数据字段名称。

通过这些示例和说明,开发者可以在 Vue 应用中实现动态表单渲染与数据持久化提交,高效管理表单的设计和使用。