|
|
@@ -0,0 +1,216 @@
|
|
|
+<template>
|
|
|
+ <q-page class="details-page">
|
|
|
+ <!-- HEADER -->
|
|
|
+ <div class="page-header">
|
|
|
+ <q-btn
|
|
|
+ flat
|
|
|
+ round
|
|
|
+ dense
|
|
|
+ icon="chevron_left"
|
|
|
+ class="back-btn"
|
|
|
+ @click="router.back()"
|
|
|
+ />
|
|
|
+ <div class="page-title">{{ mockDetails.title }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- CLIENTE -->
|
|
|
+ <div class="client-section">
|
|
|
+ <img :src="AvatarMock" class="client-avatar" />
|
|
|
+ <div class="client-name">{{ mockDetails.clientName }}</div>
|
|
|
+ <div class="client-price">{{ mockDetails.price }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- INFOS -->
|
|
|
+ <div class="details-info">
|
|
|
+ <div>{{ mockDetails.date }}</div>
|
|
|
+ <div>{{ mockDetails.hour }}</div>
|
|
|
+ <div>{{ mockDetails.address }}</div>
|
|
|
+ <div>{{ mockDetails.distance }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- TAGS -->
|
|
|
+ <div class="tags-row">
|
|
|
+ <q-chip dense color="grey-3">
|
|
|
+ {{ mockDetails.tags[0] }}
|
|
|
+ </q-chip>
|
|
|
+
|
|
|
+ <q-chip dense color="grey-3">
|
|
|
+ {{ mockDetails.tags[1] }}
|
|
|
+ </q-chip>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- DESCRIÇÃO -->
|
|
|
+ <div class="description-box">
|
|
|
+ {{ mockDetails.description }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- BOTÃO -->
|
|
|
+ <q-btn
|
|
|
+ unelevated
|
|
|
+ rounded
|
|
|
+ no-caps
|
|
|
+ color="secondary"
|
|
|
+ :label="mockDetails.buttonLabel"
|
|
|
+ class="full-width q-mt-md"
|
|
|
+ @click="goToProposalFlow"
|
|
|
+ />
|
|
|
+
|
|
|
+ <!-- ALERTA -->
|
|
|
+ <q-card flat class="bottom-alert">
|
|
|
+ {{ mockDetails.alertText }}
|
|
|
+ </q-card>
|
|
|
+ </q-page>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
+import AvatarMock from 'src/assets/foto_diarista_login.svg'
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+
|
|
|
+const mockDetails = {
|
|
|
+ title: 'Detalhes do serviço',
|
|
|
+ clientName: 'Helena',
|
|
|
+ price: 'R$245,00',
|
|
|
+ date: 'Domingo, 04/10',
|
|
|
+ hour: 'Das 08h00 às 17h00',
|
|
|
+ address: 'Rua Teste, 123',
|
|
|
+ distance: '4,2 km da sua localização',
|
|
|
+ tags: ['Comercial', 'Refeição no local'],
|
|
|
+ description: 'Limpeza pós obra detalhada para salão comercial.',
|
|
|
+ buttonLabel: 'Quero atender',
|
|
|
+ alertText:
|
|
|
+ 'Se seu pedido for aceito pelo cliente você receberá um aviso confirmando o agendamento e aparecerá nos seus próximos serviços.'
|
|
|
+}
|
|
|
+
|
|
|
+const goToProposalFlow = () => {
|
|
|
+ console.log('seguir fluxo')
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+.details-page {
|
|
|
+ padding: 16px;
|
|
|
+ background: #f7f7fb;
|
|
|
+ min-height: 100vh;
|
|
|
+}
|
|
|
+
|
|
|
+.page-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ position: relative;
|
|
|
+ margin-bottom: 24px;
|
|
|
+}
|
|
|
+
|
|
|
+.back-btn {
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: -4px;
|
|
|
+}
|
|
|
+
|
|
|
+.page-title {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 700;
|
|
|
+ color: #7c5cff;
|
|
|
+}
|
|
|
+
|
|
|
+.client-section {
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.client-avatar {
|
|
|
+ width: 84px;
|
|
|
+ height: 84px;
|
|
|
+ border-radius: 50%;
|
|
|
+ object-fit: cover;
|
|
|
+}
|
|
|
+
|
|
|
+.client-name {
|
|
|
+ margin-top: 8px;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #666;
|
|
|
+}
|
|
|
+
|
|
|
+.client-price {
|
|
|
+ margin-top: 8px;
|
|
|
+ color: #7c5cff;
|
|
|
+ font-size: 32px;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+
|
|
|
+.details-info {
|
|
|
+ margin-top: 12px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 13px;
|
|
|
+ line-height: 1.6;
|
|
|
+ color: #666;
|
|
|
+}
|
|
|
+
|
|
|
+.distance-info {
|
|
|
+ margin-top: 12px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
+
|
|
|
+.service-highlight {
|
|
|
+ margin-top: 16px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #666;
|
|
|
+}
|
|
|
+
|
|
|
+.highlight-text {
|
|
|
+ color: #7c5cff;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+
|
|
|
+.tags-row {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ gap: 8px;
|
|
|
+ margin: 18px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.tags-row .q-chip {
|
|
|
+ border: 1px solid #7c5cff;
|
|
|
+ color: #7c5cff;
|
|
|
+ background: white;
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.info-title {
|
|
|
+ text-align: center;
|
|
|
+ color: #7c5cff;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 700;
|
|
|
+ margin-bottom: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.description-box {
|
|
|
+ text-align: center;
|
|
|
+ font-size: 13px;
|
|
|
+ line-height: 1.6;
|
|
|
+ color: #666;
|
|
|
+}
|
|
|
+
|
|
|
+.full-width {
|
|
|
+ margin-top: 20px;
|
|
|
+ height: 48px;
|
|
|
+ font-size: 16px;
|
|
|
+ background: #8f6dfc !important;
|
|
|
+}
|
|
|
+
|
|
|
+.bottom-alert {
|
|
|
+ margin-top: 18px;
|
|
|
+ padding: 14px;
|
|
|
+ border-radius: 14px;
|
|
|
+ background: #dfeeff;
|
|
|
+ font-size: 12px;
|
|
|
+ line-height: 1.5;
|
|
|
+ color: #5c6b8a;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+</style>
|