iview/examples/routers/table.vue
2017-04-05 12:31:49 +08:00

114 lines
5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<Table :context="self" :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>
</div>
</div>
</template>
<script>
export default {
data () {
return {
self: this,
tableData1: this.mockTableData1(),
tableColumns1: [
{
title: '名称',
key: 'name'
},
{
title: '状态',
key: 'status',
render (row) {
const color = row.status == 1 ? 'blue' : row.status == 2 ? 'green' : 'red';
const text = row.status == 1 ? '构建中' : row.status == 2 ? '构建完成' : '构建失败';
return `<tag type="dot" color="${color}">${text}</tag>`;
}
},
{
title: '画像内容',
key: 'portrayal',
render (row, column, index) {
return `<Poptip trigger="hover" title="${row.portrayal.length}个画像" placement="bottom">
<tag>${row.portrayal.length}</tag>
<div slot="content">
<ul><li v-for="item in tableData1[${index}].portrayal" style="text-align: center;padding: 4px">{{ item }}</li></ul>
</div>
</Poptip>`;
}
},
{
title: '选定人群数',
key: 'people',
render (row, column, index) {
return `<Poptip trigger="hover" title="${row.people.length}个客群" placement="bottom">
<tag>${row.people.length}</tag>
<div slot="content">
<ul><li v-for="item in tableData1[${index}].people" style="text-align: center;padding: 4px">{{ item.n }}{{ item.c }}人</li></ul>
</div>
</Poptip>`;
}
},
{
title: '取样时段',
key: 'time',
render (row) {
return `${row.time}`
}
},
{
title: '更新时间',
key: 'update',
render (row, column, index) {
return `{{ formatDate(tableData1[${index}].update) }}`;
}
}
]
}
},
methods: {
mockTableData1 () {
let data = [];
for (let i = 0; i < 10; i++) {
data.push({
name: '商圈' + Math.floor(Math.random () * 100 + 1),
status: Math.floor(Math.random () * 3 + 1),
portrayal: ['城市渗透', '人群迁移', '消费指数', '生活指数', '娱乐指数'],
people: [
{
n: '客群' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
},
{
n: '客群' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
},
{
n: '客群' + Math.floor(Math.random () * 100 + 1),
c: Math.floor(Math.random () * 1000000 + 100000)
}
],
time: Math.floor(Math.random () * 7 + 1),
update: new Date()
})
}
return data;
},
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;
},
changePage () {
// 这里直接更改了模拟的数据,真实使用场景应该从服务端获取数据
this.tableData1 = this.mockTableData1();
}
}
}
</script>