Преглед изворни кода

feat: listagem propostas enviadas pelo prestador

Gustavo Zanatta пре 1 недеља
родитељ
комит
2b9b51c4c7

+ 22 - 9
src/components/dashboard/DashboardOpportunities.vue

@@ -153,15 +153,28 @@
                 {{ item.custom_schedule?.address_type }}
               </div>
 
-              <q-btn
-                color="primary"
-                no-caps
-                rounded
-                size="xs"
-                unelevated
-                :label="$t('common.details')"
-                @click="openOpportunityDetails(item)"
-              />
+              <div class="row items-center q-gutter-x-sm">
+                <q-btn
+                  v-if="item.proposal_sent"
+                  color="grey-5"
+                  disable
+                  no-caps
+                  rounded
+                  size="xs"
+                  unelevated
+                  :label="$t('provider.dashboard.opportunities.requested')"
+                />
+
+                <q-btn
+                  color="primary"
+                  no-caps
+                  rounded
+                  size="xs"
+                  unelevated
+                  :label="$t('common.details')"
+                  @click="openOpportunityDetails(item)"
+                />
+              </div>
             </div>
           </q-card-section>
         </q-card>

+ 1 - 0
src/i18n/locales/en.json

@@ -337,6 +337,7 @@
         "empty_alert_text": "Wait for a client request and keep an eye out in case opportunities appear here.",
         "distance_km": "{distance} km from you",
         "details": "View details",
+        "requested": "Requested",
         "currency": "R$ {value}"
       },
       "opportunity_details": {

+ 1 - 0
src/i18n/locales/es.json

@@ -337,6 +337,7 @@
         "empty_alert_text": "Espera la solicitud de un cliente y mantente atento por si aparecen oportunidades aquí.",
         "distance_km": "{distance} km de ti",
         "details": "Ver detalles",
+        "requested": "Solicitado",
         "currency": "R$ {value}"
       },
       "opportunity_details": {

+ 1 - 0
src/i18n/locales/pt.json

@@ -337,6 +337,7 @@
         "empty_alert_text": "Aguarde a solicitação de um cliente e fique atento caso apareçam oportunidades aqui.",
         "distance_km": "{distance} km de você",
         "details": "Ver detalhes",
+        "requested": "Solicitado",
         "currency": "R$ {value}"
       },
       "opportunity_details": {

+ 13 - 0
src/pages/opportunities/OpportunitiesPage.vue

@@ -137,6 +137,19 @@
 
           <q-space />
 
+          <q-btn
+            v-if="item.proposal_sent"
+            class="font11 fontsemibold q-mr-sm"
+            color="grey-5"
+            disable
+            no-caps
+            padding="4px 12px"
+            rounded
+            size="xs"
+            unelevated
+            :label="$t('provider.dashboard.opportunities.requested')"
+          />
+
           <q-btn
             class="font11 fontsemibold"
             color="secondary"

+ 10 - 2
src/pages/opportunities/components/OpportunityDetailsDialog.vue

@@ -193,12 +193,15 @@
       <div class="q-px-md text-center">
         <q-btn
           class="font11 fontsemibold full-width"
-          color="primary"
           no-caps
           rounded
           unelevated
+          :color="details.proposal_sent ? 'grey-5' : 'primary'"
+          :disable="details.proposal_sent"
           :label="
-            $t('provider.dashboard.opportunity_details.button_accept')
+            details.proposal_sent
+              ? $t('provider.dashboard.opportunities.requested')
+              : $t('provider.dashboard.opportunity_details.button_accept')
           "
           @click="goToProposalFlow"
         />
@@ -206,6 +209,7 @@
 
       <div class="q-px-md">
         <q-btn
+          v-if="!details.proposal_sent"
           class="refuse-btn font11 fontsemibold full-width"
           flat
           label="Recusar oportunidade"
@@ -398,6 +402,10 @@ const goBack = () => {
 }
 
 const goToProposalFlow = async () => {
+  if (details.value?.proposal_sent) {
+    return
+  }
+
   await proposalOpportunity(
     details.value.schedule_id,
     user.user.provider.id