recursive.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <template>
  2. <div>
  3. <span class="mr-5" v-if="currentRowType > 2">不限</span>
  4. <span v-for="(item, index) in props.items" :key="item.id">
  5. <span v-if="index < 15" class="mr-5" @click="handleClick(item)">{{ item.name }}</span>
  6. </span>
  7. <span v-if="props.items?.length >= 15" @click="handleClick(props.items, 'other')">其他</span>
  8. <recursive v-if="children" :items="children"></recursive>
  9. </div>
  10. </template>
  11. <script setup>
  12. import { ref } from 'vue'
  13. import recursive from './recursive'
  14. defineOptions({ name:'common-components-areaTree-recursive'})
  15. const props = defineProps({items: Object})
  16. let children = ref('')
  17. let currentRowType = ref(0)
  18. if (props.items && props.items.length) {
  19. const item = props.items[0] // 首个子级
  20. currentRowType.value = item.type - 0 // 当前块级数据type
  21. if (currentRowType.value < 2 && item.children && item.children.length) { // 展开子级(暂时默认展示到国家级)
  22. children.value = item.children
  23. }
  24. }
  25. const handleClick = (item, btnType) => {
  26. console.log(btnType, 'item', item)
  27. if (btnType === 'other') {
  28. return
  29. } else {
  30. if ((item.type - 0) === 1) children.value = item.children // 国家级
  31. else if ((item.type - 0) > 1) { // 省级
  32. children.value = item.children
  33. }
  34. console.log('children', children)
  35. }
  36. }
  37. </script>