<template>
  <section>
    <br />
    <el-row>
      <el-button type="primary" @click="ajaxSetDataFn"
        >Ajax请求初始化表单</el-button
      >
      <el-button type="danger" @click="getFormModelFn"
        >获取表单Model对象</el-button
      >
    </el-row>
    <br />
    <form-create v-model="fApi" :rule="rule" :option="option"></form-create>

    <br />
    <!-- 自定义 确定和取消按钮 -->
    <div class="bottomButton">
      <el-button @click="submitButton" type="primary">自定义的确定</el-button>
      <el-button @click="reset">重置</el-button>
    </div>
  </section>
</template>
<script>
export default {
  data() {
    return {
      // 实例对象
      fApi: {},
      // 表单生成规则数组对象  生成规则:http://www.form-create.com/v2/guide/rule.html
      // 生成规则数组中一个对象就是一个表单项(是一个json对象),在里面可以对应的表单名称、类型、属性、值、样式、类名、是否必填、错误提示等。
      rule: [
        {
          type: "input", // 生成组件的名称(就是表单的名称:如input,radio,checkbox,select,slider等)
          field: "userName", // 表单组件的字段名称(就是表单的name属性,注:该必须唯一),自定义组件可以不配置
          className: "user-name-dom", // 设置组件的class属性
          title: "用户名称:", // 组件的名称, 选填
          value: "", // 表单组件的字段值(就是表单的value值),自定义组件可以不用设置
          props: {
            placeholder: "请输入用户名称!",
            disabled: false,
            readonly: false,
            clearable: true, // 是否显示清空按钮
          },
          validate: [
            {
              trigger: "blur",
              required: true,
              message: "用户名称不能为空!",
            },
          ],
          col: {
            md: { span: 12 }, // 支持每列布局
          },
        },

        {
          type: "input",
          field: "password",
          title: "用户密码:",
          value: "666",
          props: {
            // input的表单类型 <input type="">:注:有些表单类型form-create和element-ui专门做成了组件,可以在上面的type中直接用,所以下面有些类型如(radio)在这里会无效哦!!
            // text	默认。定义单行输入字段,用户可在其中输入文本。默认是 20 个字符。
            // button	定义可点击的按钮(大多与 JavaScript 使用来启动脚本)
            // checkbox	定义复选框。
            // color	定义拾色器。
            // date	定义日期字段(带有 calendar 控件)
            // datetime	定义日期字段(带有 calendar 和 time 控件)
            // datetime-local	定义日期字段(带有 calendar 和 time 控件)
            // month	定义日期字段的月(带有 calendar 控件)
            // week	定义日期字段的周(带有 calendar 控件)
            // time	定义日期字段的时、分、秒(带有 time 控件)
            // email	定义用于 e-mail 地址的文本字段
            // file	定义输入字段和 "浏览..." 按钮,供文件上传
            // hidden	定义隐藏输入字段
            // image	定义图像作为提交按钮
            // number	定义带有 spinner 控件的数字字段
            // password	定义密码字段。字段中的字符会被遮蔽。
            // radio	定义单选按钮。
            // range	定义带有 slider 控件的数字字段。
            // reset	定义重置按钮。重置按钮会将所有表单字段重置为初始值。
            // search	定义用于搜索的文本字段。
            // submit	定义提交按钮。提交按钮向服务器发送数据。
            // tel	定义用于电话号码的文本字段。
            // url	定义用于 URL 的文本字段。

            //  type: "password",
            placeholder: "请输入用户密码!",
          },
          validate: [
            {
              trigger: "blur",
              required: true,
              message: "用户密码不能为空!",
            },
          ],
          col: {
            md: { span: 12 },
          },
        },

        {
          type: "input",
          field: "summary",
          title: "个人简介:",
          value: "",
          props: {
            type: "textarea",
            rows: 3,
            placeholder: "请输入个人简介!",
          },
        },
        {
          type: "DatePicker", // 日期选择器
          field: "date",
          title: "活动日期",
          // value: [],
          props: {
            type: "date",
            format: "yyyy-MM-dd",
            placeholder: "请选择活动日期",
          },
        },

        {
          type: "radio",
          field: "sex",
          title: "性 别:",
          value: 0,
          options: [
            { label: "先 生", value: 1 },
            { label: "女 士", value: 2 },
            { label: "人 妖", value: 3, disabled: true },
            { label: "未 知", value: 0 },
          ],
        },

        {
          type: "checkbox",
          field: "hobby",
          title: "爱 好:",
          value: [1, 3],
          options: [
            { label: "吃喝", value: 1 },
            { label: "上班", value: 2, disabled: true },
            { label: "旅游", value: 3 },
            { label: "运动", value: 4 },
            { label: "学习", value: 5, disabled: true },
          ],
        },

        {
          type: "select",
          field: "address",
          title: "想去哪里:",
          value: 6,
          col: {
            //  sx: {span: 24},
            md: { span: 10 },
          },
          options: [
            { label: "内国走走", value: 1 },
            { label: "呆在公司", value: 2, disabled: true },
            { label: "非洲美洲", value: 3 },
            { label: "港澳台游", value: 4 },
            { label: "东南亚游", value: 5 },
            { label: "澳洲旅游", value: 6 },
            { label: "自驾游", value: 7 },
          ],
        },

        {
          type: "select",
          field: "address2",
          title: "想多选点:",
          value: [3, 5],
          col: {
            md: { span: 14 },
          },
          props: {
            multiple: true,
            placement: "bottom",
          },
          options: [
            { label: "内国走走", value: 1 },
            { label: "呆在公司", value: 2, disabled: true },
            { label: "非洲美洲", value: 3 },
            { label: "港澳台游", value: 4 },
            { label: "东南亚游", value: 5 },
            { label: "澳洲旅游", value: 6 },
            { label: "自驾游", value: 7 },
          ],
        },
      ],

      // 组件参数配置
      option: {
        // 显示重置表单按扭
        resetBtn: false,
        // 表单提交按扭事件
        submitBtn: {
          show: false,
          // 按钮内容
          innerText: "保存",
        },
        onSubmit: (formData) => {
          alert(JSON.stringify(formData));
          console.log("获取表单中的数据:", formData);

          //按钮进入提交状态
          //   this.fApi.btn.loading();

          //重置按钮禁用
          //   this.fApi.resetBtn.disabled();

          //按钮进入可点击状态
          //   this.fApi.btn.finish();
        },
      },
    };
  },
  methods: {
    // 提交
    submitButton() {
      this.fApi.submit((formData, fApi) => {
        alert(JSON.stringify(formData));
        console.log(formData, "999参数啊");
      });
    },
    // 重置
    reset() {
      this.fApi.resetFields();
    },
    // 设置表单数据
    ajaxSetDataFn() {
      this.fApi.setValue({
        userName: "沐枫",
        password: "123456",
        summary: "我是请后端返回来的个人简介",
        sex: 1,
        hobby: [3, 4],
        address: 5,
        address2: [1, 4, 7],
        volume: 35,
        jiajie: 56,
        color: "#000DFF",
        date: "2020-02-01",
        rateNumber: 4,
        offon: false,
      });
    },

    //获取Form表单 model对象
    getFormModelFn() {
      console.log("Form表单 model对象:", this.fApi.model());
    },

    getUserNameChange(e) {
      this.$nextTick(() => {
        this.rule[2].value = this.rule[0].value;
      });
      console.log(this.fApi.getValue("userName"));
    },
  },
};
</script>
<style lang="scss">
.bottomButton {
  display: flex;
  justify-content: center; // flex-end
  align-items: center;
}
</style>
1 npm i @form-create/element-ui
2 在main.js 里面加入
// 引入form-create 表单生成器
import formCreate from "@form-create/element-ui"
Vue.use(formCreate);
代码如下
<div>
   <section>
    <h1>组件模式:使用<form-create></form-create> 或 <FormCreate /> 标签来创建(生成)表单</h1>
    <br />
    <a href="http://www.form-create.com/v2/guide/rule.html" target="_blank">表单 rule[] 生成规则</a>
    <br />
    <br />
    <el-row>
      <el-button type="primary" @click="ajaxSetDataFn" icon="el-icon-edit">Ajax请求初始化表单</el-button>
      <el-button type="danger" @click="getFormModelFn" icon="el-icon-s-promotion">获取表单Model对象</el-button>
    </el-row>
    <br />
    <h3>使用<form-create></form-create>标签来创建(生成)表单:</h3>
    <form-create v-model="fApi" :rule="rule" :option="option"></form-create>
    <br />
  <!-- 自定义 确定和取消按钮 -->
  <el-row class="bottomButton">
    <el-col>
      <el-button @click="submitButton" type="primary">自定义确定</el-button>
    <el-button @click="reset">自定义重置</el-button>
    </el-col>
  </el-row>
   
  </section>
