gigafibre-fsm/apps/field/src/pages/MorePage.vue
louispaulb 11cd38f93c feat: add field tech app — barcode scanner, tasks, diagnostics, offline
Mobile-first Quasar PWA for field technicians at erp.gigafibre.ca/field/:
- Multi-barcode scanner (photo + live + manual) with device lookup
- Tasks page: today's Dispatch Jobs + assigned tickets
- Diagnostic: speed test, HTTP resolve, batch service check
- Device detail with customer linking
- Offline support: IndexedDB queue, API cache, auto-sync
- Standalone nginx container with Traefik StripPrefix + Authentik SSO

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 23:00:44 -04:00

65 lines
1.9 KiB
Vue

<template>
<q-page padding>
<div class="text-h6 q-mb-md">Plus</div>
<q-list>
<!-- Offline queue -->
<q-item>
<q-item-section avatar><q-icon name="cloud_sync" /></q-item-section>
<q-item-section>
<q-item-label>File d'attente hors ligne</q-item-label>
<q-item-label caption>{{ offline.pendingCount }} action(s) en attente</q-item-label>
</q-item-section>
<q-item-section side>
<q-btn flat dense icon="sync" :loading="offline.syncing" @click="offline.syncQueue()"
:disable="!offline.online || offline.pendingCount === 0" />
</q-item-section>
</q-item>
<q-separator />
<!-- Connectivity -->
<q-item>
<q-item-section avatar>
<q-icon :name="offline.online ? 'wifi' : 'wifi_off'" :color="offline.online ? 'positive' : 'negative'" />
</q-item-section>
<q-item-section>
<q-item-label>{{ offline.online ? 'En ligne' : 'Hors ligne' }}</q-item-label>
</q-item-section>
</q-item>
<q-separator />
<!-- User -->
<q-item>
<q-item-section avatar><q-icon name="person" /></q-item-section>
<q-item-section>
<q-item-label>{{ auth.user || '' }}</q-item-label>
</q-item-section>
</q-item>
<q-separator />
<!-- Logout -->
<q-item clickable @click="auth.doLogout()">
<q-item-section avatar><q-icon name="logout" color="negative" /></q-item-section>
<q-item-section>
<q-item-label class="text-negative">Déconnexion</q-item-label>
</q-item-section>
</q-item>
</q-list>
<div class="text-caption text-grey text-center q-mt-xl">
Targo Field v0.1.0
</div>
</q-page>
</template>
<script setup>
import { useOfflineStore } from 'src/stores/offline'
import { useAuthStore } from 'src/stores/auth'
const offline = useOfflineStore()
const auth = useAuthStore()
</script>