Updated looks

This commit is contained in:
2024-04-04 16:38:58 -04:00
parent f904875ed2
commit d48caeae63
54 changed files with 1112 additions and 1244 deletions

0
.editorconfig Normal file → Executable file
View File

4
.env Normal file → Executable file
View File

@@ -1,3 +1,5 @@
VITE_BASE_URL="http://localhost:4056" VITE_BASE_URL="http://localhost:4056"
VITE_PAY_URL="http://localhost:4052" VITE_PAY_URL="http://localhost:4052"
VITE_AUTO_URL="http://localhost:4053" VITE_AUTO_URL="http://localhost:8002"
VITE_MONEY_URL="http://localhost:8001"
VITE_PRINT_URL="http://localhost:8000"

0
.eslintignore Normal file → Executable file
View File

0
.eslintrc.cjs Normal file → Executable file
View File

3
.gitignore vendored Normal file → Executable file
View File

@@ -35,3 +35,6 @@ yarn-error.log*
# local .env files # local .env files
.env.local* .env.local*
.env
.eslintignore
.gitignore

0
.npmrc Normal file → Executable file
View File

0
.vscode/extensions.json vendored Normal file → Executable file
View File

0
.vscode/settings.json vendored Normal file → Executable file
View File

0
Dockerfile Normal file → Executable file
View File

0
README.md Normal file → Executable file
View File

0
index.html Normal file → Executable file
View File

0
main.ts Normal file → Executable file
View File

1890
package-lock.json generated

File diff suppressed because it is too large Load Diff

10
package.json Normal file → Executable file
View File

@@ -29,14 +29,14 @@
"eslint-plugin-import": "^2.19.1", "eslint-plugin-import": "^2.19.1",
"eslint-plugin-n": "^15.0.0", "eslint-plugin-n": "^15.0.0",
"eslint-plugin-promise": "^6.0.0", "eslint-plugin-promise": "^6.0.0",
"@types/node": "^20.5.9", "@types/node": "*",
"@quasar/app-vite": "^2.0.0-beta.1", "@quasar/app-vite": "*",
"autoprefixer": "^10.4.2", "autoprefixer": "^10.4.2",
"typescript": "^5.2.2" "typescript": "^5.2.2"
}, },
"engines": { "engines": {
"node": "^24 || ^22 || ^20 || ^18", "node": "v20.12.0",
"npm": ">= 6.13.4", "npm": "",
"yarn": ">= 1.21.1" "yarn": "*"
} }
} }

0
postcss.config.cjs Normal file → Executable file
View File

0
public/favicon.ico Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

0
public/icons/favicon-128x128.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
public/icons/favicon-16x16.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 859 B

After

Width:  |  Height:  |  Size: 859 B

0
public/icons/favicon-32x32.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
public/icons/favicon-96x96.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

0
quasar.config.ts Normal file → Executable file
View File

0
src/App.vue Normal file → Executable file
View File

0
src/assets/quasar-logo-vertical.svg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

0
src/assets/user_placeholder.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

0
src/boot/.gitkeep Normal file → Executable file
View File

0
src/boot/axios.ts Normal file → Executable file
View File

0
src/components/EssentialLink.vue Normal file → Executable file
View File

0
src/components/ExampleComponent.vue Normal file → Executable file
View File

0
src/components/models.ts Normal file → Executable file
View File

0
src/css/app.scss Normal file → Executable file
View File

0
src/css/quasar.variables.scss Normal file → Executable file
View File

0
src/env.d.ts vendored Normal file → Executable file
View File

0
src/layouts/AuthLayout.vue Normal file → Executable file
View File

12
src/layouts/MainLayout.vue Normal file → Executable file
View File