</div>
data里面
data() {
    return {
            // 实例对象
            fApi: {},
 // 表单生成规则数组对象  生成规则:http://www.form-create.com/v2/guide/rule.html
 // 生成规则数组中一个对象就是一个表单项(是一个json对象),在里面可以对应的表单名称、类型、属性、值、样式、类名、是否必填、错误提示等。
 rule: [
   {
     type: "input", // 生成组件的名称(就是表单的名称:如input,radio,checkbox,select,slider等)
     field: "userName", // 表单组件的字段名称(就是表单的name属性,注:该必须唯一),自定义组件可以不配置
     className: "user-name-dom", // 设置组件的class属性
     title: "用户名称:", // 组件的名称, 选填
     value: "", // 表单组件的字段值(就是表单的value值),自定义组件可以不用设置
     props: {
       placeholder: "请输入用户名称!",
       disabled: false,
       readonly: false,
       clearable: true // 是否显示清空按钮
     },
     validate: [
       {
         trigger: "blur",
         required: true,
         message: "用户名称不能为空!"
       }
     ],
     col: {
       md: { span: 12 } // 支持每列布局
     }
   },
   {
     type: "input",
     field: "password",
     title: "用户密码:",
     value: "666",
     props: {
       // input的表单类型 <input type="">:注:有些表单类型form-create和element-ui专门做成了组件,可以在上面的type中直接用,所以下面有些类型如(radio)在这里会无效哦!!
       // text  默认。定义单行输入字段,用户可在其中输入文本。默认是 20 个字符。
       // button  定义可点击的按钮(大多与 JavaScript 使用来启动脚本)
       // checkbox  定义复选框。
       // color 定义拾色器。
       // date  定义日期字段(带有 calendar 控件)
       // datetime  定义日期字段(带有 calendar 和 time 控件)
       // datetime-local  定义日期字段(带有 calendar 和 time 控件)
       // month 定义日期字段的月(带有 calendar 控件)
       // week  定义日期字段的周(带有 calendar 控件)
       // time  定义日期字段的时、分、秒(带有 time 控件)
       // email 定义用于 e-mail 地址的文本字段
       // file  定义输入字段和 "浏览..." 按钮,供文件上传
       // hidden  定义隐藏输入字段
       // image 定义图像作为提交按钮
       // number  定义带有 spinner 控件的数字字段
       // password  定义密码字段。字段中的字符会被遮蔽。
       // radio 定义单选按钮。
       // range 定义带有 slider 控件的数字字段。
       // reset 定义重置按钮。重置按钮会将所有表单字段重置为初始值。
       // search  定义用于搜索的文本字段。
       // submit  定义提交按钮。提交按钮向服务器发送数据。
       // tel 定义用于电话号码的文本字段。
       // url 定义用于 URL 的文本字段。
       type: "password",
       placeholder: "请输入用户密码!"
     },
     col: {
       md: { span: 12 }
     }
   },
   {
     type: "input",
     field: "summary",
     title: "个人简介:",
     value: "",
     props: {
       type: "textarea",
       rows: 3,
       placeholder: "请输入个人简介!"
     }
   },
   {
    type: "DatePicker", // 日期选择器
    field: "section_day",
    title: "活动日期",
    // value: [],
    props: {
        type: "date",
        format: "yyyy-MM-dd",
        placeholder:"请选择活动日期",
    }
},
   {
     type: "radio",
     field: "sex",
     title: "性 别:",
     value: 0,
     options: [
       { label: "先 生", value: 1 },
       { label: "女 士", value: 2 },
       { label: "人 妖", value: 3, disabled: true },
       { label: "未 知", value: 0 }
     ]
   },
   {
     type: "checkbox",
     field: "hobby",
     title: "爱 好:",
     value: [1, 3],
     options: [
       { label: "吃喝", value: 1 },
       { label: "上班", value: 2, disabled: true },
       { label: "旅游", value: 3 },
       { label: "运动", value: 4 },
       { label: "学习", value: 5, disabled: true }
     ]
   },
   {
     type: "select",
     field: "address",
     title: "想去哪里:",
     value: 6,
     col: {
        //  sx: {span: 24},
       md: { span: 10 }
     },
     options: [
       { label: "内国走走", value: 1 },
       { label: "呆在公司", value: 2, disabled: true },
       { label: "非洲美洲", value: 3 },
       { label: "港澳台游", value: 4 },
       { label: "东南亚游", value: 5 },
       { label: "澳洲旅游", value: 6 },
       { label: "自驾游", value: 7 }
     ]
   },
   {
     type: "select",
     field: "address2",
     title: "想多选点:",
     value: [3, 5],
     col: {
       md: { span: 14 }
     },
     props: {
       multiple: true,
       placement: "bottom"
     },
     options: [
       { label: "内国走走", value: 1 },
       { label: "呆在公司", value: 2, disabled: true },
       { label: "非洲美洲", value: 3 },
       { label: "港澳台游", value: 4 },
       { label: "东南亚游", value: 5 },
       { label: "澳洲旅游", value: 6 },
       { label: "自驾游", value: 7 }
     ]
   }
 ],
 // 组件参数配置
 option: {
   // 显示重置表单按扭
   resetBtn: false,
   // 表单提交按扭事件
   submitBtn: {
    show:false,
    // 按钮内容
     innerText: "保存",
   },
   onSubmit: formData => {
     alert(JSON.stringify(formData));
     console.log("获取表单中的数据:", formData);
     //按钮进入提交状态
     //   this.fApi.btn.loading();
     //重置按钮禁用
     //   this.fApi.resetBtn.disabled();
     //按钮进入可点击状态
     //   this.fApi.btn.finish();
   }
 },
}
}
1. methods 方法里面
 methods: {
      // 提交
      submitButton(){
        this.fApi.submit((formData, fApi)=>{
          alert(JSON.stringify(formData))
          console.log(formData, '999参数啊')
        })
      },
      // 重置
      reset(){
        this.fApi.resetFields()
      },
      // 设置表单数据
      ajaxSetDataFn() {
      this.fApi.setValue({
        userName: "沐枫",
        password: "123456",
        summary: "我是请后端返回来的个人简介",
        sex: 1,
        hobby: [3, 4],
        address: 5,
        address2: [1, 4, 7],
        volume: 35,
        jiajie: 56,
        color: "#000DFF",
        dateTime: ["2020-02-01", "2020-02-30"],
        rateNumber: 4,
        offon: false,
        imgFile: [
          "https://inews.gtimg.com/newsapp_ls/0/11673675668_295195/0",
          "https://inews.gtimg.com/newsapp_ls/0/11673508745_295195/0"
        ]
      });
    },
    //获取Form表单 model对象
    getFormModelFn() {
      console.log("Form表单 model对象:", this.fApi.model());
    },
    getUserNameChange(e) {
      this.$nextTick(() => {
        this.rule[2].value = this.rule[0].value;
      });
      console.log(this.fApi.getValue("userName"));
    },
}