效果图

1、基础表格
基础表格示例图

2、多选与单选配置,multiple默认多选
多选表格示例图

示例Code

// step1
const rowKey = (row: typeObject) => row.userCode

// step2
createColumns新增{ type: 'selection' }
createColumns新增{ type: 'selection',multiple: false } 加上multiple属性变单选

//step3
const selectRows = (row: typeObject) => {
    console.log('行选::',row); 
}

3、配置固定列,如固定多选列

createColumns新增{ type: 'selection',fixed: 'left' }

{ title: '用户编号', key: 'userCode',fixed: 'left' }

调用页面

<template>
   <CurrencyTable
        :tableColunm="columns"
        :tableDataList="tableDataList" />
</template>

<script setup lang="ts">
import { ref } from 'vue'
import CurrencyTable from '../components/CurrencyTable.vue';
import API from '../config/apiService';
import { QueryUserList } from '../config/requestPath';
import type { DataTableColumns } from 'naive-ui'

type typeObject = {
    userCode: String,
    userName: String,
    phone: String,
    email: String
}

const rowKey = (row: typeObject) => row.userCode
const createColumns = ({}: {}):DataTableColumns<typeObject> => {
    return [
        { type: 'selection' },
        { title: '用户编号', key: 'userCode' },
        { title: '用户名', key: 'userName' },
        { title: '手机号', key: 'phone' },
        { title: '邮箱', key: 'phone' }
    ]
}

const columns = createColumns({})
let tableDataList = ref([])


const selectRows = (row: typeObject) => {
    console.log('行选::',row); 
}

const queryPage = () => {
    API.get(QueryUserList, {}).then(res => {
        console.log('表格数据源====', res)
        tableDataList.value = res.data && res.data.length ? res.data : []
    })
}
queryPage();
</script>


封装表格属性说明

1 tableColunm:表头数据

2 tableDataList:表数据

3 bordered:边框表格

4 多选配置

step1
:rowKey="rowKey"
@update:checked-row-keys="handleCheck"

step2
入参defineProps 新增 rowKey?: any,

step3
选择事件暴露与调用
import type { DataTableRowKey } from 'naive-ui'
const emit = defineEmits([ 'checkedRowList'])
const handleCheck = (rowKeys: DataTableRowKey[]) => {
    emit('checkedRowList', rowKeys)
}

5、固定表头

增加表格最大高度达到固定表头的效果。设置:max-height="tableHeight"

//使用计算,使表格自适应
const screenHeight = document.documentElement.clientHeight || window.innerHeight
const tableHeight = screenHeight - 240

6 表格尺寸:size="small",【'small' | 'medium' | 'large'】默认medium。

表格组件

<template>
<n-data-table 
   size="small"
   :columns="tableColunm" 
   :data="tableDataList" 
   :bordered="true"
   :max-height="tableHeight"
   :rowKey="rowKey"
    @update:checked-row-keys="handleCheck"
 />
</template>

<script setup lang="ts">
defineProps<{
    tableColunm: Array<{}>,
    tableDataList: Array<{}>
}>()
</script>

posted on 2024-06-23 12:49  羽丫头不乖  阅读(2367)  评论(0)    收藏  举报