@@ -11,8 +11,6 @@
<div v-if="user.user_id > 0"> <div v-if="user.user_id > 0">
<q-btn-dropdown color="primary" :label="employee.employee_first_name "> <q-btn-dropdown color="primary" :label="employee.employee_first_name ">
<q-list> <q-list>
<q-item clickable v-close-popup @click=" logout "> <q-item clickable v-close-popup @click=" logout ">
<q-item-section> <q-item-section>
<q-item-label>Logout</q-item-label> <q-item-label>Logout</q-item-label>
@@ -20,8 +18,6 @@
</q-item> </q-item>
</q-list> </q-list>
</q-btn-dropdown> </q-btn-dropdown>
</div> </div>
<div v-else> <div v-else>
<router-link :to=" { name: 'login' } " class=""> <router-link :to=" { name: 'login' } " class="">
@@ -104,10 +100,7 @@
</q-item-section> </q-item-section>
</q-item> </q-item>
</router-link> </router-link>
</q-list> </q-list>
</q-drawer> </q-drawer>
<q-page-container> <q-page-container>
@@ -163,6 +156,7 @@ export default defineComponent({
}, },
created() { created() {
this.userStatus() this.userStatus()
}, },
methods: { methods: {
toggleLeftDrawer() { toggleLeftDrawer() {
@@ -170,14 +164,16 @@ export default defineComponent({
}, },
userStatus() { userStatus() {
const path = import.meta.env.VITE_BASE_URL + '/auth/whoami' const path = import.meta.env.VITE_BASE_URL + '/auth/whoami'
axios({ axios({
method: 'get', method: 'get',
url: path, url: path,
withCredentials: true,
headers: authHeader() headers: authHeader()
}) })
.then((response: any) => { .then((response: any) => {
if (response.data.ok) { if (response.data.ok) {
this.user = response.data.user this.user = response.data.user
this.getEmployee(this.user.user_id) this.getEmployee(this.user.user_id)
} else { } else {

0
src/pages/Automatics.vue Normal file → Executable file
View File

128
src/pages/DriverStats.vue Normal file → Executable file
View File

@@ -1,18 +1,134 @@
<template> <template>
<q-page class="row justify-evenly"> <q-page class="q-pa-md row items-start q-gutter-md">
stats
<q-card class="my-card text-white" style="background: radial-gradient(circle, #35a2ff 0%, #014a88 100%)">
<q-card-section>
<div class="text-h6">Total Gallons Delivered</div>
<div class="text-subtitle2"></div>
</q-card-section>
<q-card-section class="q-pt-none text-center">
{{ total_gallons_delivered }}
</q-card-section>
</q-card>
<q-card class="my-card text-white" style="background: radial-gradient(circle, #35a2ff 0%, #014a88 100%)">
<q-card-section>
<div class="text-h6">Total Deliveries Made</div>
<div class="text-subtitle2"></div>
</q-card-section>
<q-card-section class="q-pt-none text-center">
{{ total_deliveries }}
</q-card-section>
</q-card>
</q-page> </q-page>
</template> </template>
<script lang="ts"> <script lang="ts">
import axios from 'axios'
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import authHeader from '../services/auth.header'
export default defineComponent({ export default defineComponent({
name: 'DriverStats', name: 'DriverStats',
data () { data() {
return {
total_gallons_delivered: 0,
total_deliveries: 0,
user: {
user_id: 0,
user_admin: 0,
user_email: '',
user_name: '',
},
employee: {
id: '',
user_id: '',
employee_last_name: "",
employee_first_name: "",
employee_town: "",
employee_address: "",
employee_apt: "",
employee_zip: "",
employee_birthday: "",
employee_phone_number: "",
employee_start_date: "",
employee_end_date: "",
employee_type: '',
employee_state: ''
}
}
},
created() {
this.userStatus()
},
mounted(){
},
methods: {
userStatus() {
const path = import.meta.env.VITE_BASE_URL + '/auth/whoami'
axios({
method: 'get',
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
if (response.data.ok) {
this.user = response.data.user
this.get_employee(this.user.user_id)
} else {
console.log("bad user")
this.user.user_id = 0
}
})
},
get_employee(user_id:any) {
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + user_id
axios({
method: "get",
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
this.employee = response.data
this.get_total_deliveries(this.employee.id)
this.get_total_gallons(this.employee.id)
})
},
get_total_gallons(user_id:any) {
const path = import.meta.env.VITE_BASE_URL + '/stats/gallons/total/' + user_id
axios({
method: "get",
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
this.total_gallons_delivered = response.data.data;
})
},
get_total_deliveries(user_id:any) {
const path = import.meta.env.VITE_BASE_URL + '/stats/delivery/total/' + user_id
axios({
method: "get",
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
this.total_deliveries = response.data.data;
})
},
},
}
}) })
</script> </script>

0
src/pages/ErrorNotFound.vue Normal file → Executable file
View File

6
src/pages/FinishedDelivery.vue Normal file → Executable file
View File

@@ -1,7 +1,7 @@
<template> <template>
<q-page> <q-page>
<div class="q-pa-md"> <div class="q-pa-md">
<q-table title="Todays Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter" <q-table title="Finished Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter"
v-model="filter"> v-model="filter">
<template v-slot:top-right> <template v-slot:top-right>
<q-input dense debounce="300" v-model="filter" placeholder="Search"> <q-input dense debounce="300" v-model="filter" placeholder="Search">
@@ -24,10 +24,10 @@
<span v-if="props.row.delivery_status == 3" class="text-red">Cancelled</span> <span v-if="props.row.delivery_status == 3" class="text-red">Cancelled</span>
<span v-if="props.row.delivery_status == 4" class="text-red-14">Partial Delivery</span> <span v-if="props.row.delivery_status == 4" class="text-red-14">Partial Delivery</span>
<span v-if="props.row.delivery_status == 5" class="text-red-14">Issue</span> <span v-if="props.row.delivery_status == 5" class="text-red-14">Issue</span>
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span> <span v-if="props.row.delivery_status == 10" class="text-green-6">Finalized</span>
</q-td> </q-td>
<q-td key="name" :props="props"> <q-td key="customer_name" :props="props">
{{ props.row.customer_name }} {{ props.row.customer_name }}
</q-td> </q-td>

1
src/pages/IndexPage.vue Normal file → Executable file
View File

@@ -89,7 +89,6 @@ export default defineComponent({
}) })
}, },
get_employee () { get_employee () {
console.log(this.user)
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id
axios({ axios({
method: "get", method: "get",

19
src/pages/TodayDelivery.vue Normal file → Executable file
View File

@@ -1,8 +1,9 @@
<template> <template>
<q-page> <q-page>
<div class="q-pa-md"> <div class="q-pa-md">
<q-table title="Todays Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter" <q-table title="Todays Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter"
v-model="filter"> v-model="filter" class="q-mb-lg">
<template v-slot:top-right> <template v-slot:top-right>
<q-input dense debounce="300" v-model="filter" placeholder="Search"> <q-input dense debounce="300" v-model="filter" placeholder="Search">
<template v-slot:append> <template v-slot:append>
@@ -27,7 +28,7 @@
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span> <span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span>
</q-td> </q-td>
<q-td key="name" :props="props"> <q-td key="customer_name" :props="props">
{{ props.row.customer_name }} {{ props.row.customer_name }}
</q-td> </q-td>
@@ -71,6 +72,7 @@
</q-tr> </q-tr>
</template> </template>
</q-table> </q-table>
</div> </div>
</q-page> </q-page>
</template> </template>
@@ -122,12 +124,12 @@ export default defineComponent({
{ name: 'prime', label: 'Prime', field: 'prime' }, { name: 'prime', label: 'Prime', field: 'prime' },
{ name: 'same_day', label: 'Same Day', field: 'same_day' }, { name: 'same_day', label: 'Same Day', field: 'same_day' },
{ name: 'dispatcher_notes', label: 'Notes', field: 'dispatcher_notes' }, { name: 'dispatcher_notes', label: 'Notes', field: 'dispatcher_notes' },
] ]
} }
}, },
mounted() { mounted() {
this.userStatus() this.userStatus()
this.updatestatus()
}, },
methods: { methods: {
@@ -146,6 +148,17 @@ export default defineComponent({
} }
}) })
}, },
updatestatus() {
let path = import.meta.env.VITE_BASE_URL + '/delivery/updatestatus/outfordelivery';
axios({
method: 'get',
url: path,
headers: authHeader(),
}).then((response: any) => {
if (response.data.update)
console.log("ok")
})
},
get_employee() { get_employee() {
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id
axios({ axios({

View File

@@ -0,0 +1,179 @@
<template>
<q-page>
<div class="q-pa-md">
<q-table title="Todays Finished Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter"
v-model="filter" class="q-mb-lg">
<template v-slot:top-right>
<q-input dense debounce="300" v-model="filter" placeholder="Search">
<template v-slot:append>
<q-icon name="search" />
</template>
</q-input>
</template>
<template v-slot:body="props">
<q-tr :props="props" class="pointer q-hoverable" @click="onEdit(props.row)">
<q-td key="id" :props="props">
{{ props.row.id }}
</q-td>
<q-td key="delivery_status" :props="props">
<span v-if="props.row.delivery_status == 0" class="text-green-6">Waiting</span>
<span v-if="props.row.delivery_status == 1" class="text-grey-9">Delivered</span>
<span v-if="props.row.delivery_status == 2" class="text-green-6">Out For Delivery</span>
<span v-if="props.row.delivery_status == 3" class="text-red">Cancelled</span>
<span v-if="props.row.delivery_status == 4" class="text-red-14">Partial Delivery</span>
<span v-if="props.row.delivery_status == 5" class="text-red-14">Issue</span>
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span>
</q-td>
<q-td key="customer_name" :props="props">
{{ props.row.customer_name }}
</q-td>
<q-td key="address" :props="props">
{{ props.row.customer_address }}
</q-td>
<q-td key="town" :props="props">
{{ props.row.customer_town }}
</q-td>
<q-td key="gallons_ordered" :props="props">
<span v-if="props.row.customer_asked_for_fill == 0"> {{ props.row.gallons_ordered }}</span>
<span v-if="props.row.customer_asked_for_fill == 1"> Fill</span>
</q-td>
<q-td key="automatic" :props="props">
<span v-if="props.row.automatic == 0">No</span>
<span v-if="props.row.automatic == 1">Yes</span>
</q-td>
<q-td key="payment" :props="props">
<span v-if="props.row.payment_type == 0">Cash COD</span>
<span v-if="props.row.payment_type == 1">Credit</span>
</q-td>
<q-td key="prime" :props="props">
<span v-if="props.row.prime == 0"></span>
<span v-if="props.row.prime == 1" class="text-red-14">YES</span>
</q-td>
<q-td key="same_day" :props="props">
<span v-if="props.row.same_day == 0"></span>
<span v-if="props.row.same_day == 1" class="text-red-14">YES</span>
</q-td>
<q-td key="dispatcher_notes" :props="props">
{{ props.row.dispatcher_notes }}
</q-td>
</q-tr>
</template>
</q-table>
</div>
</q-page>
</template>
<script lang="ts">
import axios from 'axios'
import { defineComponent } from 'vue'
import authHeader from '../services/auth.header'
export default defineComponent({
name: 'TodayFinishedDelivery',
data() {
return {
token: null,
deliveries: [],
user: {
user_id: 0,
user_name: ''
},
filter: '',
employee: {
id: '',
user_id: '',
employee_last_name: "",
employee_first_name: "",
employee_town: "",
employee_address: "",
employee_apt: "",
employee_zip: "",
employee_birthday: "",
employee_phone_number: "",
employee_start_date: "",
employee_end_date: "",
employee_type: '',
employee_state: ''
},
columns: [
{ name: 'id', required: true, label: 'Id', field: 'id', sortable: true },
{ name: 'delivery_status', required: true, label: 'Status', field: 'delivery_status', sortable: true },
{ name: 'customer_name', required: true, align: 'center', label: 'Name', field: 'customer_name', sortable: true },
{ name: 'address', label: 'Address', field: 'address' },
{ name: 'town', label: 'Town', field: 'town', sortable: true },
{ name: 'gallons_ordered', label: 'Gallons', field: 'gallons_ordered' },
{ name: 'automatic', label: 'Automatic', field: 'automatic', sortable: true },
{ name: 'payment', label: 'Payment', field: 'payment' },
{ name: 'prime', label: 'Prime', field: 'prime' },
{ name: 'same_day', label: 'Same Day', field: 'same_day' },
{ name: 'dispatcher_notes', label: 'Notes', field: 'dispatcher_notes' },
]
}
},
mounted() {
this.userStatus()
},
methods: {
userStatus() {
const path = import.meta.env.VITE_BASE_URL + '/auth/whoami'
axios({
method: 'get',
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
if (response.data.ok) {
this.user = response.data.user
this.get_employee()
}
})
},
get_employee() {
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id
axios({
method: "get",
url: path,
withCredentials: true,
headers: authHeader()
})
.then((response: any) => {
this.employee = response.data
this.get_oil_orders()
})
},
get_oil_orders() {
const path = import.meta.env.VITE_BASE_URL + '/deliverystatus/today/driver/' + this.employee.id
axios({
method: 'get',
url: path,
withCredentials: true,
headers: authHeader()
}).then((response: any) => {
this.deliveries = response.data
})
},
onEdit(row: any) {
this.$router.push('delivery/' + row.id)
}
}
})
</script>

4
src/pages/TomorrowDelivery.vue Normal file → Executable file
View File

@@ -1,7 +1,7 @@
<template> <template>
<q-page> <q-page>
<div class="q-pa-md"> <div class="q-pa-md">
<q-table title="Todays Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter" <q-table title="Tommorrows Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter"
v-model="filter"> v-model="filter">
<template v-slot:top-right> <template v-slot:top-right>
<q-input dense debounce="300" v-model="filter" placeholder="Search"> <q-input dense debounce="300" v-model="filter" placeholder="Search">
@@ -27,7 +27,7 @@
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span> <span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span>
</q-td> </q-td>
<q-td key="name" :props="props"> <q-td key="customer_name" :props="props">
{{ props.row.customer_name }} {{ props.row.customer_name }}
</q-td> </q-td>

4
src/pages/WaitingDelivery.vue Normal file → Executable file
View File

@@ -1,7 +1,7 @@
<template> <template>
<q-page> <q-page>
<div class="q-pa-md"> <div class="q-pa-md">
<q-table title="Todays Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter" <q-table title="Waiting Deliveries" :rows="deliveries" :columns="columns" row-key="id" :filter="filter"
v-model="filter"> v-model="filter">
<template v-slot:top-right> <template v-slot:top-right>
<q-input dense debounce="300" v-model="filter" placeholder="Search"> <q-input dense debounce="300" v-model="filter" placeholder="Search">
@@ -27,7 +27,7 @@
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span> <span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span>
</q-td> </q-td>
<q-td key="name" :props="props"> <q-td key="customer_name" :props="props">
{{ props.row.customer_name }} {{ props.row.customer_name }}
</q-td> </q-td>

24
src/pages/auth/Login.vue Normal file → Executable file
View File

@@ -8,21 +8,21 @@
</div> </div>
<div class="row"> <div class="row">
<q-form class="q-gutter-md" @submit="onSubmit"> <q-form class="q-gutter-md" @submit="onSubmit">
<q-card square bordered class="q-pa-lg shadow-1"> <q-card square bordered class="q-pa-lg shadow-1">
<q-card-section > <q-card-section>
<q-input v-model="loginForm.username" square filled class="q-pa-sm" type="text" label="username"/> <q-input v-model="loginForm.username" square filled class="q-pa-sm" type="text" label="username" />
<q-input v-model="loginForm.password" square filled class="q-pa-sm" type="password" label="password"/> <q-input v-model="loginForm.password" square filled class="q-pa-sm" type="password" label="password" />
</q-card-section> </q-card-section>
<q-card-actions class="q-px-md"> <q-card-actions class="q-px-md">
<q-btn type="Submit" unelevated color="light-blue-7" size="lg" class="full-width" label="Login"/> <q-btn type="Submit" unelevated color="light-blue-7" size="lg" class="full-width" label="Login" />
</q-card-actions> </q-card-actions>
<q-card-section class="text-center q-pa-none"> <q-card-section class="text-center q-pa-none">
<p class="text-grey-6"></p> <p class="text-grey-6"></p>
</q-card-section> </q-card-section>
</q-card> </q-card>
</q-form> </q-form>
</div> </div>
</div> </div>
</q-page> </q-page>
@@ -60,13 +60,13 @@ export default defineComponent({
.then((response: any) => { .then((response: any) => {
if (response.data.ok) { if (response.data.ok) {
this.$router.push({name: "home"}); this.$router.push({ name: "home" });
} }
}) })
.catch(() => { .catch(() => {
}); });
}, },
sendLogin (payLoad: { username: string; password: string }) { sendLogin(payLoad: { username: string; password: string }) {
let path = import.meta.env.VITE_BASE_URL + "/auth/login" let path = import.meta.env.VITE_BASE_URL + "/auth/login"
axios({ axios({
method: "post", method: "post",
@@ -78,7 +78,7 @@ export default defineComponent({
if (response.data.user) { if (response.data.user) {
localStorage.setItem("auth_token", response.data.token) localStorage.setItem("auth_token", response.data.token)
localStorage.setItem("auth_user", response.data.user) localStorage.setItem("auth_user", response.data.user)
this.$router.push({name: "home"}) this.$router.push({ name: "home" })
Notify.create({ Notify.create({
message: 'You have been logged in!', message: 'You have been logged in!',
@@ -92,7 +92,7 @@ export default defineComponent({
position: 'top' position: 'top'
}) })
this.$router.push({name: "lostPassword"}); this.$router.push({ name: "lostPassword" });
} else { } else {
Notify.create({ Notify.create({
message: "Authorization Failure", message: "Authorization Failure",
@@ -109,8 +109,7 @@ export default defineComponent({
}) })
}) })
}, },
onSubmit () { onSubmit() {
console.log("here")
const payLoad = { const payLoad = {
username: this.loginForm.username, username: this.loginForm.username,
password: this.loginForm.password password: this.loginForm.password
@@ -125,6 +124,7 @@ export default defineComponent({
.q-card { .q-card {
width: 360px; width: 360px;
} }
.nodec { .nodec {
text-decoration: none; text-decoration: none;
} }

72
src/pages/delivery/ViewDelivery.vue Normal file → Executable file
View File

@@ -10,10 +10,10 @@
</div> </div>
<div class="q-page q-pa-lg"> <div class="q-page q-pa-lg">
<div class="row"> <div class="row">
<div class="col-3 bg-neutral p-5"> <div class="col-3 col-md-12 bg-neutral p-5">
<img src="../../assets/user_placeholder.png" alt="Drone Image" width="250" height="250" /> <img src="../../assets/user_placeholder.png" alt="Drone Image" width="250" height="250" />
</div> </div>
<div class="col-3 bg-neutral p-5 "> <div class="col-3 col-md-6 bg-neutral p-5 ">
<div class="row"> <div class="row">
<div class="col-12 font-bold flex justify-evenly pb-5"> <div class="col-12 font-bold flex justify-evenly pb-5">
@@ -138,7 +138,10 @@
<q-checkbox v-model="CreateOilOrderForm.basicInfo.customer_filled" left-label label="Filled" /> <q-checkbox v-model="CreateOilOrderForm.basicInfo.customer_filled" left-label label="Filled" />
</div> </div>
<div> <div>
<q-checkbox v-model="CreateOilOrderForm.basicInfo.prime" left-label label="Primed" /> <q-checkbox v-model="CreateOilOrderForm.basicInfo.prime" left-label label="Prime" />
</div>
<div>
<q-checkbox v-model="CreateOilOrderForm.basicInfo.same_day" left-label label="Same Day" />
</div> </div>
<div> <div>
<q-btn label="Enter" type="submit" color="primary" /> <q-btn label="Enter" type="submit" color="primary" />
@@ -223,10 +226,11 @@ export default defineComponent({
}, },
CreateOilOrderForm: { CreateOilOrderForm: {
basicInfo: { basicInfo: {
driver: '', driver: 0,
gallons_delivered: '', gallons_delivered: '',
customer_filled: false, customer_filled: false,
prime: false, prime: false,
same_day: false,
cash_amount: 0, cash_amount: 0,
}, },
}, },
@@ -339,13 +343,46 @@ export default defineComponent({
}); });
}, },
CreateTransaction(payload: {
gallons_delivered: string,
prime: boolean,
same_day: boolean
}) {
let path = import.meta.env.VITE_MONEY_URL + "/delivery/add/" + this.deliveryOrder.id;
axios({
method: "post",
url: path,
data: payload,
withCredentials: true,
headers: authHeader(),
})
.then((response: any) => {
if (response.status == 201) {
Notify.create({
message: 'Confirmed Transaction',
type: 'postive',
position: 'top'
})
this.$router.push({ name: "today" });
}
else {
Notify.create({
message: 'Form Error',
type: 'negative',
position: 'top'
})
}
})
},
UpdateOilOrder(payload: { UpdateOilOrder(payload: {
gallons_delivered: string, gallons_delivered: string,
customer_filled: boolean, customer_filled: boolean,
prime: boolean, prime: boolean,
cash_amount: number, cash_amount: number,
driver_employee_id: string, driver_employee_id: number,
}) { }) {
let path = import.meta.env.VITE_BASE_URL + "/deliverydata/driver/finalize/" + this.deliveryOrder.id; let path = import.meta.env.VITE_BASE_URL + "/deliverydata/driver/finalize/" + this.deliveryOrder.id;
axios({ axios({
@@ -359,10 +396,10 @@ export default defineComponent({
if (response.data.ok) { if (response.data.ok) {
Notify.create({ Notify.create({
message: 'Delivered', message: 'Delivered',
type: 'negative', type: 'postive',
position: 'top' position: 'top'
}) })
this.$router.push({ name: "delivery" }); this.$router.push({ name: "today" });
} }
else { else {
Notify.create({ Notify.create({
@@ -388,6 +425,7 @@ export default defineComponent({
}, },
onSubmit() { onSubmit() {
if (this.deliveryOrder.payment_type == 0) { if (this.deliveryOrder.payment_type == 0) {
if (this.CreateOilOrderForm.basicInfo.cash_amount > 0) { if (this.CreateOilOrderForm.basicInfo.cash_amount > 0) {
let payload = { let payload = {
@@ -396,9 +434,16 @@ export default defineComponent({
prime: this.CreateOilOrderForm.basicInfo.prime, prime: this.CreateOilOrderForm.basicInfo.prime,
cash_amount: this.CreateOilOrderForm.basicInfo.cash_amount, cash_amount: this.CreateOilOrderForm.basicInfo.cash_amount,
driver_employee_id: this.CreateOilOrderForm.basicInfo.driver, driver_employee_id: this.CreateOilOrderForm.basicInfo.driver,
};
let money_payload = {
gallons_delivered: this.CreateOilOrderForm.basicInfo.gallons_delivered,
prime: this.CreateOilOrderForm.basicInfo.prime,
same_day: this.CreateOilOrderForm.basicInfo.same_day,
}; };
this.UpdateOilOrder(payload); this.UpdateOilOrder(payload);
this.CreateTransaction(money_payload)
} }
else { else {
Notify.create({ Notify.create({
@@ -414,8 +459,17 @@ export default defineComponent({
customer_filled: this.CreateOilOrderForm.basicInfo.customer_filled, customer_filled: this.CreateOilOrderForm.basicInfo.customer_filled,
prime: this.CreateOilOrderForm.basicInfo.prime, prime: this.CreateOilOrderForm.basicInfo.prime,
cash_amount: this.CreateOilOrderForm.basicInfo.cash_amount, cash_amount: this.CreateOilOrderForm.basicInfo.cash_amount,
} driver_employee_id: this.CreateOilOrderForm.basicInfo.driver,
};
let money_payload = {
gallons_delivered: this.CreateOilOrderForm.basicInfo.gallons_delivered,
prime: this.CreateOilOrderForm.basicInfo.prime,
same_day: this.CreateOilOrderForm.basicInfo.same_day,
};
this.UpdateOilOrder(payload); this.UpdateOilOrder(payload);
}; };
}, },

0
src/quasar.d.ts vendored Normal file → Executable file
View File

0
src/router/index.ts Normal file → Executable file
View File

0
src/router/routes.ts Normal file → Executable file
View File

0
src/services/auth.header.ts Normal file → Executable file
View File

0
src/shims-vue.d.ts vendored Normal file → Executable file
View File

0
src/stores/example-store.ts Normal file → Executable file
View File

0
src/stores/index.ts Normal file → Executable file
View File

0
src/stores/store-flag.d.ts vendored Normal file → Executable file
View File

0
tsconfig.json Normal file → Executable file
View File