layout02UserWidgetS.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <ul class="data--list--content--modal">
  3. <li
  4. v-for="(item, index) in props.items"
  5. :key="`user-widget-${index}`"
  6. :class="item.level"
  7. >
  8. <h2>
  9. <span>
  10. {{ item.tenantName }}
  11. </span>
  12. </h2>
  13. <div class="data--column">
  14. <div class="percent">
  15. {{ item.perSubscriber }}<i class="unit">%</i>
  16. </div>
  17. <div class="data--bar--chart">
  18. <div class="data--bar--wrap">
  19. <div
  20. class="data--bar--current"
  21. :style="{width:item.perSubscriber + '%'}"
  22. >
  23. {{ toRoundFix(item.curSubscriber, 0) }}/{{ item.maxSubscriber }}
  24. </div>
  25. </div>
  26. </div>
  27. </div>
  28. </li>
  29. </ul>
  30. </template>
  31. <script setup>
  32. /***********************
  33. * import
  34. ************************/
  35. import { useI18n } from "vue-i18n"
  36. import apiUrl from '@/composables/useApi';
  37. import useAxios from '@/composables/useAxios';
  38. import useUtil from '@/composables/useUtil';
  39. /***********************
  40. * plugins inject
  41. ************************/
  42. const { $toast, $log, $dayjs, $eventBus } = useNuxtApp()
  43. // props
  44. const props = defineProps({
  45. items: {
  46. type: Array,
  47. default: () => []
  48. },
  49. })
  50. // 참조가능 데이터 설정
  51. defineExpose({})
  52. // 발신 이벤트 선언
  53. const emit = defineEmits([]);
  54. const i18n = useI18n();
  55. /***********************
  56. * data & created
  57. ************************/
  58. /***********************
  59. * Methods
  60. ************************/
  61. const toRoundFix = (data, digit) => parseFloat(data).toFixed(digit);
  62. </script>