<template>
  <div class="aa">
    <a-form-model ref="tableformRef" :model="form">

      <a-table :columns="column" :data-source="form.list" :rowKey="record => record.id" :pagination="false">

        <template slot="name" slot-scope="text, record, index">
          <a-form-model-item :prop="'list.' + index + '.name'" :rules="rules.name">
            <a-input v-model="record.name"></a-input>
          </a-form-model-item>
        </template>

        <template slot="sex" slot-scope="text, record, index">
          <a-form-model-item :prop="'list.' + index + '.sex'" :rules="rules.sex">
            <a-select v-model="record.sex">
              <a-select-option value="1">男</a-select-option>
              <a-select-option value="2">女</a-select-option>
            </a-select>
          </a-form-model-item>
        </template>

        <template slot="age" slot-scope="text, record, index">
          <a-form-model-item :prop="'list.' + index + '.age'" :rules="rules.age">
            <a-input-number v-model="record.age"></a-input-number>
          </a-form-model-item>
        </template>

        <template slot="level" slot-scope="text, record, index">
          <a-form-model-item :prop="'list.' + index + '.level'" :rules="rules.level">
            <a-select v-model="record.level">
              <a-select-option :value="1">男</a-select-option>
              <a-select-option :value="2">女</a-select-option>
            </a-select>
          </a-form-model-item>
        </template>

      </a-table>

      <a-form-model-item>
        <a-button @click="handleSubmit">提交</a-button>
      </a-form-model-item>
    </a-form-model>

  </div>
</template>

<script>
export default {
  data() {
    const validatorAge = (rule, value, callback) => {
      if (!value) {
        callback(new Error('年龄不能为空'))
      } else if (value < 20 || value > 50) {
        callback(new Error('年龄输入错误'))
      } else callback()
    }
    return {
      form: {
        list: [
          { id: '1', name: '唐僧', sex: '1', age: '35', level: 1, describe: '他是师傅' },
          { id: '2', name: '孙悟空', sex: '2', age: '20', level: 2, describe: '他是大师兄' },
          { id: '3', name: '沙和尚', sex: '1', age: '30', level: 4, describe: '他是三师弟' },
          { id: '4', name: '猪八戒', sex: '2', age: '33', level: 3, describe: '他是猪八戒' }
        ]
      },
      rules: {
        name: { required: true, message: '姓名不能为空' },
        sex: { required: true, message: '性别不能为空' },
        age: [{ required: true, validator: validatorAge }],
        level: { required: true, message: '等级不能为空' }
      },
      column: [
        {
          title: '姓名',
          key: 'name',
          scopedSlots: { customRender: 'name' }
        },
        {
          title: '性别',
          key: 'sex',
          scopedSlots: { customRender: 'sex' }
        },
        {
          title: '年龄',
          key: 'age',
          scopedSlots: { customRender: 'age' }
        },
        {
          title: '等级',
          key: 'level',
          scopedSlots: { customRender: 'level' }
        },
        {
          title: '描述',
          key: 'describe',
          dataIndex: 'describe'
        }
      ]
    }
  },
  methods: {
    handleSubmit() {
      this.$refs.tableformRef.validate(async valid => {
        if (valid) {
          this.$message.success('提交成功')
        }
      })
    }
  }
}
</script>

<style></style>
