Как создать вложенную структуру таблиц с помощью таблиц данных Veutify

#laravel #vue.js #datatables #vuetify.js

Вопрос:

Я довольно новичок Vue.js и пытаюсь создать отчет с использованием Laravel, Vuetify и таблиц данных. В прошлом мне удавалось создавать обычный (построчный) отчет с помощью этих инструментов, однако теперь мне нужно создать отчет с вложенными таблицами (что-то вроде показано ниже).:

введите описание изображения здесь

A Site содержит несколько Services . A Service содержит несколько Clients , а a Client содержит несколько Appointments . Мне действительно нужна возможность поддерживать расширенные функции компонента Vuetify datatables, который включает поиск, сортировку и фильтрацию, Разбиение на страницы и т.д.

До сих пор у меня есть следующий код (который работает неправильно из-за проблем с форматированием):

 ...
<v-card
    flat>
    <v-card-title>
        <v-text-field
            v-model="search"
            append-icon="mdi-magnify"
            label="Search"
            single-line
            hide-details>
        </v-text-field>
    </v-card-title>
    <v-data-table
        :loading="loading"
        loading-text="Loading... Please wait"
        :headers="headers"
        :items="reportItems"
        :search="search"
        :items-per-page="25"
        :footer-props="{
            'items-per-page-options':[25, 50, 100, -1]
        }">

        <template v-slot:item="{ item }">
            <tr>
                <td>{{ item.Site }}</td>
                <td>
                    <table>
                        <tr v-for="service in item.Services">
                            <td>{{ service.Name }}</td>
                            <td>
                                <table>
                                    <tr v-for="client in service.Clients">
                                        <td>{{ client.Name }}</td>
                                    </tr>
                                </table>
                            </td>
                            <td>
                                <table>
                                    <tr v-for="appointment in client.Appointments">
                                        <td>{{ appointment.Name }}</td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </template>
    </v-data-table>
</v-card>
...


...
export default {

    data: function() {
        return {
            headers: [
                { text: 'SITE', align: 'start' },
                { text: 'SERVICE' },
                { text: 'CLIENT' },
                { text: 'APPOINTMENT' },
                { text: 'START', align: 'center' },
                { text: 'END', align: 'center' },
            ],
            reportItems: [],
            loading: true
        }
    },
...