Fixed page layout and edit delivery

This commit is contained in:
2025-09-06 09:44:01 -04:00
parent 45b536baca
commit 9d86b4a60e
8 changed files with 120 additions and 82 deletions

View File

@@ -1,38 +1,3 @@
<!-- App.vue -->
<template> <template>
<div class="drawer lg:drawer-open"> <router-view />
<input id="my-drawer-2" type="checkbox" class="drawer-toggle" />
<!--
DRAWER CONTENT: Main page content area.
FIX: Added `relative` so the absolutely positioned search results are contained within it.
-->
<div class="drawer-content flex flex-col relative">
<HeaderAuth />
<main class="flex-1 p-4 md:p-8 bg-base-200">
<router-view />
</main>
<!-- The SearchResults component now lives here and will appear as an overlay -->
<SearchResults v-if="searchStore.showResults" />
<notifications position="top center" />
</div>
<!-- DRAWER SIDE: This is your main navigation sidebar. It is no longer conditional. -->
<div class="drawer-side">
<label for="my-drawer-2" class="drawer-overlay"></label>
<SideBar />
</div>
</div>
</template> </template>
<script setup lang="ts">
import { useSearchStore } from './stores/search';
import HeaderAuth from './layouts/headers/headerauth.vue';
import SideBar from './layouts/sidebar/sidebar.vue';
// Make sure this path and component name are correct
import SearchResults from './components/SearchResults.vue';
const searchStore = useSearchStore();
</script>

View File

@@ -0,0 +1,10 @@
<template>
<!-- This will render the page component directly without any wrappers -->
<router-view />
</template>
<script>
export default {
name: 'BlankLayout'
}
</script>

View File

@@ -0,0 +1,37 @@
<template>
<div class="drawer lg:drawer-open">
<input id="my-drawer-2" type="checkbox" class="drawer-toggle" />
<!--
DRAWER CONTENT: Main page content area.
FIX: Added `relative` so the absolutely positioned search results are contained within it.
-->
<div class="drawer-content flex flex-col relative">
<HeaderAuth />
<main class="flex-1 p-4 md:p-8 bg-base-200">
<router-view />
</main>
<!-- The SearchResults component now lives here and will appear as an overlay -->
<SearchResults v-if="searchStore.showResults" />
<notifications position="top center" />
</div>
<!-- DRAWER SIDE: This is your main navigation sidebar. It is no longer conditional. -->
<div class="drawer-side">
<label for="my-drawer-2" class="drawer-overlay"></label>
<SideBar />
</div>
</div>
</template>
<script setup lang="ts">
import { useSearchStore } from '../stores/search';
import HeaderAuth from './headers/headerauth.vue';
import SideBar from './sidebar/sidebar.vue';
// Make sure this path and component name are correct
import SearchResults from '../components/SearchResults.vue';
const searchStore = useSearchStore();
</script>

View File

@@ -413,8 +413,8 @@ export default defineComponent({
headers: authHeader(), headers: authHeader(),
}) })
.then((response: any) => { .then((response: any) => {
if (response.data) { if (response.data && response.data.ok) {
this.deliveryOrder = response.data this.deliveryOrder = response.data.delivery
this.getCustomer(this.deliveryOrder.customer_id) this.getCustomer(this.deliveryOrder.customer_id)
if (this.deliveryOrder.payment_type === 1) { if (this.deliveryOrder.payment_type === 1) {
@@ -427,14 +427,15 @@ export default defineComponent({
this.getPaymentCard(this.deliveryOrder.payment_card_id); this.getPaymentCard(this.deliveryOrder.payment_card_id);
} }
this.FinalizeOilOrderForm.cash_recieved = response.data.cash_recieved; this.FinalizeOilOrderForm.cash_recieved = response.data.delivery.cash_recieved;
this.FinalizeOilOrderForm.check_number = response.data.check_number; this.FinalizeOilOrderForm.check_number = response.data.delivery.check_number;
this.FinalizeOilOrderForm.credit_card_id = response.data.payment_card_id; this.FinalizeOilOrderForm.credit_card_id = response.data.delivery.payment_card_id;
if (response.data.customer_filled == 1) { if (response.data.delivery.customer_filled == 1) {
this.FinalizeOilOrderForm.customer_filled = true this.FinalizeOilOrderForm.customer_filled = true
} }
} else {
console.error("API Error:", response.data.error || "Failed to fetch delivery data.");
} }
}) })
}, },

View File

