|
@@ -10,7 +10,7 @@
|
|
|
>
|
|
>
|
|
|
<q-card-section class="q-pa-md">
|
|
<q-card-section class="q-pa-md">
|
|
|
<div class="row no-wrap items-start q-mb-xs">
|
|
<div class="row no-wrap items-start q-mb-xs">
|
|
|
- <div class="col-7 row">
|
|
|
|
|
|
|
+ <div class="col-8 row">
|
|
|
<q-avatar size="40px" class="flex-shrink-0 q-mr-sm">
|
|
<q-avatar size="40px" class="flex-shrink-0 q-mr-sm">
|
|
|
<span
|
|
<span
|
|
|
:style="avatarColors[item.id % avatarColors.length]"
|
|
:style="avatarColors[item.id % avatarColors.length]"
|
|
@@ -22,7 +22,7 @@
|
|
|
</q-avatar>
|
|
</q-avatar>
|
|
|
|
|
|
|
|
<div class="col column no-wrap overflow-hidden justify-center">
|
|
<div class="col column no-wrap overflow-hidden justify-center">
|
|
|
- <span class="text-body2 text-text leading-tight">
|
|
|
|
|
|
|
+ <span class="text-caption text-text">
|
|
|
<template v-if="cardState(item) === 'finished'">
|
|
<template v-if="cardState(item) === 'finished'">
|
|
|
{{ $t('provider.dashboard.today_services.finished_label') }}
|
|
{{ $t('provider.dashboard.today_services.finished_label') }}
|
|
|
<span class="text-weight-bold"> {{ ' ' + item.client_name ?? '—' }}</span>
|
|
<span class="text-weight-bold"> {{ ' ' + item.client_name ?? '—' }}</span>
|
|
@@ -33,23 +33,23 @@
|
|
|
<span class="text-weight-bold"> {{ ' ' + item.client_name ?? '—' }}</span>
|
|
<span class="text-weight-bold"> {{ ' ' + item.client_name ?? '—' }}</span>
|
|
|
</template>
|
|
</template>
|
|
|
</span>
|
|
</span>
|
|
|
- <div class="row items-center q-mt-xs">
|
|
|
|
|
- <q-icon name="mdi-clock-outline" size="13px" class="q-mr-xs gradient-diarista" />
|
|
|
|
|
- <span class="text-caption text-grey-5">
|
|
|
|
|
|
|
+ <div class="row items-center q-mt-xs no-wrap">
|
|
|
|
|
+ <q-icon name="mdi-clock-outline" size="12px" class="q-mr-xs gradient-diarista" />
|
|
|
|
|
+ <span class="hours-font text-grey-5">
|
|
|
{{ $t('common.from') }} {{ item.start_time?.slice(0, 5) }} {{ $t('common.to') }} {{ item.end_time?.slice(0, 5) }}
|
|
{{ $t('common.from') }} {{ item.start_time?.slice(0, 5) }} {{ $t('common.to') }} {{ item.end_time?.slice(0, 5) }}
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="flex-shrink-0 row items-center justify-center col-5">
|
|
|
|
|
|
|
+ <div class="flex-shrink-0 row items-center justify-center col-4">
|
|
|
<div v-if="cardState(item) === 'awaiting_code'" class="col-12 row items-center justify-center q-pb-sm q-px-sm">
|
|
<div v-if="cardState(item) === 'awaiting_code'" class="col-12 row items-center justify-center q-pb-sm q-px-sm">
|
|
|
- <div class="hint-text text-caption text-text text-weight-bold text-center q-mb-xs col-12">
|
|
|
|
|
- {{ $t('provider.dashboard.today_services.code_hint1') }}
|
|
|
|
|
|
|
+ <div class="hint-text text-caption text-text text-center q-mb-xs col-12">
|
|
|
|
|
+ {{ $t('provider.dashboard.today_services.code_hint') }}
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="hint-text text-caption text-text text-weight-bold text-center q-mb-xs col-12">
|
|
|
|
|
|
|
+ <!-- <div class="hint-text text-caption text-text text-center q-mb-xs col-12">
|
|
|
{{ $t('provider.dashboard.today_services.code_hint2') }}
|
|
{{ $t('provider.dashboard.today_services.code_hint2') }}
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
<div class="code-input-row col-12">
|
|
<div class="code-input-row col-12">
|
|
|
<input
|
|
<input
|
|
|
v-for="(_, idx) in 4"
|
|
v-for="(_, idx) in 4"
|
|
@@ -77,7 +77,7 @@
|
|
|
</span>
|
|
</span>
|
|
|
<div class="code-pill bg-positive row">
|
|
<div class="code-pill bg-positive row">
|
|
|
<q-icon
|
|
<q-icon
|
|
|
- name="mdi-check" size="14px" class="q-mr-xs q-my-auto"
|
|
|
|
|
|
|
+ name="mdi-check" size="12px" class="q-mr-xs q-my-auto"
|
|
|
/>
|
|
/>
|
|
|
{{ item.code || localVerified[item.id] }}
|
|
{{ item.code || localVerified[item.id] }}
|
|
|
</div>
|
|
</div>
|
|
@@ -93,10 +93,13 @@
|
|
|
v-else
|
|
v-else
|
|
|
unelevated no-caps
|
|
unelevated no-caps
|
|
|
class="rate-btn"
|
|
class="rate-btn"
|
|
|
- icon="mdi-star-outline"
|
|
|
|
|
- :label="$t('provider.dashboard.today_services.rate_btn')"
|
|
|
|
|
@click.stop="emit('rate', item)"
|
|
@click.stop="emit('rate', item)"
|
|
|
- />
|
|
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="column items-center">
|
|
|
|
|
+ <q-icon name="mdi-star-outline" size="12px" class="q-mr-xs" />
|
|
|
|
|
+ {{ $t('provider.dashboard.today_services.rate_btn') }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </q-btn>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -123,7 +126,7 @@
|
|
|
<q-icon name="mdi-clock-outline" size="13px" class="q-mr-xs flex-shrink-0 gradient-diarista" />
|
|
<q-icon name="mdi-clock-outline" size="13px" class="q-mr-xs flex-shrink-0 gradient-diarista" />
|
|
|
<span class="text-caption text-grey-6 text-right text-no-wrap">
|
|
<span class="text-caption text-grey-6 text-right text-no-wrap">
|
|
|
{{ $t('provider.dashboard.today_services.end_time_label') }}
|
|
{{ $t('provider.dashboard.today_services.end_time_label') }}
|
|
|
- <span class="gradient-diarista">{{ item.end_time?.slice(0, 5) }}</span>
|
|
|
|
|
|
|
+ <span class="gradient-diarista">{{ calculateTimeUntilEnd(item.end_time) }}</span>
|
|
|
</span>
|
|
</span>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="cardState(item) === 'awaiting_code'">
|
|
<template v-else-if="cardState(item) === 'awaiting_code'">
|
|
@@ -244,6 +247,18 @@ const progressByState = (item) => {
|
|
|
return 100
|
|
return 100
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const calculateTimeUntilEnd = (endTimeStr) => {
|
|
|
|
|
+ const [h, m] = (endTimeStr || '23:59').slice(0, 5).split(':').map(Number)
|
|
|
|
|
+ const now = new Date()
|
|
|
|
|
+ const endTime = new Date()
|
|
|
|
|
+ endTime.setHours(h, m, 0, 0)
|
|
|
|
|
+ const diffMs = endTime - now
|
|
|
|
|
+ if (diffMs <= 0) return '00:00'
|
|
|
|
|
+ const diffH = Math.floor(diffMs / (1000 * 60 * 60))
|
|
|
|
|
+ const diffM = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60))
|
|
|
|
|
+ return `${String(diffH).padStart(2, '0')}h:${String(diffM).padStart(2, '0')}`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const openHelp = () => {
|
|
const openHelp = () => {
|
|
|
$q.dialog({ component: ProfileHelpDialog })
|
|
$q.dialog({ component: ProfileHelpDialog })
|
|
|
}
|
|
}
|
|
@@ -281,13 +296,13 @@ const openHelp = () => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.code-input-box {
|
|
.code-input-box {
|
|
|
- width: 26px;
|
|
|
|
|
- height: 32px;
|
|
|
|
|
|
|
+ width: 16px;
|
|
|
|
|
+ height: 22px;
|
|
|
background: #d1d5db;
|
|
background: #d1d5db;
|
|
|
border: none;
|
|
border: none;
|
|
|
border-radius: 6px;
|
|
border-radius: 6px;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
- font-size: 15px;
|
|
|
|
|
|
|
+ font-size: 11px;
|
|
|
font-weight: 700;
|
|
font-weight: 700;
|
|
|
color: #1a1a2e;
|
|
color: #1a1a2e;
|
|
|
outline: none;
|
|
outline: none;
|
|
@@ -307,10 +322,10 @@ const openHelp = () => {
|
|
|
.code-pill {
|
|
.code-pill {
|
|
|
color: white;
|
|
color: white;
|
|
|
font-weight: 800;
|
|
font-weight: 800;
|
|
|
- font-size: 15px;
|
|
|
|
|
|
|
+ font-size: 12px;
|
|
|
letter-spacing: 2px;
|
|
letter-spacing: 2px;
|
|
|
border-radius: 20px;
|
|
border-radius: 20px;
|
|
|
- padding: 1px 18px;
|
|
|
|
|
|
|
+ padding: 1px 8px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.badge-status-text {
|
|
.badge-status-text {
|
|
@@ -321,13 +336,13 @@ const openHelp = () => {
|
|
|
.rate-btn {
|
|
.rate-btn {
|
|
|
background: #EC4899;
|
|
background: #EC4899;
|
|
|
color: white;
|
|
color: white;
|
|
|
- font-weight: 700;
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ font-size: 11px;
|
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|
|
|
border-radius: 10px !important;
|
|
border-radius: 10px !important;
|
|
|
- min-width: 72px;
|
|
|
|
|
- min-height: 56px;
|
|
|
|
|
- padding: 6px 10px;
|
|
|
|
|
|
|
+ min-width: 45px;
|
|
|
|
|
+ min-height: 40px;
|
|
|
|
|
+ padding: 3px 5px;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -359,4 +374,8 @@ const openHelp = () => {
|
|
|
background: #22c55e;
|
|
background: #22c55e;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.hours-font {
|
|
|
|
|
+ font-size: 11px;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|