feat: basic stopping card list
This commit is contained in:
parent
b8cdf27a44
commit
21aa44a44f
4 changed files with 128 additions and 48 deletions
|
|
@ -104,50 +104,53 @@ async function customerStall(path) {
|
|||
this.updateCart()
|
||||
},
|
||||
addToCart(item) {
|
||||
let prod = this.cart.products
|
||||
if (prod.has(item.id)) {
|
||||
let qty = prod.get(item.id).quantity
|
||||
if (qty == item.quantity) {
|
||||
this.$q.notify({
|
||||
type: 'warning',
|
||||
message: `${item.name} only has ${item.quantity} units!`,
|
||||
icon: 'production_quantity_limits'
|
||||
})
|
||||
return
|
||||
}
|
||||
prod.set(item.id, {
|
||||
...prod.get(item.id),
|
||||
quantity: qty + 1
|
||||
})
|
||||
} else {
|
||||
prod.set(item.id, {
|
||||
name: item.name,
|
||||
quantity: 1,
|
||||
price: item.price,
|
||||
image: item?.images[0] || null
|
||||
})
|
||||
}
|
||||
this.$q.notify({
|
||||
type: 'positive',
|
||||
message: `'${item.name}' added to cart`,
|
||||
icon: 'thumb_up'
|
||||
})
|
||||
this.cart.products = prod
|
||||
this.updateCart()
|
||||
},
|
||||
removeFromCart(item, del = false) {
|
||||
let prod = this.cart.products
|
||||
let qty = prod.get(item.id).quantity
|
||||
if (qty == 1 || del) {
|
||||
prod.delete(item.id)
|
||||
} else {
|
||||
prod.set(item.id, {
|
||||
...prod.get(item.id),
|
||||
quantity: qty - 1
|
||||
})
|
||||
}
|
||||
this.cart.products = prod
|
||||
this.updateCart()
|
||||
this.$emit('add-to-cart', item)
|
||||
// console.log('### addToCart', item)
|
||||
// console.log('### this.cart.products', this.cart.products)
|
||||
// let prod = this.cart.products
|
||||
// if (prod.has(item.id)) {
|
||||
// let qty = prod.get(item.id).quantity
|
||||
// if (qty == item.quantity) {
|
||||
// this.$q.notify({
|
||||
// type: 'warning',
|
||||
// message: `${item.name} only has ${item.quantity} units!`,
|
||||
// icon: 'production_quantity_limits'
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
// prod.set(item.id, {
|
||||
// ...prod.get(item.id),
|
||||
// quantity: qty + 1
|
||||
// })
|
||||
// } else {
|
||||
// prod.set(item.id, {
|
||||
// name: item.name,
|
||||
// quantity: 1,
|
||||
// price: item.price,
|
||||
// image: item?.images[0] || null
|
||||
// })
|
||||
// }
|
||||
// this.$q.notify({
|
||||
// type: 'positive',
|
||||
// message: `'${item.name}' added to cart`,
|
||||
// icon: 'thumb_up'
|
||||
// })
|
||||
// this.cart.products = prod
|
||||
// this.updateCart()
|
||||
// },
|
||||
// removeFromCart(item, del = false) {
|
||||
// let prod = this.cart.products
|
||||
// let qty = prod.get(item.id).quantity
|
||||
// if (qty == 1 || del) {
|
||||
// prod.delete(item.id)
|
||||
// } else {
|
||||
// prod.set(item.id, {
|
||||
// ...prod.get(item.id),
|
||||
// quantity: qty - 1
|
||||
// })
|
||||
// }
|
||||
// this.cart.products = prod
|
||||
// this.updateCart()
|
||||
},
|
||||
updateCart() {
|
||||
this.cart.total = 0
|
||||
|
|
|
|||
|
|
@ -1,3 +1,54 @@
|
|||
<div>
|
||||
xxxx
|
||||
<div v-for="cart in carts">
|
||||
|
||||
<q-card bordered class="q-mb-md">
|
||||
<q-item>
|
||||
<q-item-section avatar>
|
||||
<q-avatar>
|
||||
<img v-if="cart.merchant?.profile?.picture" :src="cart.merchant?.profile?.picture">
|
||||
<img v-else src="/nostrmarket/static/images/blank-avatar.webp">
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>
|
||||
<q-item-label>
|
||||
<strong>
|
||||
<span v-text="cart.products[0]?.stallName"></span>
|
||||
</strong>
|
||||
</q-item-label>
|
||||
<q-item-label caption>
|
||||
By <span v-text="cart.merchant?.profile?.name || cart.merchant?.publicKey"></span>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-section horizontal>
|
||||
<q-card-section>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator vertical />
|
||||
|
||||
<q-card-section class="col-10">
|
||||
<div v-for="product in cart.products">
|
||||
{{product.name}}
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card-section>
|
||||
<q-separator />
|
||||
|
||||
<q-card-actions align="right">
|
||||
<q-btn flat round icon="event" />
|
||||
<q-btn flat>
|
||||
7:30PM
|
||||
</q-btn>
|
||||
<q-btn flat color="primary">
|
||||
Proceed to Checkout
|
||||
</q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -128,6 +128,7 @@ const market = async () => {
|
|||
},
|
||||
async created() {
|
||||
this.merchants = this.$q.localStorage.getItem('nostrmarket.merchants') || []
|
||||
this.shoppingCarts = this.$q.localStorage.getItem('nostrmarket.shoppingCarts') || []
|
||||
|
||||
// Check for user stored
|
||||
this.account = this.$q.localStorage.getItem('diagonAlley.account') || null
|
||||
|
|
@ -460,7 +461,7 @@ const market = async () => {
|
|||
} else {
|
||||
this.activeStall = null
|
||||
this.activeProduct = null
|
||||
|
||||
|
||||
url.searchParams.delete('merchant_pubkey')
|
||||
url.searchParams.delete('stall_id')
|
||||
url.searchParams.delete('product_id')
|
||||
|
|
@ -542,7 +543,7 @@ const market = async () => {
|
|||
this.initNostr()
|
||||
},
|
||||
|
||||
setActivePage(page = 'market'){
|
||||
setActivePage(page = 'market') {
|
||||
this.activePage = page
|
||||
},
|
||||
|
||||
|
|
@ -563,7 +564,32 @@ const market = async () => {
|
|||
this.products = this.products.filter(p => p.pubkey !== publicKey)
|
||||
this.stalls = this.stalls.filter(p => p.pubkey !== publicKey)
|
||||
this.initNostr() // todo: improve
|
||||
},
|
||||
|
||||
addProductToCart(item) {
|
||||
console.log('### addProductToCart:', item)
|
||||
|
||||
let stallCart = this.shoppingCarts.find(s => s.id === item.stall_id)
|
||||
if (!stallCart) {
|
||||
stallCart = {
|
||||
id: item.stall_id,
|
||||
products: []
|
||||
}
|
||||
this.shoppingCarts.push(stallCart)
|
||||
}
|
||||
stallCart.merchant = this.merchants.find(m => m.publicKey === item.pubkey)
|
||||
|
||||
const product = stallCart.products.find(p => p.id === item.id)
|
||||
if (product) {
|
||||
product.orderedQuantity = item.orderedQuantity || (product.orderedQuantity + 1)
|
||||
} else {
|
||||
stallCart.products.push({ ...item, orderedQuantity: 1 })
|
||||
}
|
||||
|
||||
this.$q.localStorage.set('nostrmarket.shoppingCarts', this.shoppingCarts)
|
||||
console.log('### this.shoppingCarts', this.shoppingCarts)
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue