1.0.3 • Published 1 year ago

form-generate-vue3 v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

使用样例

本组件旨在可以根据配置文件,快速生成可验证表单 @TODO 条件组件递归显示实现 @TODO 自定义表单验证组件实现

<template>
   <div>
      <el-form ref="ruleFormRef" :model="formData" label-width="120px">
         <form-generate 
            :columnList="formOptions"
            :formData = "formData"
            :columnSpan="12"
         />
         <el-form-item>
            <el-button type="primary" @click="submitForm(ruleFormRef)">
               Create
            </el-button>
         </el-form-item>
      </el-form>
   </div>
</template>

<script setup name="User">
import { reactive } from 'vue';
const ruleFormRef  = ref()
const formOptions = [
   {
   "name": "name1",
   "type": "text",
   "title": "栏目标题",
   "rules": [
      {required: true,  trigger: 'change', message: '请输入'}
   ]
   },
   {
   "name": "name",
   "type": "text",
   "title": "栏目名称"
   },
   {
   "name": "total",
   "type": "number",
   "title": "栏目数量",
   
   "rules": [
      {required: true,  trigger: 'change'}
   ]
   },
   {
   "name": "count",
   "type": "number",
   "title": "浏览数量"
   },
   {
   "name": "descript",
   "type": "textarea",
   "title": "备注",
   "rows": 3,
   "rules": [
      {required: true,  trigger: 'change'}
   ]
   },
   {
      "name": "content",
      "type": "textarea",
      "title": "内容",
      "rows": 3
   },
   {
      "name": "startDate",
      "type": "date",
      "title": "开始日期",
      "required": true
   },
   {
      "name": "endDate",
      "type": "date",
      "title": "结束日期"
   },
   {
      "name": "isValid",
      "type": "switch",
      "title": "是否有效"
   },
   {
      "name": "isExpired",
      "type": "switch",
      "title": "是否过期",
      "required": true
   },
   {
   "name": "type",
   "type": "radio",
   "dictionary": [
      {
         "code": 1,
         "name": "横版栏目"
      },
      {
         "code": 2,
         "name": "竖版栏目"
      }
   ],
   "title": "栏目类型",
   "controls": [
      {
         "value": 1,
         "showCondition": [
            {
               "name": "show",
               "type": "radio",
               "dictionary": [
                  {
                  "code": 1,
                  "name": "China"
                  },
                  {
                  "code": 2,
                  "name": "English"
                  }
               ],
               "title": "测试类型",
               "required": true
            }
         ]
      },
      {
         "value": 2,
         "showCondition": [
         {
            "name": "isValids",
            "type": "switch",
            "title": "是否有效"
         }
         ]
      }
   ]
   },
   {
   "name": "requireType",
   "type": "radio",
   "dictionary": [
      {
         "code": 1,
         "name": "类型一"
      },
      {
         "code": 2,
         "name": "类型二"
      }
   ],
   "title": "图文类型",
   "required": true
   },
   {
   "name": "range",
   "type": "checkbox",
   "title": "发布范围",
   "dictionary": [
      {
         "code": 1,
         "name": "范围一"
      },
      {
         "code": 2,
         "name": "范围二"
      }
   ],
   "required": true
   },
   {
   "name": "dateRange",
   "type": "daterange",
   "title": "日期范围"
   },
   {
   "name": "creType",
   "type": "select",
   "dictionary": [
      {
         "code": 1,
         "name": "身份证"
      },
      {
         "code": 2,
         "name": "居住证"
      }
   ],
   "title": "证件类型"
   },
   {
   "name": "image",
   "type": "image",
   "title": "头像"
   }
]
const formData = reactive({
   "name1": '',
   "name": "主菜单栏目",
   "total": null,
   "count": null,
   "createDate": 1606730360386,
   "type": 1,
   "creType": "",
   "range": [],
   "isExpired": false,
   "isValid": true
})
const submitForm = async (formEl) => {
  if (!formEl) return
  console.log(formData)
  await formEl.validate((valid, fields) => {
    if (valid) {

      console.log('submit!')
    } else {
      console.log('error submit!', fields)
    }
  })
}
</script>
1.0.3

1 year ago