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,我现在每次点开展示都会往后台加载一次数据,想让它只在首次展示加载一次

word表格背景颜色怎么设置

请问怎么设置Excel单元格底色,要每一行用不同的颜色区分开来

怎么设置Excel单元格底色,要每一行用不同的颜色区分开来?

excel如何设置背景颜色

如何在同一电子表格中获取已发布的Google工作表的不同网址