add warranties page
This commit is contained in:
parent
44d47db0ad
commit
2828c0f9c8
@ -39,6 +39,12 @@ class Api {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async getWarrantyData() {
|
||||||
|
const data = DataUtils.dummyWarrantyData;
|
||||||
|
console.log("DEBUG: API - getWarrantyData result: ", data);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
static async getDocsList(doctype, fields = []) {
|
static async getDocsList(doctype, fields = []) {
|
||||||
const docs = await frappe.db.get_list(doctype, { fields });
|
const docs = await frappe.db.get_list(doctype, { fields });
|
||||||
console.log(`DEBUG: API - Fetched ${doctype} list: `, docs);
|
console.log(`DEBUG: API - Fetched ${doctype} list: `, docs);
|
||||||
|
|||||||
0
frontend/src/components/DashboardModule.vue
Normal file
0
frontend/src/components/DashboardModule.vue
Normal file
@ -27,7 +27,7 @@
|
|||||||
v-model="filterModel.value"
|
v-model="filterModel.value"
|
||||||
type="text"
|
type="text"
|
||||||
@input="filterCallback()"
|
@input="filterCallback()"
|
||||||
placeholder="Search by name"
|
:placeholder="`Search ${col.label}...`"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="col.type === 'status'" #body="slotProps">
|
<template v-if="col.type === 'status'" #body="slotProps">
|
||||||
@ -73,7 +73,7 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(['rowClick']);
|
const emit = defineEmits(["rowClick"]);
|
||||||
|
|
||||||
const filterRef = ref(props.filters);
|
const filterRef = ref(props.filters);
|
||||||
const selectedRows = ref();
|
const selectedRows = ref();
|
||||||
|
|||||||
@ -28,29 +28,35 @@ const categories = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const items = ref([
|
const createButtons = ref([
|
||||||
{
|
{
|
||||||
label: "Client",
|
label: "Client",
|
||||||
command: () => {
|
command: () => {
|
||||||
frappe.new_doc("Customer");
|
frappe.new_doc("Customer");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: "Estimate",
|
|
||||||
command: () => {
|
|
||||||
frappe.new_doc("Estimate");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Job",
|
label: "Job",
|
||||||
command: () => {
|
command: () => {
|
||||||
frappe.new_doc("Job");
|
frappe.new_doc("Job");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "Estimate",
|
||||||
|
command: () => {
|
||||||
|
frappe.new_doc("Estimate");
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: "Invoice",
|
label: "Invoice",
|
||||||
command: () => {
|
command: () => {
|
||||||
frappe.new_doc("Sales Invoice");
|
alert("Create Invoice clicked");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Warranty Claim",
|
||||||
|
command: () => {
|
||||||
|
alert("Create Warranty Claim clicked");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -78,7 +84,7 @@ const handleCategoryClick = (category) => {
|
|||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<SpeedDial :model="items" direction="down" type="linear" radius="50">
|
<SpeedDial :model="createButtons" direction="down" type="linear" radius="50">
|
||||||
<template #button="{ toggleCallback }">
|
<template #button="{ toggleCallback }">
|
||||||
<button
|
<button
|
||||||
class="sidebar-button"
|
class="sidebar-button"
|
||||||
|
|||||||
@ -1,9 +1,125 @@
|
|||||||
<template lang="">
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<h2>Warranties Page</h2>
|
<h2>Warranty Claims</h2>
|
||||||
|
<div id="filter-container" class="filter-container">
|
||||||
|
<button @click="addNewWarranty" id="add-warranty-button" class="interaction-button">
|
||||||
|
Add New Warranty Claim
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<DataTable :data="tableData" :columns="columns" :filters="filters" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
|
||||||
export default {};
|
<script setup>
|
||||||
|
import { onMounted, ref } from "vue";
|
||||||
|
import DataTable from "../DataTable.vue";
|
||||||
|
import Api from "../../api";
|
||||||
|
import { FilterMatchMode } from "@primevue/core";
|
||||||
|
|
||||||
|
const tableData = ref([]);
|
||||||
|
|
||||||
|
const addNewWarranty = () => {
|
||||||
|
// TODO: Open modal or navigate to create warranty form
|
||||||
|
console.log("Add new warranty claim clicked");
|
||||||
|
// In the future, this could open a modal or navigate to a form
|
||||||
|
// For now, just log the action
|
||||||
|
};
|
||||||
|
|
||||||
|
const filters = {
|
||||||
|
customer: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
warrantyId: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
address: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
assignedTechnician: { value: null, matchMode: FilterMatchMode.CONTAINS },
|
||||||
|
};
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
label: "Warranty ID",
|
||||||
|
fieldName: "warrantyId",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Customer",
|
||||||
|
fieldName: "customer",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Address",
|
||||||
|
fieldName: "address",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Issue Description",
|
||||||
|
fieldName: "issueDescription",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Priority",
|
||||||
|
fieldName: "priority",
|
||||||
|
type: "status",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Status",
|
||||||
|
fieldName: "status",
|
||||||
|
type: "status",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Assigned Technician",
|
||||||
|
fieldName: "assignedTechnician",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Date Reported",
|
||||||
|
fieldName: "dateReported",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Est. Completion",
|
||||||
|
fieldName: "estimatedCompletionDate",
|
||||||
|
type: "text",
|
||||||
|
sortable: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
if (tableData.value.length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let data = await Api.getWarrantyData();
|
||||||
|
tableData.value = data;
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<style lang=""></style>
|
|
||||||
|
<style scoped>
|
||||||
|
.filter-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.interaction-button {
|
||||||
|
background-color: #007bff;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.interaction-button:hover {
|
||||||
|
background-color: #0056b3;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@ -773,17 +773,17 @@ class DataUtils {
|
|||||||
estimatedTime: "07:30",
|
estimatedTime: "07:30",
|
||||||
duration: 240,
|
duration: 240,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.9778, lng: -93.2650 }
|
coordinates: { lat: 44.9778, lng: -93.265 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
customer: "Sarah Johnson",
|
customer: "Sarah Johnson",
|
||||||
address: "456 Oak St, Northfield, MN",
|
address: "456 Oak St, Northfield, MN",
|
||||||
serviceType: "Zone Expansion Install",
|
serviceType: "Zone Expansion Install",
|
||||||
estimatedTime: "11:45",
|
estimatedTime: "11:45",
|
||||||
duration: 180,
|
duration: 180,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.4583, lng: -93.1614 }
|
coordinates: { lat: 44.4583, lng: -93.1614 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
@ -793,7 +793,7 @@ class DataUtils {
|
|||||||
estimatedTime: "15:00",
|
estimatedTime: "15:00",
|
||||||
duration: 120,
|
duration: 120,
|
||||||
status: "in progress",
|
status: "in progress",
|
||||||
coordinates: { lat: 44.2950, lng: -93.2688 }
|
coordinates: { lat: 44.295, lng: -93.2688 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 4,
|
stopId: 4,
|
||||||
@ -803,7 +803,7 @@ class DataUtils {
|
|||||||
estimatedTime: "17:30",
|
estimatedTime: "17:30",
|
||||||
duration: 90,
|
duration: 90,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.0839, lng: -93.2261 }
|
coordinates: { lat: 44.0839, lng: -93.2261 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 5,
|
stopId: 5,
|
||||||
@ -813,7 +813,7 @@ class DataUtils {
|
|||||||
estimatedTime: "19:15",
|
estimatedTime: "19:15",
|
||||||
duration: 75,
|
duration: 75,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 43.6667, lng: -92.9746 }
|
coordinates: { lat: 43.6667, lng: -92.9746 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 6,
|
stopId: 6,
|
||||||
@ -823,12 +823,12 @@ class DataUtils {
|
|||||||
estimatedTime: "20:45",
|
estimatedTime: "20:45",
|
||||||
duration: 150,
|
duration: 150,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 43.6481, lng: -93.3687 }
|
coordinates: { lat: 43.6481, lng: -93.3687 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
routeId: "MAT-002",
|
routeId: "MAT-002",
|
||||||
routeName: "South Metro Materials Route",
|
routeName: "South Metro Materials Route",
|
||||||
routeType: "Materials Route",
|
routeType: "Materials Route",
|
||||||
technician: "Sarah Johnson",
|
technician: "Sarah Johnson",
|
||||||
@ -849,7 +849,7 @@ class DataUtils {
|
|||||||
estimatedTime: "06:30",
|
estimatedTime: "06:30",
|
||||||
duration: 30,
|
duration: 30,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.7677, lng: -93.2777 }
|
coordinates: { lat: 44.7677, lng: -93.2777 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
@ -859,17 +859,17 @@ class DataUtils {
|
|||||||
estimatedTime: "07:15",
|
estimatedTime: "07:15",
|
||||||
duration: 25,
|
duration: 25,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.8041, lng: -93.1668 }
|
coordinates: { lat: 44.8041, lng: -93.1668 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
customer: "Carol Thompson - Job #2250",
|
customer: "Carol Thompson - Job #2250",
|
||||||
address: "999 Second St, Apple Valley, MN",
|
address: "999 Second St, Apple Valley, MN",
|
||||||
serviceType: "Deliver Controller & Wire",
|
serviceType: "Deliver Controller & Wire",
|
||||||
estimatedTime: "08:00",
|
estimatedTime: "08:00",
|
||||||
duration: 20,
|
duration: 20,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.7319, lng: -93.2177 }
|
coordinates: { lat: 44.7319, lng: -93.2177 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 4,
|
stopId: 4,
|
||||||
@ -879,7 +879,7 @@ class DataUtils {
|
|||||||
estimatedTime: "08:45",
|
estimatedTime: "08:45",
|
||||||
duration: 25,
|
duration: 25,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.7391, lng: -93.0658 }
|
coordinates: { lat: 44.7391, lng: -93.0658 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 5,
|
stopId: 5,
|
||||||
@ -889,15 +889,15 @@ class DataUtils {
|
|||||||
estimatedTime: "09:30",
|
estimatedTime: "09:30",
|
||||||
duration: 35,
|
duration: 35,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.6497, lng: -93.2427 }
|
coordinates: { lat: 44.6497, lng: -93.2427 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
routeId: "WAR-003",
|
routeId: "WAR-003",
|
||||||
routeName: "West Metro Warranty Route",
|
routeName: "West Metro Warranty Route",
|
||||||
routeType: "Warranty Route",
|
routeType: "Warranty Route",
|
||||||
technician: "David Martinez",
|
technician: "David Martinez",
|
||||||
date: "2025-10-26",
|
date: "2025-10-26",
|
||||||
status: "not started",
|
status: "not started",
|
||||||
totalStops: 6,
|
totalStops: 6,
|
||||||
@ -915,7 +915,7 @@ class DataUtils {
|
|||||||
estimatedTime: "08:30",
|
estimatedTime: "08:30",
|
||||||
duration: 60,
|
duration: 60,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.9211, lng: -93.4687 }
|
coordinates: { lat: 44.9211, lng: -93.4687 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
@ -925,7 +925,7 @@ class DataUtils {
|
|||||||
estimatedTime: "10:00",
|
estimatedTime: "10:00",
|
||||||
duration: 75,
|
duration: 75,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.9744, lng: -93.5066 }
|
coordinates: { lat: 44.9744, lng: -93.5066 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
@ -934,8 +934,8 @@ class DataUtils {
|
|||||||
serviceType: "Warranty: Sprinkler Head Broken",
|
serviceType: "Warranty: Sprinkler Head Broken",
|
||||||
estimatedTime: "11:30",
|
estimatedTime: "11:30",
|
||||||
duration: 45,
|
duration: 45,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0541, lng: -93.6091 }
|
coordinates: { lat: 45.0541, lng: -93.6091 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 4,
|
stopId: 4,
|
||||||
@ -945,17 +945,17 @@ class DataUtils {
|
|||||||
estimatedTime: "12:30",
|
estimatedTime: "12:30",
|
||||||
duration: 90,
|
duration: 90,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.9364, lng: -93.6719 }
|
coordinates: { lat: 44.9364, lng: -93.6719 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 5,
|
stopId: 5,
|
||||||
customer: "Laura Smith - Warranty #W-456",
|
customer: "Laura Smith - Warranty #W-456",
|
||||||
address: "202 Hill St, Chanhassen, MN",
|
address: "202 Hill St, Chanhassen, MN",
|
||||||
serviceType: "Warranty: Low Water Pressure",
|
serviceType: "Warranty: Low Water Pressure",
|
||||||
estimatedTime: "14:15",
|
estimatedTime: "14:15",
|
||||||
duration: 60,
|
duration: 60,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.8619, lng: -93.5272 }
|
coordinates: { lat: 44.8619, lng: -93.5272 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 6,
|
stopId: 6,
|
||||||
@ -965,16 +965,16 @@ class DataUtils {
|
|||||||
estimatedTime: "15:30",
|
estimatedTime: "15:30",
|
||||||
duration: 75,
|
duration: 75,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.7886, lng: -93.6022 }
|
coordinates: { lat: 44.7886, lng: -93.6022 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
routeId: "SOD-004",
|
routeId: "SOD-004",
|
||||||
routeName: "East Metro Sod Route",
|
routeName: "East Metro Sod Route",
|
||||||
routeType: "Sod Route",
|
routeType: "Sod Route",
|
||||||
technician: "Chris Wilson",
|
technician: "Chris Wilson",
|
||||||
date: "2025-10-26",
|
date: "2025-10-26",
|
||||||
status: "in progress",
|
status: "in progress",
|
||||||
totalStops: 4,
|
totalStops: 4,
|
||||||
completedStops: 1,
|
completedStops: 1,
|
||||||
@ -991,7 +991,7 @@ class DataUtils {
|
|||||||
estimatedTime: "08:00",
|
estimatedTime: "08:00",
|
||||||
duration: 120,
|
duration: 120,
|
||||||
status: "completed",
|
status: "completed",
|
||||||
coordinates: { lat: 44.9237, lng: -92.9594 }
|
coordinates: { lat: 44.9237, lng: -92.9594 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
@ -1001,7 +1001,7 @@ class DataUtils {
|
|||||||
estimatedTime: "10:30",
|
estimatedTime: "10:30",
|
||||||
duration: 90,
|
duration: 90,
|
||||||
status: "in progress",
|
status: "in progress",
|
||||||
coordinates: { lat: 44.9633, lng: -92.9652 }
|
coordinates: { lat: 44.9633, lng: -92.9652 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
@ -1011,7 +1011,7 @@ class DataUtils {
|
|||||||
estimatedTime: "12:15",
|
estimatedTime: "12:15",
|
||||||
duration: 150,
|
duration: 150,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 44.9530, lng: -92.9952 }
|
coordinates: { lat: 44.953, lng: -92.9952 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 4,
|
stopId: 4,
|
||||||
@ -1021,13 +1021,13 @@ class DataUtils {
|
|||||||
estimatedTime: "15:00",
|
estimatedTime: "15:00",
|
||||||
duration: 75,
|
duration: 75,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0119, lng: -93.0074 }
|
coordinates: { lat: 45.0119, lng: -93.0074 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
routeId: "MACH-005",
|
routeId: "MACH-005",
|
||||||
routeName: "Northwest Machine Route",
|
routeName: "Northwest Machine Route",
|
||||||
routeType: "Machine Route",
|
routeType: "Machine Route",
|
||||||
technician: "Lisa Anderson",
|
technician: "Lisa Anderson",
|
||||||
date: "2025-10-27",
|
date: "2025-10-27",
|
||||||
@ -1047,7 +1047,7 @@ class DataUtils {
|
|||||||
estimatedTime: "07:30",
|
estimatedTime: "07:30",
|
||||||
duration: 90,
|
duration: 90,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0105, lng: -93.4555 }
|
coordinates: { lat: 45.0105, lng: -93.4555 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
@ -1057,7 +1057,7 @@ class DataUtils {
|
|||||||
estimatedTime: "09:15",
|
estimatedTime: "09:15",
|
||||||
duration: 75,
|
duration: 75,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0724, lng: -93.4557 }
|
coordinates: { lat: 45.0724, lng: -93.4557 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
@ -1067,16 +1067,16 @@ class DataUtils {
|
|||||||
estimatedTime: "10:45",
|
estimatedTime: "10:45",
|
||||||
duration: 60,
|
duration: 60,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.1188, lng: -93.4025 }
|
coordinates: { lat: 45.1188, lng: -93.4025 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
routeId: "TRK-006",
|
routeId: "TRK-006",
|
||||||
routeName: "Regional Truck Route",
|
routeName: "Regional Truck Route",
|
||||||
routeType: "Truck Route",
|
routeType: "Truck Route",
|
||||||
technician: "Mark Thompson",
|
technician: "Mark Thompson",
|
||||||
date: "2025-10-27",
|
date: "2025-10-27",
|
||||||
status: "not started",
|
status: "not started",
|
||||||
totalStops: 4,
|
totalStops: 4,
|
||||||
completedStops: 0,
|
completedStops: 0,
|
||||||
@ -1093,7 +1093,7 @@ class DataUtils {
|
|||||||
estimatedTime: "07:00",
|
estimatedTime: "07:00",
|
||||||
duration: 30,
|
duration: 30,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0153, lng: -93.4233 }
|
coordinates: { lat: 45.0153, lng: -93.4233 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 2,
|
stopId: 2,
|
||||||
@ -1103,7 +1103,7 @@ class DataUtils {
|
|||||||
estimatedTime: "08:00",
|
estimatedTime: "08:00",
|
||||||
duration: 45,
|
duration: 45,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0845, lng: -93.4321 }
|
coordinates: { lat: 45.0845, lng: -93.4321 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 3,
|
stopId: 3,
|
||||||
@ -1113,7 +1113,7 @@ class DataUtils {
|
|||||||
estimatedTime: "09:15",
|
estimatedTime: "09:15",
|
||||||
duration: 60,
|
duration: 60,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0941, lng: -93.3563 }
|
coordinates: { lat: 45.0941, lng: -93.3563 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
stopId: 4,
|
stopId: 4,
|
||||||
@ -1123,10 +1123,163 @@ class DataUtils {
|
|||||||
estimatedTime: "11:00",
|
estimatedTime: "11:00",
|
||||||
duration: 45,
|
duration: 45,
|
||||||
status: "not started",
|
status: "not started",
|
||||||
coordinates: { lat: 45.0341, lng: -93.3678 }
|
coordinates: { lat: 45.0341, lng: -93.3678 },
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
static dummyWarrantyData = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
warrantyId: "W-001",
|
||||||
|
customer: "John Doe",
|
||||||
|
address: "123 Lane Dr, Cityville, MN",
|
||||||
|
originalJobId: "JOB001",
|
||||||
|
issueDescription: "Sprinkler head not rotating properly",
|
||||||
|
dateReported: "2024-10-20",
|
||||||
|
priority: "medium",
|
||||||
|
status: "open",
|
||||||
|
assignedTechnician: "Mike Johnson",
|
||||||
|
estimatedCompletionDate: "2024-10-25",
|
||||||
|
warrantyType: "Parts & Labor",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
warrantyId: "W-002",
|
||||||
|
customer: "Jane Smith",
|
||||||
|
address: "456 Oak St, Townsville, CA",
|
||||||
|
originalJobId: "JOB002",
|
||||||
|
issueDescription: "Controller not responding to schedule",
|
||||||
|
dateReported: "2024-10-18",
|
||||||
|
priority: "high",
|
||||||
|
status: "in progress",
|
||||||
|
assignedTechnician: "Sarah Johnson",
|
||||||
|
estimatedCompletionDate: "2024-10-23",
|
||||||
|
warrantyType: "Parts Only",
|
||||||
|
systemType: "Commercial Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
warrantyId: "W-003",
|
||||||
|
customer: "Mike Johnson",
|
||||||
|
address: "789 Pine Rd, Villagetown, TX",
|
||||||
|
originalJobId: "JOB003",
|
||||||
|
issueDescription: "Multiple zones not activating",
|
||||||
|
dateReported: "2024-10-15",
|
||||||
|
priority: "high",
|
||||||
|
status: "completed",
|
||||||
|
assignedTechnician: "David Martinez",
|
||||||
|
estimatedCompletionDate: "2024-10-20",
|
||||||
|
warrantyType: "Labor Only",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
warrantyId: "W-004",
|
||||||
|
customer: "Emily Davis",
|
||||||
|
address: "321 Maple Ave, Hamlet, FL",
|
||||||
|
originalJobId: "JOB004",
|
||||||
|
issueDescription: "Low water pressure in all zones",
|
||||||
|
dateReported: "2024-10-22",
|
||||||
|
priority: "medium",
|
||||||
|
status: "open",
|
||||||
|
assignedTechnician: null,
|
||||||
|
estimatedCompletionDate: "2024-10-28",
|
||||||
|
warrantyType: "Parts & Labor",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
warrantyId: "W-005",
|
||||||
|
customer: "David Wilson",
|
||||||
|
address: "654 Cedar Blvd, Borough, NY",
|
||||||
|
originalJobId: "JOB005",
|
||||||
|
issueDescription: "Valve stuck in open position",
|
||||||
|
dateReported: "2024-10-19",
|
||||||
|
priority: "high",
|
||||||
|
status: "in progress",
|
||||||
|
assignedTechnician: "Chris Wilson",
|
||||||
|
estimatedCompletionDate: "2024-10-24",
|
||||||
|
warrantyType: "Parts & Labor",
|
||||||
|
systemType: "Commercial Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
warrantyId: "W-006",
|
||||||
|
customer: "Sarah Brown",
|
||||||
|
address: "987 Birch Ln, Metropolis, IL",
|
||||||
|
originalJobId: "JOB006",
|
||||||
|
issueDescription: "Broken sprinkler head causing water waste",
|
||||||
|
dateReported: "2024-10-21",
|
||||||
|
priority: "low",
|
||||||
|
status: "open",
|
||||||
|
assignedTechnician: null,
|
||||||
|
estimatedCompletionDate: "2024-10-30",
|
||||||
|
warrantyType: "Parts Only",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
warrantyId: "W-007",
|
||||||
|
customer: "Chris Taylor",
|
||||||
|
address: "159 Spruce Ct, Capital City, WA",
|
||||||
|
originalJobId: "JOB007",
|
||||||
|
issueDescription: "Timer programming lost after power outage",
|
||||||
|
dateReported: "2024-10-17",
|
||||||
|
priority: "medium",
|
||||||
|
status: "completed",
|
||||||
|
assignedTechnician: "Mike Johnson",
|
||||||
|
estimatedCompletionDate: "2024-10-22",
|
||||||
|
warrantyType: "Labor Only",
|
||||||
|
systemType: "Commercial Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
warrantyId: "W-008",
|
||||||
|
customer: "Amanda Martinez",
|
||||||
|
address: "753 Willow Dr, Smalltown, OH",
|
||||||
|
originalJobId: "JOB008",
|
||||||
|
issueDescription: "Pipe leak causing flooding in lawn",
|
||||||
|
dateReported: "2024-10-16",
|
||||||
|
priority: "high",
|
||||||
|
status: "in progress",
|
||||||
|
assignedTechnician: "Sarah Johnson",
|
||||||
|
estimatedCompletionDate: "2024-10-23",
|
||||||
|
warrantyType: "Parts & Labor",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
warrantyId: "W-009",
|
||||||
|
customer: "Joshua Anderson",
|
||||||
|
address: "852 Aspen Rd, Bigcity, NJ",
|
||||||
|
originalJobId: "JOB009",
|
||||||
|
issueDescription: "Sprinkler coverage uneven after installation",
|
||||||
|
dateReported: "2024-10-14",
|
||||||
|
priority: "low",
|
||||||
|
status: "open",
|
||||||
|
assignedTechnician: "David Martinez",
|
||||||
|
estimatedCompletionDate: "2024-10-29",
|
||||||
|
warrantyType: "Labor Only",
|
||||||
|
systemType: "Residential Irrigation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
warrantyId: "W-010",
|
||||||
|
customer: "Olivia Thomas",
|
||||||
|
address: "147 Cypress St, Uptown, GA",
|
||||||
|
originalJobId: "JOB010",
|
||||||
|
issueDescription: "Rain sensor not functioning properly",
|
||||||
|
dateReported: "2024-10-13",
|
||||||
|
priority: "medium",
|
||||||
|
status: "completed",
|
||||||
|
assignedTechnician: "Chris Wilson",
|
||||||
|
estimatedCompletionDate: "2024-10-18",
|
||||||
|
warrantyType: "Parts Only",
|
||||||
|
systemType: "Commercial Irrigation",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user