diff --git a/apps/field/src/pages/JobDetailPage.vue b/apps/field/src/pages/JobDetailPage.vue new file mode 100644 index 0000000..ac8187c --- /dev/null +++ b/apps/field/src/pages/JobDetailPage.vue @@ -0,0 +1,526 @@ + + + + + + + {{ job?.subject || job?.name || 'Job' }} + {{ job?.name }} + + + + + + + Ouvrir dans ERPNext + + + + + + + + + + + + + + + + + + + + + + + + + + INFORMATIONS + + + + + + + + + + + + + + + + + + + + + + CLIENT & ADRESSE + + + + + {{ job.customer_name }} + + + + {{ locationAddress }} + + + + + Contact: {{ locationDetail.contact_name }} + — {{ locationDetail.contact_phone }} + + + + + + + + ÉQUIPEMENTS ({{ equipment.length }}) + + + + + + + + + + + + {{ eq.equipment_type }} — {{ eq.brand }} {{ eq.model }} + {{ eq.serial_number }} + + + + + + + + Aucun équipement lié + + + + + + + Ajouter un équipement + + + + + Scanner un code-barres / QR + Utiliser la caméra pour détecter un SN ou MAC + + + + + + Rechercher un équipement existant + Par numéro de série ou MAC + + + + + + Créer un nouvel équipement + Saisir manuellement les informations + + + + + + + + + + Rechercher un équipement + + + + + + + + {{ eq.equipment_type }} — {{ eq.brand }} {{ eq.model }} + SN: {{ eq.serial_number }} + Client: {{ eq.customer_name }} + + + + + + + + Aucun résultat + + + + + + + + + + + + Nouvel équipement + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/field/src/pages/TasksPage.vue b/apps/field/src/pages/TasksPage.vue index 15e07c1..d4e9edd 100644 --- a/apps/field/src/pages/TasksPage.vue +++ b/apps/field/src/pages/TasksPage.vue @@ -15,7 +15,8 @@ - + @@ -25,33 +26,18 @@ {{ job.customer_name || job.customer || '' }} · {{ job.scheduled_time?.slice(0, 5) }} - - - - - - - - - + {{ job.service_location_name }} - - - - - - + + + + + + @@ -91,7 +77,6 @@ const loading = ref(false) const filter = ref('jobs') const jobs = ref([]) const tickets = ref([]) -const expanded = ref(null) const offline = useOfflineStore() const today = new Date().toISOString().slice(0, 10) @@ -109,10 +94,6 @@ function statusColor (s) { return map[s] || 'grey' } -function expandJob (job) { - expanded.value = expanded.value === job.name ? null : job.name -} - async function loadTasks () { loading.value = true try { diff --git a/apps/field/src/router/index.js b/apps/field/src/router/index.js index befe1c6..5130bc2 100644 --- a/apps/field/src/router/index.js +++ b/apps/field/src/router/index.js @@ -9,6 +9,7 @@ const routes = [ { path: 'scan', name: 'scan', component: () => import('src/pages/ScanPage.vue') }, { path: 'diagnostic', name: 'diagnostic', component: () => import('src/pages/DiagnosticPage.vue') }, { path: 'more', name: 'more', component: () => import('src/pages/MorePage.vue') }, + { path: 'job/:name', name: 'job-detail', component: () => import('src/pages/JobDetailPage.vue'), props: true }, { path: 'device/:serial', name: 'device', component: () => import('src/pages/DevicePage.vue'), props: true }, ], },