class-tree-form.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <el-form ref="form" :model="model" :rules="rules" label-position="right" label-width="80px">
  3. <el-form-item v-for="(grade,index) in dataSource" :key="index" :prop="grade.name" :label="grade.name"
  4. class="form-item-readonly">
  5. <el-checkbox-group v-model="model[grade.name]" :disabled="disabled">
  6. <el-checkbox v-for="(clazz,idx) in grade.classList" :key="idx" :label="clazz.classId">{{ clazz.className }}
  7. </el-checkbox>
  8. </el-checkbox-group>
  9. </el-form-item>
  10. </el-form>
  11. </template>
  12. <script>
  13. export default {
  14. name: 'class-tree-form',
  15. props: {
  16. modelValue: Object,
  17. rules: Object,
  18. dataSource: Array,
  19. disabled: Boolean
  20. },
  21. data() {
  22. return {
  23. model: {}
  24. }
  25. },
  26. watch: {
  27. modelValue: {
  28. immediate: true,
  29. handler: function(newVal) {
  30. if (!newVal) return
  31. this.model = this.deepClone(newVal)
  32. }
  33. }
  34. },
  35. methods: {
  36. validate() {
  37. return this.$refs.form.validate()
  38. },
  39. getModel() {
  40. return this.model
  41. }
  42. }
  43. }
  44. </script>
  45. <style scoped>
  46. </style>