zero prices fixes
All checks were successful
/ Make image (push) Successful in 4m7s

This commit is contained in:
nquidox 2025-11-04 16:46:37 +03:00
parent 54d814f9b2
commit 504f215c5a
3 changed files with 35 additions and 11 deletions

View file

@ -17,10 +17,17 @@ const handleToggle = ({ id, merch_uuid, checked }) => {
} }
} }
const handleSelectAll = () => {
toDelete.value = zeroPrices.value.map(item => ({
id: item.id,
merch_uuid: item.merch_uuid
}))
}
const fetchZeroPrices = async () => { const fetchZeroPrices = async () => {
try { try {
const response = await getZeroPrices() const response = await getZeroPrices()
zeroPrices.value = response.data zeroPrices.value = Array.isArray(response.data) ? response.data : []
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }
@ -43,10 +50,18 @@ onMounted(() => {
</div> </div>
<div v-else> <div v-else>
<div class="sticky-search-container"> <div class="sticky-search-container">
<ZeroPricesToolbar :selected="toDelete" @deleted="handleDeleted" /> <ZeroPricesToolbar
:selected="toDelete"
@deleted="handleDeleted"
@selectAll="handleSelectAll"
/>
</div> </div>
<div v-for="item in zeroPrices" :key="item.created_at"> <div v-for="item in zeroPrices" :key="item.created_at">
<ZeroPriceCard :zero-price="item" @toggle="handleToggle" /> <ZeroPriceCard
:zero-price="item"
@toggle="handleToggle"
:checked="toDelete.some(t => t.id === item.id)"
/>
</div> </div>
</div> </div>
</template> </template>

View file

@ -1,21 +1,22 @@
<script setup> <script setup>
import { ref } from 'vue'
const props = defineProps({ const props = defineProps({
zeroPrice: { zeroPrice: {
type: Object, type: Object,
required: true, required: true,
}, },
checked: {
type: Boolean,
default: false,
},
}) })
const isChecked = ref(false)
const emit = defineEmits(['toggle']) const emit = defineEmits(['toggle'])
const handleCheckboxChange = () => {
isChecked.value = !isChecked.value const handleCheckboxChange = (newValue) => {
emit('toggle', { emit('toggle', {
id: props.zeroPrice.id, id: props.zeroPrice.id,
merch_uuid: props.zeroPrice.merch_uuid, merch_uuid: props.zeroPrice.merch_uuid,
checked: isChecked.value, checked: newValue,
}) })
} }
</script> </script>
@ -24,7 +25,7 @@ const handleCheckboxChange = () => {
<div class="zeroPriceCard mt-10"> <div class="zeroPriceCard mt-10">
<n-grid responsive="screen" item-responsive cols="4" :x-gap="16" :y-gap="16" class="shift"> <n-grid responsive="screen" item-responsive cols="4" :x-gap="16" :y-gap="16" class="shift">
<n-gi> <n-gi>
<n-checkbox :checked="isChecked" @update:checked="handleCheckboxChange"> <n-checkbox :checked="checked" @update:checked="handleCheckboxChange">
<strong>Delete</strong> <strong>Delete</strong>
</n-checkbox> </n-checkbox>
</n-gi> </n-gi>

View file

@ -10,7 +10,7 @@ const props = defineProps({
const messages = useMessage() const messages = useMessage()
const { deleteZeroPrices } = useZeroPrices() const { deleteZeroPrices } = useZeroPrices()
const emit = defineEmits(['deleted']) const emit = defineEmits(['deleted', 'selectAll'])
const handleDelete = async () => { const handleDelete = async () => {
try { try {
@ -22,6 +22,11 @@ const handleDelete = async () => {
messages.error("Error deleting selected prices") messages.error("Error deleting selected prices")
} }
} }
const handleSelectAll = async () => {
emit('selectAll')
}
</script> </script>
<template> <template>
@ -32,6 +37,9 @@ const handleDelete = async () => {
<div v-else class="toolbar-item"> <div v-else class="toolbar-item">
{{ props.selected.length }} items selected {{ props.selected.length }} items selected
</div> </div>
<div class="toolbar-item">
<span @click="handleSelectAll">Click here to select all</span>
</div>
<div class="toolbar-item"> <div class="toolbar-item">
<n-button <n-button