intermediate.vue 947 B

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