Таски - в vuex, в отдельном массиве. Кроме id таска писать еще то, к чему он.
Например так:
[{id: 555, entityType: 'comment', entityId: 54, taskType: 'deleting', taskParamenters: {...}}, ...]
Структура с деревом вообще странная. А так - это вариант классического асинхронного RPC.
В компонент передать индекс через проп, при нажатии на кнопку эмитить этот индекс в событии. В родительском компоненте - ловить. как-то так: https://jsfiddle.net/y5981mwc/
Нужно сделать API, возвращающее метаданные (количество строк, например) и сами данные кусками. Далее изобразить либо страницы на основе этих данных, либо виртуальный скролл с получением куска данных для страницы или скролла через AJAX.
Для получения excel - либо отдельный эндпоинт, формирующий это все на сервере, либо сборка кусками на клиенте (возможно, клиент лопнет, если только не потоком писать в csv, а на сервере можно потоком записать xml и заархивировать его, получив xlsx)
в пхп прямо в текст сгенеренной страницы вставить тег script с js, который устанавливает глобальную переменную (например window.my_app_page_count), в js скрипте эту переменную использовать по назначению.
Сделать hidden поле, значение которого будет формироваться js'ом из флажков, с помощью vue это очень просто сделать. Получается, нужен компонент, который на вход принимает массив флажков, рендерит чекбоксы и hidden инпут.
зачем тут вообще then, если используется async/await?
если не цикл, то вт прям вот так работает:
await http.get(`/product/${id}/modification`, {
params: {query},
})
await http.get(`/product/${id}/modification`, {
params: {query},
})
await http.get(`/product/${id}/modification`, {
params: {query},
})