-
-
General Info
-
- First Name
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_first_name.$errors[0].$message }}
-
-
-
- Last Name
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_last_name.$errors[0].$message }}
-
-
-
- Phone Number
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_phone_number.$errors[0].$message }}
-
-
-
-
- Customer Type
-
-
- {{ customer['text'] }}
-
-
-
-
-
- Email (Optional)
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_email.$errors[0].$message }}
-
-
+
+
@@ -158,224 +142,115 @@
import { defineComponent } from 'vue'
import axios from 'axios'
import authHeader from '../../services/auth.header'
-import Header from '../../layouts/headers/headerauth.vue'
-import SideBar from '../../layouts/sidebar/sidebar.vue'
import Footer from '../../layouts/footers/footer.vue'
import useValidate from "@vuelidate/core";
import { email, minLength, required } from "@vuelidate/validators";
import { notify } from "@kyvg/vue3-notification";
+interface SelectOption {
+ text: string;
+ value: number;
+}
export default defineComponent({
name: 'CustomerCreate',
-
components: {
- Header,
- SideBar,
Footer,
},
-
data() {
return {
v$: useValidate(),
user: null,
- stateList: [],
- x: '',
- custList: [],
- new_user_id: 0,
- company: {
- creation_date: "",
- account_prefix: "",
- company_name: "",
- company_address: "",
- company_town: "",
- company_zip: "",
- company_state: "",
- company_phone_number: "",
- },
-
+ stateList: [] as SelectOption[],
+ custList: [] as SelectOption[],
+ // --- REFACTORED: Simplified, flat form object ---
CreateCustomerForm: {
- basicInfo: {
- customer_last_name: "",
- customer_first_name: "",
- customer_town: "",
- customer_apt: "",
- customer_home_type: 0,
- customer_zip: "",
- customer_automatic: "",
- customer_email: "",
- customer_phone_number: "",
- customer_state: 0,
- customer_address: "",
- customer_description: "",
- },
+ customer_last_name: "",
+ customer_first_name: "",
+ customer_town: "",
+ customer_address: "",
+ customer_apt: "",
+ customer_zip: "",
+ customer_email: "",
+ customer_phone_number: "",
+ customer_description: "",
+ // --- FIX: Initialized as numbers for proper v-model binding ---
+ customer_home_type: 0,
+ customer_state: 0,
},
}
},
validations() {
return {
+ // --- REFACTORED: Validation rules point to the flat form object ---
CreateCustomerForm: {
- basicInfo: {
- customer_last_name: { required, minLength: minLength(1) },
- customer_first_name: { required, minLength: minLength(1) },
- customer_town: { required, minLength: minLength(1) },
- customer_home_type: { required },
- customer_zip: { required, minLength: minLength(5) },
- customer_email: { email, required },
- customer_phone_number: { required },
- customer_state: { required },
- customer_address: { required },
- },
+ customer_last_name: { required, minLength: minLength(1) },
+ customer_first_name: { required, minLength: minLength(1) },
+ customer_town: { required, minLength: minLength(1) },
+ customer_zip: { required, minLength: minLength(5) },
+ customer_email: { email }, // Optional, so only validate format
+ customer_phone_number: { required },
+ customer_home_type: { required },
+ customer_state: { required },
+ customer_address: { required },
},
};
},
created() {
- this.userStatus()
+ this.userStatus();
},
mounted() {
this.getCustomerTypeList();
this.getStatesList();
- this.getCompany();
},
methods: {
acceptNumber() {
- let x = this.CreateCustomerForm.basicInfo.customer_phone_number.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/);
+ const x = this.CreateCustomerForm.customer_phone_number.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/);
if (x) {
- this.CreateCustomerForm.basicInfo.customer_phone_number = !x[2] ? x[1] : '(' + x[1] + ') ' + x[2] + (x[3] ? '-' + x[3] : '');
+ this.CreateCustomerForm.customer_phone_number = !x[2] ? x[1] : `(${x[1]}) ${x[2]}${x[3] ? `-${x[3]}` : ''}`;
}
- else {
- this.CreateCustomerForm.basicInfo.customer_phone_number = ''
- }
- },
- getCompany() {
- let path = import.meta.env.VITE_BASE_URL + '/admin/company/' + import.meta.env.VITE_COMPANY_ID;
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
- .then((response: any) => {
- this.company = response.data;
-
-
- })
},
userStatus() {
- let path = import.meta.env.VITE_BASE_URL + '/auth/whoami';
- axios({
- method: 'get',
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ const path = import.meta.env.VITE_BASE_URL + '/auth/whoami';
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
- if (response.data.ok) {
- this.user = response.data.user;
- }
- })
- .catch(() => {
- this.user = null
+ if (response.data.ok) { this.user = response.data.user; }
})
+ .catch(() => { this.user = null; });
},
- CreateCustomer(payload: {
- customer_last_name: string;
- customer_first_name: string;
- customer_town: string;
- customer_zip: string;
- customer_email: string;
- customer_phone_number: string;
- customer_address: string;
- customer_apt: string;
- customer_home_type: number,
- customer_state: number;
- customer_description: string;
- })
- {
- let path = import.meta.env.VITE_BASE_URL + "/customer/create";
- axios({
- method: "post",
- url: path,
- data: payload,
- withCredentials: true,
- headers: authHeader(),
- })
+ CreateCustomer(payload: any) {
+ const path = import.meta.env.VITE_BASE_URL + "/customer/create";
+ axios.post(path, payload, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
if (response.data.ok) {
- this.new_user_id = response.data.user.user_id
- this.$router.push({ name: 'customerProfile', params: { id: this.new_user_id } });
+ const new_user_id = response.data.user.user_id;
+ this.$router.push({ name: 'customerProfile', params: { id: new_user_id } });
+ } else {
+ notify({ title: "Error", text: response.data.error || "Failed to create customer.", type: "error" });
}
- if (response.data.error) {
- this.$router.push("/");
- }
- })
+ });
},
onSubmit() {
- if (this.CreateCustomerForm.basicInfo.customer_zip === ''){
- notify({
- title: "Error",
- text: "No zip code added!",
- type: "error",
- });
- }
- if (this.CreateCustomerForm.basicInfo.customer_last_name === ''){
- notify({
- title: "Error",
- text: "No last name added!",
- type: "error",
- });
- }
- if (this.CreateCustomerForm.basicInfo.customer_address === ''){
- notify({
- title: "Error",
- text: "No address added!",
- type: "error",
- });
- }
- let payload = {
- customer_last_name: this.CreateCustomerForm.basicInfo.customer_last_name,
- customer_first_name: this.CreateCustomerForm.basicInfo.customer_first_name,
- customer_town: this.CreateCustomerForm.basicInfo.customer_town,
- customer_zip: this.CreateCustomerForm.basicInfo.customer_zip,
- customer_email: this.CreateCustomerForm.basicInfo.customer_email,
- customer_phone_number: this.CreateCustomerForm.basicInfo.customer_phone_number,
- customer_home_type: this.CreateCustomerForm.basicInfo.customer_home_type,
- customer_state: this.CreateCustomerForm.basicInfo.customer_state,
- customer_apt: this.CreateCustomerForm.basicInfo.customer_apt,
- customer_address: this.CreateCustomerForm.basicInfo.customer_address,
- customer_description: this.CreateCustomerForm.basicInfo.customer_description,
-
- };
- this.CreateCustomer(payload);
+ this.v$.$validate(); // Trigger validation
+ if (!this.v$.$error) {
+ // If validation passes, submit the form
+ this.CreateCustomer(this.CreateCustomerForm);
+ } else {
+ // If validation fails, show a single notification
+ notify({ title: "Validation Error", text: "Please fill out all required fields correctly.", type: "error" });
+ console.log("Form validation failed.");
+ }
},
getCustomerTypeList() {
- let path = import.meta.env.VITE_BASE_URL + "/query/customertype";
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- })
- .then((response: any) => {
- this.custList = response.data;
- })
- .catch(() => {
- });
+ const path = import.meta.env.VITE_BASE_URL + "/query/customertype";
+ axios.get(path, { withCredentials: true })
+ .then((response: any) => { this.custList = response.data; });
},
getStatesList() {
- let path = import.meta.env.VITE_BASE_URL + "/query/states";
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- })
- .then((response: any) => {
- this.stateList = response.data;
- })
- .catch(() => {
- });
+ const path = import.meta.env.VITE_BASE_URL + "/query/states";
+ axios.get(path, { withCredentials: true })
+ .then((response: any) => { this.stateList = response.data; });
},
},
-})
-
-
-
\ No newline at end of file
+});
+
\ No newline at end of file
diff --git a/src/pages/customer/edit.vue b/src/pages/customer/edit.vue
index 11e01d2..3ac6fdf 100755
--- a/src/pages/customer/edit.vue
+++ b/src/pages/customer/edit.vue
@@ -1,196 +1,176 @@
-
-
-
-
-
+
+
+
+
+
+ Home
+ Customers
+ Edit Customer
+
+
+
+
+
+ Edit Customer: {{ customer.account_number }}
+
+
+ View Profile
+
-
-
-
-
-
- Home
-
-
-
-
- Customers
-
-
-
-
-
-
-
Edit customer: {{ customer.account_number }}
-
-
- View Profile
-
-
-
-
-
-
-
General Info
-
- First Name
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_first_name.$errors[0].$message }}
-
-
-
- Last Name
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_last_name.$errors[0].$message }}
-
-
-
- Phone Number
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_phone_number.$errors[0].$message }}
-
-
-
-
- Customer Type
-
-
- {{ customer['text'] }}
-
-
-
-
-
- Email (Optional)
-
-
- {{ v$.CreateCustomerForm.basicInfo.customer_email.$errors[0].$message }}
-
-
+
+
+
+
+
+
+
General Info
+
+
+
+
+ First Name
+
+
+ {{ v$.CreateCustomerForm.basicInfo.customer_first_name.$errors[0].$message }}
+
-
-
-
-
Customer Address
-
-
-
+
+
+ Last Name
+
+
+ {{ v$.CreateCustomerForm.basicInfo.customer_last_name.$errors[0].$message }}
+
-
-
-
-
Description
-
- Fill Location
-
-
-
-
-
-
+
+
+ Phone Number
+
+
+ {{ v$.CreateCustomerForm.basicInfo.customer_phone_number.$errors[0].$message }}
+
+
+
+
+ Email (Optional)
+
+
+ {{ v$.CreateCustomerForm.basicInfo.customer_email.$errors[0].$message }}
+
+
+
+
+ Customer Type
+
+
+ {{ customer.text }}
+
+
-
-
- Save Changes
-
+
+
+
+
+
+
+
+
Delivery Details
+
+
+
+
+ Fill Location
+
+
+
+
+ Description / Notes
+
+
+
+
+
+
+
+ Save Changes
+
+
+
+
-
-
\ No newline at end of file
diff --git a/src/pages/customer/home.vue b/src/pages/customer/home.vue
index 1991fad..954e48e 100755
--- a/src/pages/customer/home.vue
+++ b/src/pages/customer/home.vue
@@ -1,107 +1,123 @@
-
-
-
-
-
+
+
-
-
- Home
-
-
-
-
- Customers
-
-
+ Home
+ Customers
+
Customers
-
- Customers {{ customer_count }}
-
+
+
+
+
+
+
+
+ {{ customer_count }} customers found
+
+
+
+ Add New Customer
+
+
-
-
-
Quick Tips
-
@ = last name search
-
! = address
-
-
$ = account number
+
+
+
+
+
+
+
+ Account #
+ Name
+ Town
+ Automatic
+ Phone Number
+ Actions
+
+
+
+
+
+
+ {{ person.account_number }}
+
+
+ {{ person.customer_first_name }} {{ person.customer_last_name }}
+ {{ person.customer_town }}
+ {{ person.customer_automatic ? 'Yes' : 'No' }}
+ {{ person.customer_phone_number }}
+
+
+
+ New Delivery
+
+
+ New Service
+
+
+ Edit
+
+
+ View
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ person.customer_first_name }} {{ person.customer_last_name }}
+
#{{ person.account_number }}
+
+
+ {{ person.customer_automatic ? 'Automatic' : 'Will Call' }}
+
+
+
+
{{ person.customer_town }}
+
{{ person.customer_phone_number }}
+
+
+
+ New Delivery
+
+
+ New Service
+
+
+ Edit
+
+
+ View
+
+
+
-
-
-
-
-
- Account Number
- Name
- Town
- Automatic
- Phone Number
-
-
-
-
-
-
-
-
- {{ person['account_number'] }}
-
-
-
-
- {{ person['customer_first_name'] }} {{ person['customer_last_name'] }}
-
-
- {{ person['customer_town'] }}
-
- No
- Yes
-
- {{ person['customer_phone_number'] }}
-
-
-
- Create Delivery
-
-
- Create Service Call
-
-
- Edit Customer
-
-
- View Profile
-
-
-
-
-
-
-
+
+
+
-
-
{{ customer_count }} items Found
-
-
+
-
-
-
-
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile.vue b/src/pages/customer/profile/profile.vue
new file mode 100755
index 0000000..902861c
--- /dev/null
+++ b/src/pages/customer/profile/profile.vue
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/AutomaticDeliveries.vue b/src/pages/customer/profile/profile/AutomaticDeliveries.vue
new file mode 100644
index 0000000..bda5f96
--- /dev/null
+++ b/src/pages/customer/profile/profile/AutomaticDeliveries.vue
@@ -0,0 +1,46 @@
+
+
+
+
Automatic Delivery History
+
+
+
+
+
+ ID
+ Name
+ Gallons
+ Date
+
+
+
+
+ {{ auto.id }}
+ {{ auto.customer_full_name }}
+ {{ auto.gallons_delivered }}
+ {{ auto.fill_date }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/CreditCards.vue b/src/pages/customer/profile/profile/CreditCards.vue
new file mode 100644
index 0000000..ecf38cb
--- /dev/null
+++ b/src/pages/customer/profile/profile/CreditCards.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
Credit Cards
+
+ Add New
+
+
+
+
+
+ No cards on file. This is a Cash/Check customer until a card is added.
+
+
+ {{ count }} card(s) on file.
+
+
+
+
+
+
+
+
+
{{ card.name_on_card }}
+
{{ card.type_of_card }}
+
+
Primary
+
+
+
+
{{ card.card_number }}
+
+ Exp:
+ 0 {{ card.expiration_month }} / {{ card.expiration_year }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/CustomerComments.vue b/src/pages/customer/profile/profile/CustomerComments.vue
new file mode 100644
index 0000000..57df780
--- /dev/null
+++ b/src/pages/customer/profile/profile/CustomerComments.vue
@@ -0,0 +1,59 @@
+
+
+
+
Comments & Notes
+
+
+
+
+
+ Post Comment
+
+
+
+
+
+
+
+
+ No comments yet.
+
+
+
+
+ {{ comment.created }}
+ Delete
+
+
{{ comment.comment }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/CustomerDetails.vue b/src/pages/customer/profile/profile/CustomerDetails.vue
new file mode 100644
index 0000000..ce9fc69
--- /dev/null
+++ b/src/pages/customer/profile/profile/CustomerDetails.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
Customer Details
+
+ {{ automatic_status === 1 ? 'Automatic' : 'Will Call' }}
+
+
+
+ Possible Incorrect Address!
+
+
+
{{ customer.customer_first_name }} {{ customer.customer_last_name }}
+
{{ customer.customer_address }}, {{ customer.customer_apt }}
+
{{ customer.customer_town }}, {{ stateName(customer.customer_state) }} {{ customer.customer_zip }}
+
{{ customer.customer_phone_number }}
+
{{ homeTypeName(customer.customer_home_type) }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/CustomerStats.vue b/src/pages/customer/profile/profile/CustomerStats.vue
new file mode 100644
index 0000000..9745745
--- /dev/null
+++ b/src/pages/customer/profile/profile/CustomerStats.vue
@@ -0,0 +1,20 @@
+
+
+
+
Stats
+
+
Total Deliveries: {{ stats.oil_deliveries }}
+
Total Gallons: {{ stats.oil_total_gallons }}
+
Total Service Calls: {{ stats.total_calls }}
+
Last Delivery: {{ last_delivery || 'N/A' }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/DeliveriesTable.vue b/src/pages/customer/profile/profile/DeliveriesTable.vue
new file mode 100644
index 0000000..856e2c9
--- /dev/null
+++ b/src/pages/customer/profile/profile/DeliveriesTable.vue
@@ -0,0 +1,88 @@
+
+
+
No will-call delivery history found.
+
+
+
+
+
+
+
+ ID
+ Status
+ Name
+ Gallons
+ Date
+ Actions
+
+
+
+
+ {{ oil.id }}
+ {{ deliveryStatus(oil.delivery_status) }}
+ {{ oil.customer_name }}
+
+
+ {{ oil.customer_asked_for_fill ? 'FILL' : oil.gallons_ordered }}
+
+ {{ oil.gallons_delivered }}
+
+ {{ oil.expected_delivery_date }}
+
+
+ View
+ Edit
+ Print
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ oil.customer_name }}
+
#{{ oil.id }} on {{ oil.expected_delivery_date }}
+
+
{{ deliveryStatus(oil.delivery_status) }}
+
+
Gallons: {{ oil.customer_asked_for_fill ? 'FILL' : (oil.gallons_delivered || oil.gallons_ordered) }}
+
+ View
+ Edit
+ Print
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/EquipmentParts.vue b/src/pages/customer/profile/profile/EquipmentParts.vue
new file mode 100644
index 0000000..13558cd
--- /dev/null
+++ b/src/pages/customer/profile/profile/EquipmentParts.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
Equipment Parts
+
+ Edit
+
+
+
+
+
+
+
+
Oil Filter 1:
+
{{ parts.oil_filter }}
+
+
+
Oil Filter 2:
+
{{ parts.oil_filter_2 }}
+
+
+
Oil Nozzle 1:
+
{{ parts.oil_nozzle }}
+
+
+
Oil Nozzle 2:
+
{{ parts.oil_nozzle_2 }}
+
+
+
+
No equipment parts information available.
+
+
+
+ Loading parts info...
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/HistoryTabs.vue b/src/pages/customer/profile/profile/HistoryTabs.vue
new file mode 100644
index 0000000..596412b
--- /dev/null
+++ b/src/pages/customer/profile/profile/HistoryTabs.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/ProfileHeader.vue b/src/pages/customer/profile/profile/ProfileHeader.vue
new file mode 100644
index 0000000..5dd51ec
--- /dev/null
+++ b/src/pages/customer/profile/profile/ProfileHeader.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
{{ customer.account_number }}
+
+ New Delivery
+ New Service
+ Edit Customer
+
+ {{ automatic_status === 1 ? 'Set to Will Call' : 'Set to Automatic' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/ProfileMap.vue b/src/pages/customer/profile/profile/ProfileMap.vue
new file mode 100644
index 0000000..b238fd5
--- /dev/null
+++ b/src/pages/customer/profile/profile/ProfileMap.vue
@@ -0,0 +1,32 @@
+
+
+
+
{{ customer.account_number }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/ProfileSummary.vue b/src/pages/customer/profile/profile/ProfileSummary.vue
new file mode 100644
index 0000000..29101a2
--- /dev/null
+++ b/src/pages/customer/profile/profile/ProfileSummary.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+ New Delivery
+ New Service
+ Edit
+
+ {{ automatic_status === 1 ? 'Set to Will Call' : 'Set to Automatic' }}
+
+
+
+
+
+
+
+
+
{{ customer.customer_first_name }} {{ customer.customer_last_name }}
+
+ {{ automatic_status === 1 ? 'Automatic' : 'Will Call' }}
+
+
+
+ Possible Incorrect Address!
+
+
+
{{ customer.customer_address }}, {{ customer.customer_apt }}
+
{{ customer.customer_town }}, {{ stateName(customer.customer_state) }} {{ customer.customer_zip }}
+
{{ customer.customer_phone_number }}
+
{{ homeTypeName(customer.customer_home_type) }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/ServiceCallsTable.vue b/src/pages/customer/profile/profile/ServiceCallsTable.vue
new file mode 100644
index 0000000..4ac2b94
--- /dev/null
+++ b/src/pages/customer/profile/profile/ServiceCallsTable.vue
@@ -0,0 +1,116 @@
+
+
+
+
No service call history found for this customer.
+
+
+
+
+
+ Date
+ Type
+ Description
+
+
+
+
+
+
+ {{ formatDate(service.scheduled_date) }}
+ {{ formatTime(service.scheduled_date) }}
+
+
+
+ {{ getServiceTypeName(service.type_service_call) }}
+
+
+
+
+
+
+
+ {{ truncateDescription(service.description) }}
+
+ Read more
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/profile/profile/TankInfo.vue b/src/pages/customer/profile/profile/TankInfo.vue
new file mode 100644
index 0000000..288822e
--- /dev/null
+++ b/src/pages/customer/profile/profile/TankInfo.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
Tank Info
+
+ Edit
+
+
+
+
+ Status:
+
+ {{ tank.tank_status ? 'Inspected' : 'Needs Inspection' }}
+
+
+
Last Inspection: {{ tank.last_tank_inspection || 'N/A' }}
+
Location: {{ tank.outside_or_inside ? 'Inside' : 'Outside' }}
+
Size: {{ tank.tank_size }} Gallons
+
Fill Location: {{ description.fill_location }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/customer/routes.ts b/src/pages/customer/routes.ts
index 65fc4c0..162424d 100755
--- a/src/pages/customer/routes.ts
+++ b/src/pages/customer/routes.ts
@@ -3,7 +3,7 @@
import CustomerHome from '../customer/home.vue';
import CustomerCreate from '../customer/create.vue';
import CustomerEdit from "../customer/edit.vue";
-import CustomerProfile from "./profile/home.vue"
+import CustomerProfile from "./profile/profile.vue"
import TankEdit from "./tank/edit.vue"
diff --git a/src/pages/customer/tank/edit.vue b/src/pages/customer/tank/edit.vue
index a9c81de..eb40751 100644
--- a/src/pages/customer/tank/edit.vue
+++ b/src/pages/customer/tank/edit.vue
@@ -1,280 +1,186 @@
-
-
-
-
-
-
-
-
-
-
- Home
-
-
-
-
- Customers
-
-
-
+
+
+
+
+
+ Home
+ Customers
+ Edit Tank Details
+
+
+
+
+
+ Tank for: {{ customer.customer_first_name }} {{ customer.customer_last_name }}
+
+
+ Back to Profile
+
+
+
+
+
+
+
+
+
+
+ Last Inspection Date
+
-
-
+
+
+
+
+
+
+
+
+
+ Fill Location Description
+
+
+
+
+
+
+ Save Changes
+
+
+
-
-
+
+
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/delivery/create.vue b/src/pages/delivery/create.vue
index 82f97e1..8131720 100755
--- a/src/pages/delivery/create.vue
+++ b/src/pages/delivery/create.vue
@@ -1,88 +1,43 @@
-
+
-
-
-
-
+
+
-
-
- Home
-
-
-
-
- Customers
-
-
+ Home
+ Customers
+ Create Delivery for {{ customer.customer_first_name }}
-
-
-
-
-
+
+
+
+
+
+
{{ customer.customer_first_name }} {{ customer.customer_last_name }}
+
Account: {{ customer.account_number }}
+
+
View Profile
-
-
{{ customer.account_number }}
-
- {{ customer.customer_first_name }}
- {{ customer.customer_last_name }}
-
-
- {{ customer.customer_address }}
-
- {{ customer.customer_apt }}
-
-
-
-
- {{ customer.customer_town }},
-
-
-
Massachusetts
-
Rhode Island
-
New Hampshire
-
Maine
-
Vermont
-
Maine
-
New York
-
Unknown state
-
-
- {{ customer.customer_zip }}
-
-
-
- {{ customer.customer_apt }}
-
-
-
Residential
-
apartment
-
condo
-
commercial
-
business
-
construction
-
container
-
-
- {{ customer.customer_phone_number }}
-
+
+
{{ customer.customer_address }}
+
{{ customer.customer_apt }}
+
{{ customer.customer_town }}, {{ customerStateName }} {{ customer.customer_zip }}
+
{{ customerHomeTypeName }}
+
{{ customer.customer_phone_number }}
-
-
-
Price Per Gallon
+
+
+
Today's Price Per Gallon
-
+
Gallons
@@ -90,274 +45,169 @@
-
-
- {{ gallons }}
- ${{ parseFloat(price).toFixed(2) }}
-
+
+
+ {{ tier.gallons }}
+ ${{ parseFloat(tier.price.toString()).toFixed(2) }}
+
-
-
+
-
-
-
- Create Delivery
+
+
Create Delivery Order
+
+
+
+ Gallons Ordered
+
+
+ Gallons are required unless "Fill" is checked.
+
+
+
+
+ Customer Asked for Fill
+
+
-
-
-
-
Fill
-
+
+
+
Payment Method
+
-
- Gallons Ordered
-
-
- {{ v$.CreateOilOrderForm.basicInfo.gallons_ordered.$errors[0].$message }}
-
-
-
- Expected
-
-
- {{ v$.CreateOilOrderForm.basicInfo.expected_delivery_date.$errors[0].$message }}
-
-
-
- Emergency
-
-
-
- Prime
-
-
-
- Same Day
-
-
-
-
-
-
- Customer Cards Payment
-
-
-
- {{ card['type_of_card'] }} {{ card['card_number'] }}
-
-
-
-
-
-
- No Cards on File!
-
-
-
-
-
Delivery Driver
-
-
- {{ driver['employee_first_name'] }} {{ driver['employee_last_name'] }}
+
+ Select Card
+
+ Select a card
+
+ {{ card.type_of_card }} - **** {{ card.last_four_digits }}
-
- One or Both must be selected
-
-
- Cash
-
-
-
-
-
- Other
-
-
-
-
Select a Promo
-
-
- {{ promo['name_of_promotion'] }} {{ promo['money_off_delivery'] }}
+ No cards on file for credit payment.
+
+
+
+
+ Expected Delivery Date
+
+ Date is required.
+
+
+ Assigned Driver
+
+ Select a driver
+
+ {{ driver.employee_first_name }} {{ driver.employee_last_name }}
-
-
+
+
+
+ Apply Promotion
+
+ No Promotion
+
+ {{ promo.name_of_promotion }} (${{ promo.money_off_delivery }} off)
+
+
+
-
- Dispatcher Note on Ticket
-
-
+
+
-
-
- Create Delivery
-
-
-
-
+
+
+ Dispatcher Notes
+
+
+
+
Create Delivery
+
-
-
-
Add a Credit Card
-
-
-
-
-
Main Card
-
+
+
Add a Credit Card
+
+
+
+ Name on Card
+
+ Required
+
+
+ Card Number
+
+ Required
+
+
+
Expiration
+
+
+ MM
+ {{ String(m).padStart(2, '0') }}
+
+
+ YYYY
+ {{ new Date().getFullYear() + y - 1 }}
+
+
+
Required
+
+
+ CVC / CVV
+
+ Required
+
+
+ Card Type
+
+ Select Type
+ Visa MasterCard Discover American Express
+
+ Required
+
+
+ Billing Zip Code
+
+
-
-
- Name on Card
-
-
- {{ v$.CreateCardForm.basicInfo.card_name.$errors[0].$message }}
-
-
-
-
- Card Number
-
-
- {{ v$.CreateCardForm.basicInfo.card_number.$errors[0].$message }}
-
-
-
-
- Expiration Month
-
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
-
-
-
-
- Expiration Year
-
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
-
-
-
- {{ v$.CreateCardForm.basicInfo.expiration_year.$errors[0].$message }}
-
-
-
-
- Type of Card
-
- Visa
- MasterCard
- Discover
- American Express
-
-
-
- {{ v$.CreateCardForm.basicInfo.type_of_card.$errors[0].$message }}
-
-
-
-
- Security Number
-
-
- {{ v$.CreateCardForm.basicInfo.security_number.$errors[0].$message }}
-
-
-
-
- Zip Code
-
-
-
-
- Save Credit Card
-
-
-
-
-
+
+
+ Set as Main Card
+
+
+
+ Save Credit Card
+
-
-
Remind customer of tank Inspection
-
Ask how they heard about us
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/src/pages/delivery/edit.vue b/src/pages/delivery/edit.vue
index 72b26b9..58ebd48 100755
--- a/src/pages/delivery/edit.vue
+++ b/src/pages/delivery/edit.vue
@@ -1,290 +1,153 @@
-
-
-
-
-
-
+
+
+
-
-
- Home
-
-
+ Home
+ Edit Oil Delivery #{{ deliveryOrder.id }}
-
-
-
-
- Edit Oil Delivery
-
-
-
- Delivery id: {{ deliveryOrder.id }}
-
-
-
-
- View Profile
-
-
-
-
-
- {{ customer.customer_first_name }}
- {{ customer.customer_last_name }}
-
-
{{customer.customer_address}}
-
-
- {{ customer.customer_town }},
-
-
-
Massachusetts
-
Rhode Island
-
New Hampshire
-
Maine
-
Vermont
-
Maine
-
New York
-
Unknown state
-
-
- {{ customer.customer_zip }}
-
-
-
-
- {{ customer.customer_apt }}
-
-
-
Residential
-
apartment
-
condo
-
commercial
-
business
-
construction
-
container
-
-
- {{ customer.customer_phone_number }}
-
-
+
+
+
+
+
+
+
{{ customer.customer_first_name }} {{ customer.customer_last_name }}
+
Account: {{ customer.account_number }}
+
+ View Profile
+
+
+
+
{{ customer.customer_address }}
+
{{ customer.customer_apt }}
+
{{ customer.customer_town }}, {{ stateName }} {{ customer.customer_zip }}
+
{{ customer.customer_phone_number }}
-
-
-
-
-
-
- {{ userCard.type_of_card }}
-
-
- {{ userCard.name_on_card }}
-
-
- {{ userCard.card_number }}
-
-
- {{ userCard.expiration_month }}/ {{ userCard.expiration_year }}
-
-
- {{ userCard.security_number }}
-
-
-
-
-
-
-
-
- Order Date:
-
-
- {{ deliveryOrder.when_ordered }}
-
-
-
- Expected Delivery Date:
-
-
- {{ deliveryOrder.expected_delivery_date }}
-
-
-
- Price per gallon:
-
-
-
- {{ deliveryOrder.customer_price }}
+
+
+
Card on File
+
+
Card Type: {{ userCard.type_of_card }}
+
Card Number: {{ userCard.card_number }}
+
Name: {{ userCard.name_on_card }}
+
Expires: {{ userCard.expiration_month }}/{{ userCard.expiration_year }}
-
-
-
-
-
-
Gallons Ordered
-
-
- {{ v$.CreateOilOrderForm.basicInfo.gallons_ordered.$errors[0].$message }}
-
+
+
+
Update Delivery Details
+
+
+
-
-
Fill
-
+
+
-
- Cash
-
-
-
-
-
-
- Check
-
-
+
+
-
-
-
Customer Cards Payment
-
-
-
- {{ card['type_of_card'] }} {{ card['card_number'] }}
+
+
+
Payment Method
+
+
+
+ Select Card
+
+ Select a card
+
+ {{ card.type_of_card }} {{ card.card_number }}
-
-
- No Cards on File!
-
- Add CreditCard
-
+
+
+
+
+ Delivery Status
+
+
+ {{ status.text }}
+
+
+
+
+ Assigned Driver
+
+ Select a driver
+
+ {{ driver.employee_first_name }} {{ driver.employee_last_name }}
+
+
-
-
-
-
-
-
-
Delivery Status
-
-
- {{ delivery['text'] }}
-
-
-
- {{ v$.CreateCustomerForm.basicInfo.delivery_status.$errors[0].$message }}
-
+
+
+ Dispatcher Notes
+
-
-
- Delivery Created
-
-
-
-
- Expected
-
-
- {{ v$.CreateOilOrderForm.basicInfo.expected_delivery_date.$errors[0].$message }}
-
-
-
-
-
-
- Prime
-
-
-
- Emergency
-
-
-
- Same Day
-
-
-
-
- Delivery Driver
-
-
- {{ driver['employee_first_name'] }} {{ driver['employee_last_name'] }}
-
-
-
-
-
- Select a Promo
-
-
- {{ promo['name_of_promotion'] }} {{ promo['money_off_delivery'] }}
-
-
-
-
-
- Dispatcher Note on Ticket
-
-
-
-
-
- Save Changes
-
+
+
+ Save Changes
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/delivery/home.vue b/src/pages/delivery/home.vue
index 98c5570..f6aa38a 100755
--- a/src/pages/delivery/home.vue
+++ b/src/pages/delivery/home.vue
@@ -1,150 +1,176 @@
-
-
-
-
-
-
+
+
+
-
-
- Home
-
-
-
+ Home
+ Deliveries
-
- Delivery Home
-
-
-
-
-
-
Todays stats
-
Total Deliveries: {{ delivery_count }}
-
Completed: {{ delivery_count_delivered }} / {{ delivery_count }}
+
+
+
+
+
+
Deliveries
+
+
+
+
+
Today's Deliveries
+
{{ delivery_count }}
+
+
+
Completed
+
{{ delivery_count_delivered }} / {{ delivery_count }}
+
-
Recent 100 delivieres
+
Recent Deliveries
-
-
-
-
-
+
+
+
- Account #
+ Delivery #
Name
Status
- Town
- Address
+ Town / Address
Gallons
Date
- Automatic
- Prime
- Same Day
- Emergency
+ Options
Payment
+ Actions
-
-
- {{ oil['id'] }}
-
-
- {{ oil['customer_name'] }}
-
-
+
+ {{ oil.id }}
- Waiting
- delivered
- Out for Delivery
- Cancelled
- Partial Delivery
- Issue
- Finalized
-
-
- {{ oil['customer_town'] }}
- {{ oil['customer_address'] }}
-
- Fill
- {{ oil['gallons_ordered'] }}
-
- {{ oil['expected_delivery_date'] }}
-
- No
- Yes
-
-
-
- No
- Yes
-
-
- No
- Yes
-
-
- No
- Yes
-
-
-
-
-
-
- Cash
- CC
- Cash/CC
- Check
- Other
-
-
-
-
-
-
-
-
- View Delivery
-
-
- Edit Delivery
-
-
-
- Finalize
-
-
-
-
- Print Ticket
-
+
+ {{ oil.customer_name }}
+
+
+ Waiting
+ Delivered
+ Out for Delivery
+ Cancelled
+ Partial Delivery
+ Issue
+ Finalized
+
+
+
+ {{ oil.customer_town }}
+ {{ oil.customer_address }}
+
+
+ FILL
+ {{ oil.gallons_ordered }}
+
+ {{ oil.expected_delivery_date }}
+
+
+ PRIME
+ SAME DAY
+ EMERGENCY
+
+
+
+ Cash
+ CC
+ Cash/CC
+ Check
+ Other
+
+
+
+ View
+ Edit
+ Finalize
+ Print
+
+
-
-
- {{ recordsLength }} items Found
-
+
+
+
+
+
+
+
+
{{ oil.customer_name }}
+
Delivery #{{ oil.id }}
+
+
+ Waiting
+ Delivered
+ Out for Delivery
+ Cancelled
+ Partial Delivery
+ Issue
+ Finalized
+
+
+
+
+
PRIME
+
SAME DAY
+
EMERGENCY
+
+
+
+
Address: {{ oil.customer_address }}
+
Town: {{ oil.customer_town }}
+
Date: {{ oil.expected_delivery_date }}
+
Gallons:
+ FILL
+ {{ oil.gallons_ordered }}
+
+
+
+
+ View
+ Edit
+ Finalize
+ Print
+
+
+
+
+
+
+
+
-
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/employee/edit.vue b/src/pages/employee/edit.vue
index 87f0bbc..747139e 100755
--- a/src/pages/employee/edit.vue
+++ b/src/pages/employee/edit.vue
@@ -1,383 +1,275 @@
-
-
-
-
-
+
+
+
+
+
+ Home
+ Employees
+ Edit Employee
+
-
-
-
-
-
- Home
-
-
-
-
- Customers
-
-
-
-
-
-
Edit employee
-
- General Info
+
+
+ Edit Employee
+
+
+ Back to Profile
+
+
-
-
- First Name
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_first_name.$errors[0].$message }}
-
-
+
+
+
-
-
-
- Last Name
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_last_name.$errors[0].$message }}
-
-
-
-
-
-
-
-
Type of employee
-
-
- {{ employee['text'] }}
+
+
-
- Employee Address
-
-
-
-
Street Address
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_address.$errors[0].$message }}
-
+
+
-
-
-
-
+
+
+
Employment Dates & Details
+
+
+
-
-
- Town
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_town.$errors[0].$message }}
-
-
-
-
-
- Phone Number
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_phone_number.$errors[0].$message }}
-
-
-
-
-
- State
-
-
- {{ state['text'] }}
-
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_state.$errors[0].$message }}
-
-
-
-
-
- Zip Code
-
-
- {{ v$.CreateEmployeeForm.basicInfo.employee_zip.$errors[0].$message }}
-
-
-
-
-
- Employee BirthDay
-
-
-
-
Employee Dates
-
-
-
- Employee Start Date
-
-
-
-
-
- Employee End Date
-
-
-
-
-
-
- Edit Employee
-
-
-
-
+
+
+ Save Changes
+
+
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/employee/home.vue b/src/pages/employee/home.vue
index 108a77c..75db399 100755
--- a/src/pages/employee/home.vue
+++ b/src/pages/employee/home.vue
@@ -1,109 +1,109 @@
-
-
-
-
-
-
+
+
+
-
-
- Home
-
-
-
-
- employees
-
-
+ Home
+ Employees
+
Employees
-
Employees
-
-
- Create Employee
-
+
+
+
+
+
{{ recordsLength }} employees found
+
+ Create New Employee
+
+
+
+
+
+
+
+
+
+
+ Employee ID
+ Name
+ Role
+ Town
+ Phone Number
+ Actions
+
+
+
+
+ {{ person.id }}
+ {{ person.employee_first_name }} {{ person.employee_last_name }}
+ {{ getEmployeeTypeName(person.employee_type) }}
+ {{ person.employee_town }}
+ {{ person.employee_phone_number }}
+
+
+ Edit
+ View
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ person.employee_first_name }} {{ person.employee_last_name }}
+
ID: #{{ person.id }}
+
+
+ {{ getEmployeeTypeName(person.employee_type) }}
+
+
+
+
{{ person.employee_town }}
+
{{ person.employee_phone_number }}
+
+
+ Edit
+ View
+
+
+
+
-
-
-
-
-
-
- Employee ID
- Name
- Type
- Town
- Phone Number
-
-
-
-
-
-
- {{ person['id'] }}
- {{ person['employee_first_name'] }} {{ person['employee_last_name'] }}
-
- Owner
- Manager
- Secretary
- Office
- Driver
- Service Tech
- Contract
- Cash
- Driver/Tech
-
-
-
- {{ person['employee_town'] }}
-
- {{ person['employee_phone_number'] }}
-
-
- Edit
-
-
- View
-
-
-
-
-
-
-
+
+
+
+
-
{{ recordsLength }} items Found
+
+
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/employee/profile/home.vue b/src/pages/employee/profile/home.vue
index e2e1595..9ae8e78 100755
--- a/src/pages/employee/profile/home.vue
+++ b/src/pages/employee/profile/home.vue
@@ -1,108 +1,84 @@
-
-
-
-
-
-
+
+
+
+
+
+ Home
+ Employees
+ Profile
+
-
-
-
-
-
- Home
-
-
-
-
- Customers
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- Edit Employee
-
-
-
-
- {{ employee.employee_first_name }}
- {{ employee.employee_last_name }}
-
-
- {{ employee.employee_address }}
-
- {{ employee.employee_apt }}
-
-
-
-
- {{ employee.employee_town }},
-
+
{{ employee.employee_first_name }} {{ employee.employee_last_name }}
+
{{ employeeTypeName }}
+
+ Edit Employee
+
+
-
-
Massachusetts
-
Rhode Island
-
New Hampshire
-
Maine
-
Vermont
-
Maine
-
New York
-
Unknown state
-
-
- {{ employee.employee_zip }}
-
-
-
- {{ employee.employee_apt }}
-
-
- {{ employee.employee_phone_number }}
-
-
-
owner
-
manager
-
secretary
-
office
-
driver
-
tech
-
contract
-
cash
-
driver/tech
-
Unknown employee type
-
+
+
+
+
Contact Information
+
+
{{ employee.employee_phone_number }}
+
{{ employee.employee_email }}
+
+
+
+
Address
+
+
{{ employee.employee_address }}
+
{{ employee.employee_apt }}
+
{{ employee.employee_town }}, {{ employeeStateName }} {{ employee.employee_zip }}
+
+
+
+
Employment Dates
+
+
Start Date: {{ employee.employee_start_date || 'N/A' }}
+
End Date: {{ employee.employee_end_date || 'N/A' }}
+
+
-
-
-
- Delivery
-
-
-
- Total Deliverys Done: {{ total_deliviers_done }}
-
-
- Total Gallons Delivered: {{ total_gallons_delivered }}
-
-
- Total Prime: {{ total_primes }}
-
-
-
+
+
+
Delivery Statistics
+
+
+
Total Deliveries
+
{{ total_deliviers_done }}
+
+
+
Total Gallons
+
{{ total_gallons_delivered }}
+
Delivered
+
+
+
Total Primes
+
{{ total_primes }}
@@ -116,24 +92,15 @@
import { defineComponent } from 'vue'
import axios from 'axios'
import authHeader from '../../../services/auth.header'
-import Header from '../../../layouts/headers/headerauth.vue'
-import SideBar from '../../../layouts/sidebar/sidebar.vue'
import Footer from '../../../layouts/footers/footer.vue'
-
export default defineComponent({
name: 'employeeProfile',
-
components: {
- Header,
- SideBar,
Footer,
},
-
data() {
return {
- token: null,
- user_placeholder: '',
user: null,
loaded: false,
employee: {
@@ -144,128 +111,101 @@ export default defineComponent({
employee_address: "",
employee_apt: "",
employee_zip: "",
- employee_birthday: "",
employee_phone_number: "",
employee_start_date: "",
employee_end_date: "",
employee_type: '',
employee_state: '',
+ employee_email: '', // Added for completeness
},
total_deliviers_done: 0,
total_gallons_delivered: 0,
total_primes: 0,
}
},
+ computed: {
+ employeeTypeName(): string {
+ const typeMap: Record
= {
+ '0': 'Owner', '1': 'Manager', '2': 'Secretary', '3': 'Office',
+ '4': 'Driver', '5': 'Tech', '6': 'Contractor', '7': 'Cash Driver', '8': 'Driver/Tech'
+ };
+ return typeMap[this.employee.employee_type] || 'Unknown Role';
+ },
+ employeeStateName(): string {
+ const stateMap: Record = {
+ '0': 'MA', '1': 'RI', '2': 'NH', '3': 'ME', '4': 'VT', '5': 'CT', '6': 'NY'
+ };
+ return stateMap[this.employee.employee_state] || 'Unknown State';
+ }
+ },
created() {
- this.userStatus()
+ this.userStatus();
+ this.getEmployee(this.$route.params.id);
},
- mounted() {
- this.getEmployee(this.$route.params.id)
- },
-
watch: {
- $route() {
- this.getEmployee(this.$route.params.id);
+ // Watch the route to refetch data if the employee ID changes
+ '$route.params.id'(newId) {
+ if (newId) {
+ this.getEmployee(newId);
+ }
},
},
methods: {
- getPage: function (page: any) {
- // we simulate an api call that fetch the records from a backend
- this.getEmployee(page)
- },
userStatus() {
- let path = import.meta.env.VITE_BASE_URL + '/auth/whoami';
- axios({
- method: 'get',
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ const path = import.meta.env.VITE_BASE_URL + '/auth/whoami';
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
if (response.data.ok) {
this.user = response.data.user;
-
}
})
.catch(() => {
- this.user = null
- })
+ this.user = null;
+ });
},
-
getEmployee(userid: any) {
- let path = import.meta.env.VITE_BASE_URL + "/employee/" + userid;
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ this.loaded = false; // Set loading state
+ const path = `${import.meta.env.VITE_BASE_URL}/employee/${userid}`;
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
if (response.data) {
-
this.employee = response.data;
- if (this.employee.id){
- this.getEmployeeStatsDeliveriesDone(this.employee.id)
- this.getEmployeeStatsGallonsDone(this.employee.id)
- this.getEmployeeStatsPrimesDone(this.employee.id)
+ // Fetch stats only after we confirm we have a valid employee
+ if (this.employee.id) {
+ this.getEmployeeStatsDeliveriesDone(this.employee.id);
+ this.getEmployeeStatsGallonsDone(this.employee.id);
+ this.getEmployeeStatsPrimesDone(this.employee.id);
}
-
- this.loaded = true
-
-
-
}
})
+ .catch((error: any) => {
+ console.error("Failed to fetch employee data:", error);
+ })
+ .finally(() => {
+ this.loaded = true; // End loading state
+ });
},
- getEmployeeStatsDeliveriesDone(userid: any) {
- let path = import.meta.env.VITE_BASE_URL + "/stats/delivery/total/" + userid;
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ getEmployeeStatsDeliveriesDone(userid: string) {
+ const path = `${import.meta.env.VITE_BASE_URL}/stats/delivery/total/${userid}`;
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
- if (response.data) {
-
- this.total_deliviers_done = response.data.data;
-
- }
- })
+ this.total_deliviers_done = response.data.data || 0;
+ });
},
- getEmployeeStatsGallonsDone(userid: any) {
- let path = import.meta.env.VITE_BASE_URL + "/stats/gallons/total/" + userid;
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ getEmployeeStatsGallonsDone(userid: string) {
+ const path = `${import.meta.env.VITE_BASE_URL}/stats/gallons/total/${userid}`;
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
- if (response.data) {
- this.total_gallons_delivered = response.data.data;
-
- }
- })
+ this.total_gallons_delivered = response.data.data || 0;
+ });
},
- getEmployeeStatsPrimesDone(userid: any) {
- let path = import.meta.env.VITE_BASE_URL + "/stats/primes/total/" + userid;
- axios({
- method: "get",
- url: path,
- withCredentials: true,
- headers: authHeader(),
- })
+ getEmployeeStatsPrimesDone(userid: string) {
+ const path = `${import.meta.env.VITE_BASE_URL}/stats/primes/total/${userid}`;
+ axios.get(path, { withCredentials: true, headers: authHeader() })
.then((response: any) => {
- if (response.data) {
-
- this.total_primes = response.data.data;
-
- }
- })
+ this.total_primes = response.data.data || 0;
+ });
},
},
-})
-
-
-
\ No newline at end of file
+});
+
\ No newline at end of file
diff --git a/src/pages/money/profit_year.vue b/src/pages/money/profit_year.vue
index 5f7c188..a71b3e0 100644
--- a/src/pages/money/profit_year.vue
+++ b/src/pages/money/profit_year.vue
@@ -1,9 +1,6 @@
-
-
-
-
+
diff --git a/src/pages/pay/pay_oil.vue b/src/pages/pay/pay_oil.vue
index 0fce359..f829346 100755
--- a/src/pages/pay/pay_oil.vue
+++ b/src/pages/pay/pay_oil.vue
@@ -1,9 +1,6 @@
-
-
-
-
+
diff --git a/src/pages/service/ServiceCalendar.vue b/src/pages/service/ServiceCalendar.vue
index 05969a4..cd3fb68 100644
--- a/src/pages/service/ServiceCalendar.vue
+++ b/src/pages/service/ServiceCalendar.vue
@@ -1,9 +1,6 @@
-
-
-
-
+
@@ -78,7 +75,7 @@ export default defineComponent({
events: `${import.meta.env.VITE_BASE_URL}/service/all`,
eventClick: this.handleEventClick,
// Add headers for authentication if needed by your API
- eventSourceSuccess: (content, response) => {
+ eventSourceSuccess: (content) => {
// This is where you could transform data if needed
return content;
},
diff --git a/src/pages/service/ServiceHome.vue b/src/pages/service/ServiceHome.vue
index 418a067..41b5800 100644
--- a/src/pages/service/ServiceHome.vue
+++ b/src/pages/service/ServiceHome.vue
@@ -1,66 +1,125 @@
-
-
-
-
-
-
+
+
+
-
-
- Home
-
-
-
- Service Calls
-
+ Home
+ Service Calls
+
Service Calls
-
- Service Calls
+
+
+
+
+
Upcoming and Active Service Calls
+
{{ services.length }} calls found
+
+
+
+
+
+
+
Loading service calls...
+
+
+
+
+
No active service calls found.
+
+
+
+
+
+
+
+
+
+ Date / Time
+ Customer
+ Address
+ Service Type
+ Description
+ Cost
+ Actions
+
+
+
+
+
+
+ {{ formatDate(service.scheduled_date) }}
+ {{ formatTime(service.scheduled_date) }}
+
+ {{ service.customer_name }}
+ {{ service.customer_address }}, {{ service.customer_town }}
+
+
+ {{ getServiceTypeName(service.type_service_call) }}
+
+
+
+
+
+
+ {{ truncateDescription(service.description) }}
+
Read more
+
+
+ {{ formatCurrency(service.service_cost) }}
+
+ View
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ service.customer_name }}
+
{{ service.customer_address }}, {{ service.customer_town }}
+
+
+ {{ getServiceTypeName(service.type_service_call) }}
+
+
+
+
+
Date: {{ formatDate(service.scheduled_date) }}
+
Time: {{ formatTime(service.scheduled_date) }}
+
Cost: {{ formatCurrency(service.service_cost) }}
+
+
+
+
+
+
+ {{ truncateDescription(service.description) }}
+
Read more
+
+
+
+
+ View
+
+
+
+
+
-
-
-
Loading service calls...
-
-
-
-
No service calls found.
-
-
-
-
-
-
- Scheduled Date
- Time
- Customer Name
- Address
- Service Type
- Description
-
-
-
-
- {{ formatDate(service.scheduled_date) }}
- {{ formatTime(service.scheduled_date) }}
-
- {{ service.customer_name }}
-
-
- {{ service.customer_address }}, {{ service.customer_town }}
-
- {{ getServiceTypeName(service.type_service_call) }}
-
- {{ service.description }}
- {{ service.service_cost }}
-
-
-
-
-
@@ -74,16 +133,13 @@
@delete-service="handleDeleteService"
/>
-