diff --git a/app/resources/js/views/autopodbor/screens/FieldCompetitorScreen.vue b/app/resources/js/views/autopodbor/screens/FieldCompetitorScreen.vue index 81fee235..73f08f21 100644 --- a/app/resources/js/views/autopodbor/screens/FieldCompetitorScreen.vue +++ b/app/resources/js/views/autopodbor/screens/FieldCompetitorScreen.vue @@ -205,6 +205,24 @@ async function bulkMoveToWork() { } } +// ——— массовое удаление предложений (вкладка «Предложения») ——— +// Предложения ещё не в работе (проекта нет, лиды не заказаны), поэтому удаляем сразу, +// без grace-модалки. Удалённые попадают в «недавно удалённые» и восстановимы (restoreDeleted). +async function bulkDeleteProps() { + if (busy.value || nav.ctx.competitorId === null) return; + busy.value = true; + try { + for (const s of selProps.value) { + await store.removeSource(nav.ctx.competitorId, s.id); + } + selected.value = []; + await reload(); + flash('Предложения удалены'); + } finally { + busy.value = false; + } +} + // ——— массовые действия (работа) ——— const selWork = computed(() => inWork.value.filter((s) => selected.value.includes(s.id))); const selAllHaveProj = computed(() => selWork.value.length > 0 && selWork.value.every((s) => s.project)); @@ -691,7 +709,7 @@ onMounted(async () => { } }); -defineExpose({ ctab, selected, inWork, props: props, toast, create, switchTab, toggle, openEdit, openCollect, openAdd, openCreate, openBulkCreate, doCreate, toggleProject, bulkWork, bulkMoveToWork, moveToWork, sourceValue }); +defineExpose({ ctab, selected, inWork, props: props, toast, create, switchTab, toggle, openEdit, openCollect, openAdd, openCreate, openBulkCreate, doCreate, toggleProject, bulkWork, bulkMoveToWork, bulkDeleteProps, moveToWork, sourceValue });