index.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <script setup lang="ts">
  2. import { PropType } from 'vue';
  3. const props = defineProps({
  4. // 数据
  5. options: {
  6. type: Array as PropType<DictDataOption[]>,
  7. default: null,
  8. },
  9. // 当前的值
  10. value: [Number, String, Array],
  11. })
  12. const values = computed(() => {
  13. if (props.value !== null && typeof props.value !== 'undefined') {
  14. return Array.isArray(props.value) ? props.value : [String(props.value)];
  15. } else {
  16. return [];
  17. }
  18. })
  19. </script>
  20. <template>
  21. <div>
  22. <template v-for="(item, index) in options">
  23. <template v-if="values.includes(item.value)">
  24. <span
  25. v-if="item.elTagType == 'default' || item.elTagType == ''"
  26. :key="item.value"
  27. :index="index"
  28. :class="item.elTagClass"
  29. >{{ item.label }}</span
  30. >
  31. <el-tag
  32. v-else
  33. :disable-transitions="true"
  34. :key="item.value + ''"
  35. :index="index"
  36. :type="item.elTagType === 'primary' ? '' : item.elTagType"
  37. :class="item.elTagClass"
  38. >{{ item.label }}</el-tag
  39. >
  40. </template>
  41. </template>
  42. </div>
  43. </template>
  44. <style scoped>
  45. .el-tag + .el-tag {
  46. margin-left: 10px;
  47. }
  48. </style>