/** * Lager Module * * Main module for warehouse management. * Shows submodules: Inventur (stocktake) */ import StocktakeList from '/mobile/modules/lager/inventur/StocktakeList.js'; import Scanner from '/mobile/modules/lager/inventur/Scanner.js'; import MovementForm from '/mobile/modules/lager/movement/MovementForm.js'; export default { name: 'LagerModule', emits: ['navigate', 'toast'], props: { user: Object, submodule: String, simpleMode: Boolean }, components: { StocktakeList, Scanner, MovementForm }, setup(props, { emit }) { const { ref, computed, watch } = Vue; // Submodules available in Lager const submodules = [ { id: 'Inventur', name: 'Inventur', icon: 'clipboard', color: 'bg-green-500' }, { id: 'Movement', name: 'Lagerbewegung', icon: 'arrows', color: 'bg-blue-500' } ]; // Scanner state const selectedStocktake = ref(null); const showScanner = ref(false); // Current view based on submodule const currentView = computed(() => { if (!props.submodule) return 'menu'; if (props.submodule.toLowerCase() === 'inventur') { return showScanner.value ? 'scanner' : 'inventur'; } if (props.submodule.toLowerCase() === 'movement') { return 'movement'; } return 'menu'; }); // Watch for submodule changes watch(() => props.submodule, (newVal) => { if (!newVal) { showScanner.value = false; selectedStocktake.value = null; } }); const openSubmodule = (submoduleId) => { emit('navigate', 'Lager', submoduleId); }; const goBack = () => { if (showScanner.value) { showScanner.value = false; selectedStocktake.value = null; } }; const openScanner = (stocktake) => { selectedStocktake.value = stocktake; showScanner.value = true; }; const closeScanner = () => { showScanner.value = false; selectedStocktake.value = null; }; const showToast = (message, type) => { emit('toast', message, type); }; return { submodules, selectedStocktake, showScanner, currentView, openSubmodule, goBack, openScanner, closeScanner, showToast }; }, template: `