Whole site refactor. Added pinia stores and authentication capability.
This commit is contained in:
170
src/App.vue
170
src/App.vue
@@ -1,176 +1,10 @@
|
||||
<template>
|
||||
<NavBar @form="switchToFrom" @order="switchToOrders"/>
|
||||
|
||||
<div v-if="isLoading">
|
||||
<LoadingComponent/>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="isForm">
|
||||
<MainForm
|
||||
v-if="order == undefined || order.MZN_Bufor==1"
|
||||
:is-dark-theme="isDarkTheme"
|
||||
v-model:order-uuid="uuid"
|
||||
v-model:contractors="contractors"
|
||||
v-model:categories="categories"
|
||||
v-model:contractor="contractor"
|
||||
v-model:delivery-date="deliveryDate"
|
||||
v-model:show-modal="showModal"
|
||||
/>
|
||||
<ConfirmedForm v-else-if="order.MZN_Bufor==0"
|
||||
:order-date="orderDate"
|
||||
:uuid = "uuid"
|
||||
:delivery-date="deliveryDate"
|
||||
v-model:contractor="contractor"
|
||||
v-model:categories="categories"
|
||||
v-model:order="order">
|
||||
</ConfirmedForm>
|
||||
</div>
|
||||
<OrdersSelector class="box is-shadowless" v-else-if="isOrders"
|
||||
v-model:orders="orders"
|
||||
@order="viewOrder"
|
||||
/>
|
||||
</div>
|
||||
<ConfirmationModal v-show="showModal" @close="showModal = false" @confirm="closeModal" :order-uuid="uuid"></ConfirmationModal>
|
||||
<RouterView />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import './assets/style.scss'
|
||||
import type { Category, Contractor, Order } from '@/main'
|
||||
import { ref } from 'vue'
|
||||
|
||||
const contractors = ref<Array<Contractor>>();
|
||||
const contractor = ref<Contractor>();
|
||||
const categories = ref<Array<Category>>();
|
||||
const orders = ref<Array<Order>>(new Array<Order>());
|
||||
const order = ref<Order>();
|
||||
const deliveryDate = ref<Date>();
|
||||
const orderDate = ref<Date>();
|
||||
const uuid = ref<string>();
|
||||
const isForm = ref<boolean>(true);
|
||||
const isOrders = ref<boolean>(false);
|
||||
const showModal = ref<boolean>(false);
|
||||
const isDarkTheme = ref<boolean>(false);
|
||||
const isLoading = ref<boolean>(true);
|
||||
|
||||
async function fetchContractors() {
|
||||
const response = await fetch('https://zamowienia.mleczarnia-kuzma.pl/api/kontrahenci');
|
||||
contractors.value = await response.json();
|
||||
}
|
||||
|
||||
async function fetchCategories() {
|
||||
const response = await fetch('https://zamowienia.mleczarnia-kuzma.pl/api/towary');
|
||||
categories.value = await response.json();
|
||||
if(categories.value != undefined) {
|
||||
for (let category of categories.value) {
|
||||
for (let product of category.Towary) {
|
||||
product.Options = new Array(product.Twr_JM);
|
||||
product.ChosenOption = product.Twr_JM;
|
||||
if (product.Twr_JMZ != null) {
|
||||
product.Options.push(product.Twr_JMZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchOrdersInBuffer() {
|
||||
const response = await fetch('https://zamowienia.mleczarnia-kuzma.pl/api/zamowienia/bufor');
|
||||
let ordersTemp : Array<Order> = await response.json();
|
||||
orders.value.push(...ordersTemp);
|
||||
}
|
||||
|
||||
async function fetchOrdersOutOfBuffer() {
|
||||
const response = await fetch('https://zamowienia.mleczarnia-kuzma.pl/api/zamowienia');
|
||||
let ordersTemp : Array<Order> = await response.json();
|
||||
orders.value.push(...ordersTemp);
|
||||
}
|
||||
|
||||
async function fetchData() {
|
||||
await fetchContractors();
|
||||
await fetchCategories();
|
||||
await fetchOrdersInBuffer();
|
||||
await fetchOrdersOutOfBuffer();
|
||||
isLoading.value = false;
|
||||
}
|
||||
|
||||
function switchToFrom() {
|
||||
if(!isForm.value) {
|
||||
isForm.value = true;
|
||||
isOrders.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function switchToOrders() {
|
||||
if(!isOrders.value) {
|
||||
isLoading.value = true;
|
||||
isForm.value = false;
|
||||
isOrders.value = true;
|
||||
orders.value = new Array<Order>();
|
||||
await fetchOrdersInBuffer();
|
||||
await fetchOrdersOutOfBuffer();
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
function checkTheme() {
|
||||
isDarkTheme.value = !!window?.matchMedia?.('(prefers-color-scheme:dark)')?.matches;
|
||||
}
|
||||
|
||||
function viewOrder(event : Event) {
|
||||
console.log('parent');
|
||||
isForm.value=true;
|
||||
isOrders.value=false;
|
||||
window.scrollTo(0, 0);
|
||||
console.log(event.MZN_UUID);
|
||||
if (categories.value == undefined) return;
|
||||
isLoading.value = true;
|
||||
loadOrder(event.MZN_UUID, false);
|
||||
}
|
||||
|
||||
function closeModal() {
|
||||
showModal.value = false;
|
||||
if (uuid.value != undefined) {
|
||||
isLoading.value = true;
|
||||
loadOrder(uuid.value, true);
|
||||
}
|
||||
}
|
||||
|
||||
async function loadOrder(uuid: string, confirmed: boolean) {
|
||||
const response = await fetch('https://zamowienia.mleczarnia-kuzma.pl/api/zamowienie/' + uuid);
|
||||
let tempOrder = await response.json();
|
||||
|
||||
if(confirmed) {
|
||||
tempOrder.MZN_Bufor = 0;
|
||||
}
|
||||
|
||||
contractor.value = contractors.value?.find((contractor) => contractor.Knt_KntId == tempOrder.MZN_PodID);
|
||||
deliveryDate.value = new Date(tempOrder.MZN_DataDos);
|
||||
orderDate.value = new Date(tempOrder.MZN_DataZam);
|
||||
order.value = tempOrder;
|
||||
|
||||
if(categories.value == undefined) {
|
||||
isLoading.value = false;
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(order.value);
|
||||
|
||||
for(let orderProduct of tempOrder.MZamElem){
|
||||
for(let category of categories.value) {
|
||||
let product = category.Towary.find(product => (product.Twr_TwrId == orderProduct.MZE_TwrId));
|
||||
if(product != undefined && orderProduct.MZE_TwrCena != null) {
|
||||
product.Twr_Cena = orderProduct.MZE_TwrCena.slice(0, -2);
|
||||
product.Quantity = orderProduct.MZE_TwrIlosc.slice(0, -2);
|
||||
category.isVisible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
isLoading.value = false;
|
||||
}
|
||||
|
||||
fetchData();
|
||||
checkTheme();
|
||||
import { RouterView } from 'vue-router'
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
Reference in New Issue
Block a user