Initial commit: fabric-trade-user Vue 3 app with mobile and desktop layouts

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 09:57:24 +02:00
co-authored by Cursor
commit fd3e5e5126
142 changed files with 19798 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import { computed, ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { useCartStore } from '@/stores/cart'
export function useCartPage() {
const router = useRouter()
const cartStore = useCartStore()
const showFullDialog = ref(false)
const items = computed(() => cartStore.activeCart?.items ?? [])
const isEmpty = computed(() => items.value.length === 0)
const companyName = computed(() => cartStore.activeCart?.companyName ?? '')
function removeItem(itemId: string) {
cartStore.removeItem(itemId)
}
function proceedToCheckout() {
if (items.value.length === 0) return
if (cartStore.isFull) {
showFullDialog.value = true
return
}
router.push('/checkout/settlement')
}
function proceedAnyway() {
showFullDialog.value = false
router.push('/checkout/settlement')
}
function createNewInvoice() {
cartStore.createNewCartForSameCompany()
showFullDialog.value = false
const companyId = cartStore.activeCart?.companyId
if (companyId) {
router.push(`/companies/${companyId}/catalogs`)
}
}
onMounted(() => {
cartStore.ensureActiveCartForCartPage()
})
return {
cartStore,
items,
isEmpty,
companyName,
showFullDialog,
removeItem,
proceedToCheckout,
proceedAnyway,
createNewInvoice,
}
}