DictTag.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. let TextTag = `<template>
  2. <div>
  3. <template v-for="(item, index) in options">
  4. <template v-if="values.includes(item.value)">
  5. <span
  6. v-if="item.elTagType == 'default' || item.elTagType == ''"
  7. :key="item.value"
  8. :index="index"
  9. :class="item.elTagType"
  10. >{{ item.label }}</span>
  11. <el-tag
  12. v-else
  13. size="small"
  14. :disable-transitions="true"
  15. :key="item.value + ''"
  16. :index="index"
  17. :type="item.elTagType === 'primary' ? '' : item.elTagType"
  18. :class="item.elTagType"
  19. >{{ item.label }}</el-tag>
  20. </template>
  21. </template>
  22. </div>
  23. </template>`;
  24. Vue.component('my-dicttag', {
  25. template: TextTag,
  26. props: {
  27. options: {
  28. type: Array,
  29. default: null,
  30. },
  31. // 当前的值
  32. value: [Number, String, Array],
  33. },
  34. computed: {
  35. values: function() {
  36. if (this.value !== null && typeof this.value !== "undefined") {
  37. return Array.isArray(this.value) ? this.value : [String(this.value)];
  38. } else {
  39. return [];
  40. }
  41. }
  42. },
  43. data: function() {
  44. return {}
  45. }
  46. })