根据JSON动态生成表单表格

发布于:2025-05-01 ⋅ 阅读:(19) ⋅ 点赞:(0)

一. 子组件 DynamicFormTable.vue

1,根据JSON数据动态生成表单表格,支持表单验证

基于vite+element plus + ts 动态生成表格表单,表单支持添加删除行列。

JS部分

1.1,props数据

const props = defineProps({
   
  tableTitle: {
   
    type: Array<any>,
    default: () => []
  },
  tableData: {
   
    type: Array<any>,
    default: () => []
  },
  tableEvent: {
   
    type: Array<any>,
    default: () => []
  },
  height: {
   
    type: Number,
    default: null
  },
  eventWidth: {
   
    type: Number,
    default: 100
  }
})

1.2,表单数据和数据监听

const form = reactive({
   
  rows: [...props.tableData]
})

watch(() => props.tableData, () => {
   
  console.log('props.tableData', props.tableData)
  form.rows = [...props.tableData]
},{
   deep: true})

1.3,自动验证

const getRules = (column: any, row: any) => {
   
  if (column.required) {
   
    return [{
    required: true, message: `${
     column.label}不能为空`, trigger: ['blur', 'change'] }]
  }
  return []
}

1.4,表单验证

const dynamicFormRef = ref()

const validate = () => {
   
  return new Promise((resolve, reject) => {
   
    dynamicFormRef.value.validate((valid: any) => {
   
      if (valid) {
   
        resolv