Files
aurora-admin/site/sources/expandabletable/vue3.txt
T
aurora-admin c65a69c34e
Deploy to GitHub Pages / deploy (push) Failing after 16s
Regression / regression (push) Failing after 15m2s
feat(P4): precompute移植+app.js sources双向回填+回归1003/1003+验收体积/文件/data.json
2026-09-12 14:18:41 +08:00

46 lines
1.3 KiB
Plaintext

<template>
<table class="aa-exptable">
<thead>
<tr><th style="width:40px"></th><th v-for="c in columns" :key="c.key">{{ c.title }}</th></tr>
</thead>
<tbody>
<template v-for="row in data" :key="row[idKey]">
<tr class="aa-row">
<td>
<button class="aa-exp-toggle" :class="{ 'is-open': openSet[row[idKey]] }" @click="toggle(row[idKey])">▶</button>
</td>
<td v-for="c in columns" :key="c.key">{{ row[c.key] }}</td>
</tr>
<tr v-if="openSet[row[idKey]]" class="aa-exp-row">
<td></td>
<td :colspan="columns.length">
<div class="aa-exp-panel">
<div>备注:{{ row.detail.note }}</div>
<div class="aa-exp-sub">
<div v-for="(it, i) in row.detail.items" :key="i">· {{ it }}</div>
</div>
</div>
</td>
</tr>
</template>
</tbody>
</table>
</template>
<script setup>
import { reactive } from 'vue';
const props = defineProps({
data: { type: Array, default: () => [] },
columns: { type: Array, default: () => [] },
idKey: { type: String, default: 'id' }
});
const openSet = reactive({});
function toggle(id) {
openSet[id] = !openSet[id];
}
</script>
<style src="./ExpandableTable.css"></style>