<template> 
 | 
  <a-spin :loading="loading" style="width: 100%"> 
 | 
    <a-card class="general-card" :header-style="{ paddingBottom: '14px' }"> 
 | 
      <template #title> 
 | 
        {{ $t('dataAnalysis.popularAuthor') }} 
 | 
      </template> 
 | 
      <template #extra> 
 | 
        <a-link>{{ $t('workplace.viewMore') }}</a-link> 
 | 
      </template> 
 | 
      <a-table 
 | 
        :data="tableData.list" 
 | 
        :pagination="false" 
 | 
        :bordered="false" 
 | 
        style="margin-bottom: 20px" 
 | 
        :scroll="{ x: '100%', y: '350px' }" 
 | 
      > 
 | 
        <template #columns> 
 | 
          <a-table-column 
 | 
            :title="$t('dataAnalysis.popularAuthor.column.ranking')" 
 | 
            data-index="ranking" 
 | 
          > 
 | 
          </a-table-column> 
 | 
          <a-table-column 
 | 
            :title="$t('dataAnalysis.popularAuthor.column.author')" 
 | 
            data-index="author" 
 | 
          > 
 | 
          </a-table-column> 
 | 
          <a-table-column 
 | 
            :title="$t('dataAnalysis.popularAuthor.column.content')" 
 | 
            data-index="contentCount" 
 | 
            :sortable="{ 
 | 
              sortDirections: ['ascend', 'descend'], 
 | 
            }" 
 | 
          > 
 | 
          </a-table-column> 
 | 
          <a-table-column 
 | 
            :title="$t('dataAnalysis.popularAuthor.column.click')" 
 | 
            data-index="clickCount" 
 | 
            :sortable="{ 
 | 
              sortDirections: ['ascend', 'descend'], 
 | 
            }" 
 | 
          > 
 | 
          </a-table-column> 
 | 
        </template> 
 | 
      </a-table> 
 | 
    </a-card> 
 | 
  </a-spin> 
 | 
</template> 
 | 
  
 | 
<script lang="ts" setup> 
 | 
  import { ref } from 'vue'; 
 | 
  import useLoading from '@/hooks/loading'; 
 | 
  import { queryPopularAuthor, PopularAuthorRes } from '@/api/visualization'; 
 | 
  
 | 
  const { loading, setLoading } = useLoading(); 
 | 
  const tableData = ref<PopularAuthorRes>({ list: [] }); 
 | 
  const fetchData = async () => { 
 | 
    try { 
 | 
      setLoading(true); 
 | 
      const { data } = await queryPopularAuthor(); 
 | 
      tableData.value = data; 
 | 
    } catch (err) { 
 | 
      // you can report use errorHandler or other 
 | 
    } finally { 
 | 
      setLoading(false); 
 | 
    } 
 | 
  }; 
 | 
  fetchData(); 
 | 
</script> 
 | 
  
 | 
<style scoped lang="less"> 
 | 
  .general-card { 
 | 
    max-height: 425px; 
 | 
  } 
 | 
</style> 
 |