Updated looks
0
.editorconfig
Normal file → Executable file
4
.env
Normal file → Executable file
@@ -1,3 +1,5 @@
|
||||
VITE_BASE_URL="http://localhost:4056"
|
||||
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
0
.eslintrc.cjs
Normal file → Executable file
3
.gitignore
vendored
Normal file → Executable file
@@ -35,3 +35,6 @@ yarn-error.log*
|
||||
|
||||
# local .env files
|
||||
.env.local*
|
||||
.env
|
||||
.eslintignore
|
||||
.gitignore
|
||||
|
||||
0
.vscode/extensions.json
vendored
Normal file → Executable file
0
.vscode/settings.json
vendored
Normal file → Executable file
0
Dockerfile
Normal file → Executable file
0
index.html
Normal file → Executable file
1890
package-lock.json
generated
10
package.json
Normal file → Executable file
@@ -29,14 +29,14 @@
|
||||
"eslint-plugin-import": "^2.19.1",
|
||||
"eslint-plugin-n": "^15.0.0",
|
||||
"eslint-plugin-promise": "^6.0.0",
|
||||
"@types/node": "^20.5.9",
|
||||
"@quasar/app-vite": "^2.0.0-beta.1",
|
||||
"@types/node": "*",
|
||||
"@quasar/app-vite": "*",
|
||||
"autoprefixer": "^10.4.2",
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^24 || ^22 || ^20 || ^18",
|
||||
"npm": ">= 6.13.4",
|
||||
"yarn": ">= 1.21.1"
|
||||
"node": "v20.12.0",
|
||||
"npm": "",
|
||||
"yarn": "*"
|
||||
}
|
||||
}
|
||||
0
postcss.config.cjs
Normal file → Executable file
0
public/favicon.ico
Normal file → Executable file
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
0
public/icons/favicon-128x128.png
Normal file → Executable file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
0
public/icons/favicon-16x16.png
Normal file → Executable file
|
Before Width: | Height: | Size: 859 B After Width: | Height: | Size: 859 B |
0
public/icons/favicon-32x32.png
Normal file → Executable 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
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
0
quasar.config.ts
Normal file → Executable file
0
src/App.vue
Normal file → Executable file
0
src/assets/quasar-logo-vertical.svg
Normal file → Executable 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
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
0
src/boot/.gitkeep
Normal file → Executable file
0
src/boot/axios.ts
Normal file → Executable file
0
src/components/EssentialLink.vue
Normal file → Executable file
0
src/components/ExampleComponent.vue
Normal file → Executable file
0
src/components/models.ts
Normal file → Executable file
0
src/css/app.scss
Normal file → Executable file
0
src/css/quasar.variables.scss
Normal file → Executable file
0
src/env.d.ts
vendored
Normal file → Executable file
0
src/layouts/AuthLayout.vue
Normal file → Executable file
12
src/layouts/MainLayout.vue
Normal file → Executable file
@@ -11,8 +11,6 @@
|
||||
<div v-if="user.user_id > 0">
|
||||
<q-btn-dropdown color="primary" :label="employee.employee_first_name ">
|
||||
<q-list>
|
||||
|
||||
|
||||
<q-item clickable v-close-popup @click=" logout ">
|
||||
<q-item-section>
|
||||
<q-item-label>Logout</q-item-label>
|
||||
@@ -20,8 +18,6 @@
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-btn-dropdown>
|
||||
|
||||
|
||||
</div>
|
||||
<div v-else>
|
||||
<router-link :to=" { name: 'login' } " class="">
|
||||
@@ -104,10 +100,7 @@
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</router-link>
|
||||
|
||||
|
||||
</q-list>
|
||||
|
||||
</q-drawer>
|
||||
|
||||
<q-page-container>
|
||||
@@ -163,6 +156,7 @@ export default defineComponent({
|
||||
},
|
||||
created() {
|
||||
this.userStatus()
|
||||
|
||||
},
|
||||
methods: {
|
||||
toggleLeftDrawer() {
|
||||
@@ -170,14 +164,16 @@ export default defineComponent({
|
||||
},
|
||||
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.getEmployee(this.user.user_id)
|
||||
} else {
|
||||
|
||||
0
src/pages/Automatics.vue
Normal file → Executable file
128
src/pages/DriverStats.vue
Normal file → Executable file
@@ -1,18 +1,134 @@
|
||||
<template>
|
||||
<q-page class="row justify-evenly">
|
||||
stats
|
||||
<q-page class="q-pa-md row items-start q-gutter-md">
|
||||
|
||||
<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>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
|
||||
import axios from 'axios'
|
||||
import { defineComponent } from 'vue'
|
||||
|
||||
import authHeader from '../services/auth.header'
|
||||
export default defineComponent({
|
||||
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>
|
||||
|
||||
0
src/pages/ErrorNotFound.vue
Normal file → Executable file
6
src/pages/FinishedDelivery.vue
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<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">
|
||||
<template v-slot:top-right>
|
||||
<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 == 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>
|
||||
<span v-if="props.row.delivery_status == 10" class="text-green-6">Finalized</span>
|
||||
</q-td>
|
||||
|
||||
<q-td key="name" :props="props">
|
||||
<q-td key="customer_name" :props="props">
|
||||
{{ props.row.customer_name }}
|
||||
</q-td>
|
||||
|
||||
|
||||
1
src/pages/IndexPage.vue
Normal file → Executable file
@@ -89,7 +89,6 @@ export default defineComponent({
|
||||
})
|
||||
},
|
||||
get_employee () {
|
||||
console.log(this.user)
|
||||
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id
|
||||
axios({
|
||||
method: "get",
|
||||
|
||||
19
src/pages/TodayDelivery.vue
Normal file → Executable file
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<div class="q-pa-md">
|
||||
|
||||
<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>
|
||||
<q-input dense debounce="300" v-model="filter" placeholder="Search">
|
||||
<template v-slot:append>
|
||||
@@ -27,7 +28,7 @@
|
||||
<span v-if="props.row.delivery_status == 10" class="text-grey-9">Finalized</span>
|
||||
</q-td>
|
||||
|
||||
<q-td key="name" :props="props">
|
||||
<q-td key="customer_name" :props="props">
|
||||
{{ props.row.customer_name }}
|
||||
</q-td>
|
||||
|
||||
@@ -71,6 +72,7 @@
|
||||
</q-tr>
|
||||
</template>
|
||||
</q-table>
|
||||
|
||||
</div>
|
||||
</q-page>
|
||||
</template>
|
||||
@@ -122,12 +124,12 @@ export default defineComponent({
|
||||
{ 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()
|
||||
this.updatestatus()
|
||||
},
|
||||
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() {
|
||||
const path = import.meta.env.VITE_BASE_URL + '/employee/userid/' + this.user.user_id
|
||||
axios({
|
||||
|
||||
179
src/pages/TodayFinishedDelivery.vue
Normal 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
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<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">
|
||||
<template v-slot:top-right>
|
||||
<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>
|
||||
</q-td>
|
||||
|
||||
<q-td key="name" :props="props">
|
||||
<q-td key="customer_name" :props="props">
|
||||
{{ props.row.customer_name }}
|
||||
</q-td>
|
||||
|
||||
|
||||
4
src/pages/WaitingDelivery.vue
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<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">
|
||||
<template v-slot:top-right>
|
||||
<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>
|
||||
</q-td>
|
||||
|
||||
<q-td key="name" :props="props">
|
||||
<q-td key="customer_name" :props="props">
|
||||
{{ props.row.customer_name }}
|
||||
</q-td>
|
||||
|
||||
|
||||
24
src/pages/auth/Login.vue
Normal file → Executable file
@@ -8,21 +8,21 @@
|
||||
|
||||
</div>
|
||||
<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-section >
|
||||
<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-card-section>
|
||||
<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-card-section>
|
||||
<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-section class="text-center q-pa-none">
|
||||
<p class="text-grey-6"></p>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</q-form>
|
||||
</q-form>
|
||||
</div>
|
||||
</div>
|
||||
</q-page>
|
||||
@@ -60,13 +60,13 @@ export default defineComponent({
|
||||
.then((response: any) => {
|
||||
|
||||
if (response.data.ok) {
|
||||
this.$router.push({name: "home"});
|
||||
this.$router.push({ name: "home" });
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
});
|
||||
},
|
||||
sendLogin (payLoad: { username: string; password: string }) {
|
||||
sendLogin(payLoad: { username: string; password: string }) {
|
||||
let path = import.meta.env.VITE_BASE_URL + "/auth/login"
|
||||
axios({
|
||||
method: "post",
|
||||
@@ -78,7 +78,7 @@ export default defineComponent({
|
||||
if (response.data.user) {
|
||||
localStorage.setItem("auth_token", response.data.token)
|
||||
localStorage.setItem("auth_user", response.data.user)
|
||||
this.$router.push({name: "home"})
|
||||
this.$router.push({ name: "home" })
|
||||
|
||||
Notify.create({
|
||||
message: 'You have been logged in!',
|
||||
@@ -92,7 +92,7 @@ export default defineComponent({
|
||||
position: 'top'
|
||||
|
||||
})
|
||||
this.$router.push({name: "lostPassword"});
|
||||
this.$router.push({ name: "lostPassword" });
|
||||
} else {
|
||||
Notify.create({
|
||||
message: "Authorization Failure",
|
||||
@@ -109,8 +109,7 @@ export default defineComponent({
|
||||
})
|
||||
})
|
||||
},
|
||||
onSubmit () {
|
||||
console.log("here")
|
||||
onSubmit() {
|
||||
const payLoad = {
|
||||
username: this.loginForm.username,
|
||||
password: this.loginForm.password
|
||||
@@ -125,6 +124,7 @@ export default defineComponent({
|
||||
.q-card {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.nodec {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
72
src/pages/delivery/ViewDelivery.vue
Normal file → Executable file
@@ -10,10 +10,10 @@
|
||||
</div>
|
||||
<div class="q-page q-pa-lg">
|
||||
<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" />
|
||||
</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="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" />
|
||||
</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>
|
||||
<q-btn label="Enter" type="submit" color="primary" />
|
||||
@@ -223,10 +226,11 @@ export default defineComponent({
|
||||
},
|
||||
CreateOilOrderForm: {
|
||||
basicInfo: {
|
||||
driver: '',
|
||||
driver: 0,
|
||||
gallons_delivered: '',
|
||||
customer_filled: false,
|
||||
prime: false,
|
||||
same_day: false,
|
||||
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: {
|
||||
gallons_delivered: string,
|
||||
customer_filled: boolean,
|
||||
prime: boolean,
|
||||
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;
|
||||
axios({
|
||||
@@ -359,10 +396,10 @@ export default defineComponent({
|
||||
if (response.data.ok) {
|
||||
Notify.create({
|
||||
message: 'Delivered',
|
||||
type: 'negative',
|
||||
type: 'postive',
|
||||
position: 'top'
|
||||
})
|
||||
this.$router.push({ name: "delivery" });
|
||||
this.$router.push({ name: "today" });
|
||||
}
|
||||
else {
|
||||
Notify.create({
|
||||
@@ -388,6 +425,7 @@ export default defineComponent({
|
||||
},
|
||||
|
||||
onSubmit() {
|
||||
|
||||
if (this.deliveryOrder.payment_type == 0) {
|
||||
if (this.CreateOilOrderForm.basicInfo.cash_amount > 0) {
|
||||
let payload = {
|
||||
@@ -396,9 +434,16 @@ export default defineComponent({
|
||||
prime: this.CreateOilOrderForm.basicInfo.prime,
|
||||
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.CreateTransaction(money_payload)
|
||||
}
|
||||
else {
|
||||
Notify.create({
|
||||
@@ -414,8 +459,17 @@ export default defineComponent({
|
||||
customer_filled: this.CreateOilOrderForm.basicInfo.customer_filled,
|
||||
prime: this.CreateOilOrderForm.basicInfo.prime,
|
||||
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);
|
||||
|
||||
|
||||
};
|
||||
|
||||
},
|
||||
|
||||