DashboardSummaryInfos.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <q-card class="summary-card shadow-card q-ma-md bg-surface card-border" :flat="false">
  3. <q-card-section class="q-pa-md">
  4. <div class="row items-center no-wrap q-gutter-x-md">
  5. <div class="row items-center no-wrap q-gutter-x-sm col">
  6. <q-avatar size="54px" :style="!data?.profile_photo ? avatarStyle : undefined" class="">
  7. <img v-if="data?.profile_photo" :src="data.profile_photo" style="object-fit:cover;width:100%;height:100%;border-radius:50%" />
  8. <span v-else>{{ data?.name?.slice(0, 2).toUpperCase() ?? '??' }}</span>
  9. </q-avatar>
  10. <div class="column q-gutter-y-xs min-width-0">
  11. <span class="summary-greeting font14 fontmedium">{{ $t('provider.dashboard.summary.welcome') }}</span>
  12. <span class="summary-name text-primary font16 fontbold">{{ data?.name ?? $t('provider.dashboard.summary.welcome') }}</span>
  13. </div>
  14. </div>
  15. <div class="column items-end q-gutter-y-xs col-auto">
  16. <span class="summary-label text-grey-6 font12 fontbold">{{ $t('provider.dashboard.summary.my_schedules') }}</span>
  17. <span class="summary-count row">
  18. <q-icon name="mdi-clock-check-outline" class="q-my-auto" size="xs" color="positive" />
  19. <span class="q-my-auto q-ml-sm">{{ data?.pending_services ?? 0 }}</span>
  20. </span>
  21. </div>
  22. </div>
  23. <div class="row items-center justify-between no-wrap q-mt-xs">
  24. <div class="text-text col font8 fontmedium ellipsis">
  25. {{ formatAddress(data.address) }}
  26. </div>
  27. <q-icon name="mdi-chevron-down" color="secondary" size="18px" class="col-auto" />
  28. </div>
  29. </q-card-section>
  30. </q-card>
  31. </template>
  32. <script setup>
  33. import { formatAddress } from 'src/helpers/utils';
  34. defineProps({ data: { type: Object, default: () => null } });
  35. const avatarStyle = {
  36. background: 'linear-gradient(135deg, #ffd7e8 0%, #ff9acc 100%)',
  37. color: '#7a154f',
  38. };
  39. </script>
  40. <style scoped lang="scss">
  41. .summary-card { overflow: hidden; }
  42. .min-width-0 { min-width: 0; }
  43. .summary-greeting { color: #8c8c98; display: block; }
  44. .summary-name { display: block; line-height: 1.1; }
  45. .summary-label { white-space: nowrap; }
  46. .summary-count {
  47. color: #3a3a4a;
  48. }
  49. </style>