6-3 电子书表格展示
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-3 电子书表格展示相关的知识,希望对你有一定的参考价值。
在ant design 上寻找表格实例:
代码如下:
<template>
<a-table :columns="columns" :data-source="data">
<template #name=" text ">
<a> text </a>
</template>
<template #customTitle>
<span>
<smile-outlined />
Name
</span>
</template>
<template #tags=" text: tags ">
<span>
<a-tag
v-for="tag in tags"
:key="tag"
:color="tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'"
>
tag.toUpperCase()
</a-tag>
</span>
</template>
<template #action=" record ">
<span>
<a>Invite 一 record.name </a>
<a-divider type="vertical" />
<a>Delete</a>
<a-divider type="vertical" />
<a class="ant-dropdown-link">
More actions
<down-outlined />
</a>
</span>
</template>
</a-table>
</template>
<script>
import SmileOutlined, DownOutlined from '@ant-design/icons-vue';
import defineComponent from 'vue';
const columns = [
dataIndex: 'name',
key: 'name',
slots:
title: 'customTitle',
customRender: 'name',
,
,
title: 'Age',
dataIndex: 'age',
key: 'age',
,
title: 'Address',
dataIndex: 'address',
key: 'address',
,
title: 'Tags',
key: 'tags',
dataIndex: 'tags',
slots:
customRender: 'tags',
,
,
title: 'Action',
key: 'action',
slots:
customRender: 'action',
,
,
];
const data = [
key: '1',
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
tags: ['nice', 'developer'],
,
key: '2',
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
tags: ['loser'],
,
key: '3',
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
tags: ['cool', 'teacher'],
,
];
export default defineComponent(
setup()
return
data,
columns,
;
,
components:
SmileOutlined,
DownOutlined,
,
);
</script>
其中:
每个渲染都会起名字,如#name
下面,
其中,dataIndex是属性,即表格的字段,一般与key同名即可。
slots:是渲染,这里是渲染customTitle,针对表头的渲染。
这里的tag,用customRender对于值的渲染。
下面看tags。
加了一个边框,加了一个底色
tags是一个数组。
效果如下:
下面来改布局:
admin-ebook.vue中修改为:
<template>
<a-layout>
<a-layout-content
:style=" background: '#fff', padding: '24px', margin: 0, minHeight: '280px' "
>
<a-table
:columns="columns"
:row-key="record => record.id"
:data-source="ebooks"
:pagination="pagination"
:loading="loading"
@change="handleTableChange"
>
<template #cover=" text: cover ">
<img v-if="cover" :src="cover" alt="avatar" />
</template>
<template v-slot:action=" text, record ">
<a-space size="small">
<a-button type="primary">
编辑
</a-button>
<a-button type="danger">
删除
</a-button>
</a-space>
</template>
</a-table>
</a-layout-content>
</a-layout>
</template>
<script lang="ts">
import defineComponent, onMounted, ref from 'vue';
import axios from 'axios';
export default defineComponent(
name: 'AdminEbook',
setup()
const ebooks = ref();
const pagination = ref(
current: 1,
pageSize: 2,
total: 0
);
const loading = ref(false);
const columns = [
title: '封面',
dataIndex: 'cover',
slots: customRender: 'cover'
,
title: '名称',
dataIndex: 'name'
,
title: '分类一',
key: 'category1Id',
dataIndex: 'category1Id'
,
title: '分类二',
dataIndex: 'category2Id'
,
title: '文档数',
dataIndex: 'docCount'
,
title: '阅读数',
dataIndex: 'viewCount'
,
title: '点赞数',
dataIndex: 'voteCount'
,
title: 'Action',
key: 'action',
slots: customRender: 'action'
];
/**
* 数据查询
**/
const handleQuery = (params: any) =>
loading.value = true;
axios.get("/ebook/list", params).then((response) =>
loading.value = false;
const data = response.data;
ebooks.value = data.content;
// 重置分页按钮
pagination.value.current = params.page;
);
;
/**
* 表格点击页码时触发
*/
const handleTableChange = (pagination: any) =>
console.log("看看自带的分页参数都有啥:" + pagination);
handleQuery(
page: pagination.current,
size: pagination.pageSize
);
;
onMounted(() =>
handleQuery();
);
return
ebooks,
pagination,
columns,
loading,
handleTableChange
);
</script>
<style scoped>
img
width: 50px;
height: 50px;
</style>
其中,
以上是关于6-3 电子书表格展示的主要内容,如果未能解决你的问题,请参考以下文章
数据表格是easyui-datagrid,我现在每次点开展示都会往后台加载一次数据,想让它只在首次展示加载一次
请问怎么设置Excel单元格底色,要每一行用不同的颜色区分开来