iview/examples/routers/table.vue

151 lines
6.3 KiB
Vue
Raw Normal View History

<template>
2018-01-19 18:01:21 +08:00
<div>
2018-06-25 13:03:08 +08:00
<Table :data="tableData1" :columns="tableColumns1" stripe></Table>
<div style="margin: 10px;overflow: hidden">
<div style="float: right;">
<Page :total="100" :current="1" @on-change="changePage"></Page>
</div>
2018-04-12 01:10:45 +08:00
</div>
2018-01-19 18:01:21 +08:00
</div>
</template>
<script>
export default {
2017-07-19 15:09:15 +08:00
data () {
return {
2018-06-25 13:03:08 +08:00
tableData1: this.mockTableData1(),
tableColumns1: [
2017-10-17 10:14:10 +02:00
{
2017-11-08 14:39:39 +08:00
title: 'Name',
2018-06-25 13:03:08 +08:00
key: 'name'
2018-03-20 19:28:39 +08:00
},
{
2018-06-25 13:03:08 +08:00
title: 'Status',
key: 'status',
render: (h, params) => {
const row = params.row;
const color = row.status === 1 ? 'blue' : row.status === 2 ? 'green' : 'red';
const text = row.status === 1 ? 'Working' : row.status === 2 ? 'Success' : 'Fail';
return h('Tag', {
props: {
type: 'dot',
color: color
}
}, text);
}
2018-03-20 19:28:39 +08:00
},
{
2018-06-25 13:03:08 +08:00
title: 'Portrayal',
key: 'portrayal',
2018-03-20 19:28:39 +08:00
render: (h, params) => {
2018-06-25 13:03:08 +08:00
return h('Poptip', {
props: {
trigger: 'hover',
title: params.row.portrayal.length + 'portrayals',
placement: 'bottom'
}
}, [
h('Tag', params.row.portrayal.length),
h('div', {
slot: 'content'
}, [
h('ul', this.tableData1[params.index].portrayal.map(item => {
return h('li', {
style: {
textAlign: 'center',
padding: '4px'
}
}, item)
}))
])
2018-03-20 19:28:39 +08:00
]);
}
},
{
2018-06-25 13:03:08 +08:00
title: 'People',
key: 'people',
render: (h, params) => {
return h('Poptip', {
props: {
trigger: 'hover',
title: params.row.people.length + 'customers',
placement: 'bottom'
}
}, [
h('Tag', params.row.people.length),
h('div', {
slot: 'content'
}, [
h('ul', this.tableData1[params.index].people.map(item => {
return h('li', {
style: {
textAlign: 'center',
padding: '4px'
}
}, item.n + '' + item.c + 'People')
}))
])
]);
}
},
{
2018-06-25 13:03:08 +08:00
title: 'Sampling Time',
key: 'time',
render: (h, params) => {
return h('div', 'Almost' + params.row.time + 'days');
}
},
{
2018-06-25 13:03:08 +08:00
title: 'Updated Time',
key: 'update',
render: (h, params) => {
return h('div', this.formatDate(this.tableData1[params.index].update));
}
}
]
}
},
methods: {
mockTableData1 () {
let data = [];
for (let i = 0; i < 10; i++) {
data.push({
name: 'Business' + Math.floor(Math.random () * 100 + 1),
status: Math.floor(Math.random () * 3 + 1),
portrayal: ['City', 'People', 'Cost', 'Life', 'Entertainment'],
people: [
{
2018-06-25 13:03:08 +08:00
n: 'People' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
},
{
2018-06-25 13:03:08 +08:00
n: 'People' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
},
{
2018-06-25 13:03:08 +08:00
n: 'People' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
}
],
2018-06-25 13:03:08 +08:00
time: Math.floor(Math.random () * 7 + 1),
update: new Date()
})
}
return data;
2018-04-12 01:10:45 +08:00
},
2018-06-25 13:03:08 +08:00
formatDate (date) {
const y = date.getFullYear();
let m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
2018-04-12 01:10:45 +08:00
},
2018-06-25 13:03:08 +08:00
changePage () {
// The simulated data is changed directly here, and the actual usage scenario should fetch the data from the server
this.tableData1 = this.mockTableData1();
2018-04-12 01:10:45 +08:00
}
}
2017-10-23 19:01:47 +08:00
}
2018-06-25 13:03:08 +08:00
</script>