@@ -397,13 +397,17 @@ export default defineComponent({
withCredentials: true, withCredentials: true,
}) })
.then((response: any) => { .then((response: any) => {
this.delivery = response.data; if (response.data && response.data.ok) {
this.getCustomer(this.delivery.customer_id) this.delivery = response.data.delivery;
this.getCreditCards(this.delivery.customer_id) this.getCustomer(this.delivery.customer_id)
if (this.delivery.promo_id != null) { this.getCreditCards(this.delivery.customer_id)
this.getPromo(this.delivery.promo_id); if (this.delivery.promo_id != null) {
this.promo_active = true; this.getPromo(this.delivery.promo_id);
} this.promo_active = true;
}
} else {
console.error("API Error:", response.data.error || "Failed to fetch delivery data.");
}
}) })
.catch(() => { .catch(() => {
notify({ notify({

View File

@@ -5,19 +5,19 @@ import Ticket from "../ticket/ticket.vue";
import TicketAuto from "../ticket/ticketauto.vue"; import TicketAuto from "../ticket/ticketauto.vue";
const payRoutes = [ const ticketRoutes = [
{ {
path: '/ticket/:id', path: ':id',
name: 'Ticket', name: 'Ticket',
component: Ticket, component: Ticket,
}, },
{ {
path: '/ticket/auto/:id', path: 'auto/:id',
name: 'TicketAuto', name: 'TicketAuto',
component: TicketAuto, component: TicketAuto,
}, },
] ]
export default payRoutes export default ticketRoutes
//sourceMappingURL=index.ts.map //sourceMappingURL=index.ts.map

View File

@@ -285,14 +285,17 @@ export default defineComponent({
withCredentials: true, withCredentials: true,
}) })
.then((response: any) => { .then((response: any) => {
this.delivery = response.data; if (response.data && response.data.ok) {
this.getCustomer(this.delivery.customer_id) this.delivery = response.data.delivery;
if (this.delivery.promo_id != null) { this.getCustomer(this.delivery.customer_id)
this.getPromo(this.delivery.promo_id); if (this.delivery.promo_id != null) {
this.promo_active = true; this.getPromo(this.delivery.promo_id);
this.getPrice(delivery_id) this.promo_active = true;
this.getPrice(delivery_id)
}
} else {
console.error("API Error:", response.data.error || "Failed to fetch delivery data.");
} }
}) })
.catch(() => { .catch(() => {
notify({ notify({

View File

@@ -17,6 +17,10 @@ import serviceRoutes from "../pages/service/routes.ts";
import Home from '../pages/Index.vue'; import Home from '../pages/Index.vue';
import Error404 from '../pages/error/Error404.vue'; import Error404 from '../pages/error/Error404.vue';
// Import layouts
import DefaultLayout from '../layouts/DefaultLayout.vue';
import BlankLayout from '../layouts/BlankLayout.vue';
// Import the Pinia Stores // Import the Pinia Stores
import { useAuthStore } from '../stores/auth.ts'; import { useAuthStore } from '../stores/auth.ts';
import { useCountsStore } from '../stores/counts.ts'; import { useCountsStore } from '../stores/counts.ts';
@@ -33,30 +37,44 @@ const protectRoutes = (routes: any[]) => {
}; };
const routes = [ const routes = [
// ... routes are unchanged // Auth routes (no layout needed, they handle their own)
...authRoutes, ...authRoutes,
...protectRoutes(moneyRoutes),
...protectRoutes(cardRoutes),
...protectRoutes(payRoutes),
...protectRoutes(employeeRoutes),
...protectRoutes(customerRoutes),
...protectRoutes(oilRoutes),
...protectRoutes(autoRoutes),
...protectRoutes(adminRoutes),
...protectRoutes(tickerRoutes),
...protectRoutes(serviceRoutes),
// Default layout routes
{ {
path: '/', path: '/',
name: 'home', component: DefaultLayout,
component: Home, children: [
meta: { requiresAuth: true } ...protectRoutes(moneyRoutes),
...protectRoutes(cardRoutes),
...protectRoutes(payRoutes),
...protectRoutes(employeeRoutes),
...protectRoutes(customerRoutes),
...protectRoutes(oilRoutes),
...protectRoutes(autoRoutes),
...protectRoutes(adminRoutes),
...protectRoutes(serviceRoutes),
{
path: '',
name: 'home',
component: Home,
meta: { requiresAuth: true }
},
{
path: '/error404',
name: 'Error404',
component: Error404,
meta: { requiresAuth: false }
},
]
}, },
// Blank layout for ticket pages
{ {
path: '/:catchAll(.*)*', path: '/ticket',
name: 'Error404', component: BlankLayout,
component: Error404, children: protectRoutes(tickerRoutes)
meta: { requiresAuth: false }
}, },
]; ];