intermediate.vue 968 B

1234567891011121314151617181920212223242526272829303132333435
  1. <template>
  2. <el-checkbox
  3. v-model="checkAll"
  4. :indeterminate="isIndeterminate"
  5. @change="handleCheckAllChange"
  6. >Check all</el-checkbox
  7. >
  8. <el-checkbox-group
  9. v-model="checkedCities"
  10. @change="handleCheckedCitiesChange"
  11. >
  12. <el-checkbox v-for="city in cities" :key="city" :label="city">{{
  13. city
  14. }}</el-checkbox>
  15. </el-checkbox-group>
  16. </template>
  17. <script lang="ts" setup>
  18. import { ref } from 'vue'
  19. const checkAll = ref(false)
  20. const isIndeterminate = ref(true)
  21. const checkedCities = ref(['Shanghai', 'Beijing'])
  22. const cities = ['Shanghai', 'Beijing', 'Guangzhou', 'Shenzhen']
  23. const handleCheckAllChange = (val: boolean) => {
  24. checkedCities.value = val ? cities : []
  25. isIndeterminate.value = false
  26. }
  27. const handleCheckedCitiesChange = (value: string[]) => {
  28. const checkedCount = value.length
  29. checkAll.value = checkedCount === cities.length
  30. isIndeterminate.value = checkedCount > 0 && checkedCount < cities.length
  31. }
  32. </script>