44 lines
942 B
Vue
44 lines
942 B
Vue
<template>
|
|
<div class="aa-fixtable-wrap">
|
|
<table class="aa-fixtable">
|
|
<thead>
|
|
<tr>
|
|
<th
|
|
v-for="c in columns"
|
|
:key="c.key"
|
|
:class="fixCls(c)"
|
|
:style="{ minWidth: c.w + 'px' }"
|
|
>{{ c.title }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr v-for="(row, i) in data" :key="i">
|
|
<td
|
|
v-for="c in columns"
|
|
:key="c.key"
|
|
:class="fixCls(c)"
|
|
:style="{ minWidth: c.w + 'px' }"
|
|
>{{ row[c.key] }}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'AaFixedColumnTable',
|
|
props: {
|
|
data: { type: Array, default: () => [] },
|
|
columns: { type: Array, default: () => [] }
|
|
},
|
|
methods: {
|
|
fixCls(c) {
|
|
return c.fixed ? 'aa-fixed aa-fixed-' + c.fixed : '';
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style src="./FixedColumnTable.css"></style>
|