ant design vue 组件,常用设置笔记

422 阅读2分钟

简介

主要有,Table组件空值处理,title 居中,Table组件排序。日期组件处理。组件样式穿透等功能。

ant design Table组件优雅的给空内容添加 “--“ 值

在项目中使用到Ant DesignUI的table组件能所遇到的小问题,给表格空值设置"--"值。或根据值显示对应内容。

表格组件

<template>
  <a-table :columns="myColumns" :data-source="myData" bordered></a-table>
</template>
<script>
// 表格数据
const myColumns = [
  { title: '企业名称', dataIndex: 'investeeName', key: 'investeeName'},
  ...
];
const myData = ref(<any>[]);
</script>

CustomRender 实现

CustomRender是一些编程语言中的一个功能,允许开发人员自定义某些元素的渲染。这对于创建更动态和交互式的用户界面非常有用。通常情况下,CustomRender可用于修改按钮、窗体或表等元素的外观或行为。

const myColumns = [
  ...
  { title: '融资金额', dataIndex: 'investAmount', key: 'investAmount', customRender: ({text}) => {
        return text ? text:'--';
    }},
  ...
];

const myColumns2 = [{ title: '类型', dataIndex: 'type', customRender: (text, record) => {
        if (text === 0) {
          return '客户1'
        } else if (text === 1) {
          return '客户2'
        } else if (text === 2) {
          return '客户3'
        }
      }
    }
 ]

数据处理

数据处理,根据数据类型,给空值设置"--"值。

myData.forEach((item:any)=>{
    for (let key in item) {
      if (item.hasOwnProperty(key)) {
        if(!item[key]){
          item[key] = '--';
        }
      }
    }
})

css 处理

css 选择器,给表格空值设置"--"值。

:deep(.ant-table-cell):empty:after,:deep(.ant-table-cell) span:empty:after {
  content: '--';
}

ant design Table组件排序

表格组件排序,根据排序字段,对表格数据进行排序。前端联处理,点排发送条件到服务器排。

<template>
  <a-table :columns="equityColumns" :data-source="equityData" :pagination="false" @change="handleTableChange" :scroll="{ x: '100%' }" bordered>
      <template #bodyCell="{ column, text, record }">
          <template v-if="column.key === 'operation'">
              <a-button @click="operationClick(record)" style="border:1px solid #f7ba69;color:#f7ba69" danger>详情</a-button>
          </template>
      </template>
  </a-table>
</template>
<script lang="ts" setup>
// 请求条件
const formData = reactive<any>({
    ...
    sorts:[],
    total:0,
    pageNum: 1,
    pageSize: 10
})

// 表格数据 , defaultSortOrder: 'descend' ascend,
const equityColumns = [
  ...
  { title: '融资金额', dataIndex: 'investAmount', key: 'investAmount', width: 80, sorter: true },//排字段sorter: true
  { title: '融资时间', dataIndex: 'investTime', key: 'investTime', width: 80, sorter: true, defaultSortOrder: 'descend' },//排字段,默认升序defaultSortOrder: 'descend'
  { title: '详情', dataIndex: 'operation', key: 'operation', width: 100, align:'center' }//按钮详情
];
const equityData = ref(<any>[]);

// 点击排序处理
const handleTableChange = (pagination:any, filters:any, sorter:any) => {
      if (sorter.order) {
        let sortField = sorter.field;
        let sortOrder = sorter.order === 'ascend' ? 'asc' : 'desc';
        let mBool = false;
        formData.sorts.forEach((item:any)=>{
            if(item.key === sortField){
                mBool = true;
                item.method = sortOrder;
            }
        })
        if(!mBool){
            formData.sorts.push({key:sortField,method:sortOrder});
        }
      }else{
        formData.sorts = formData.sorts.filter((item:any) => {
            return item.key != sorter.field;
        })
      }

      //发送请求到服务器
};
</script>

ant design Table组件,title 居中

表格组件,title 居中。css处理,配置处理。

:deep(.ant-table-thead) th {
    font-weight: bold;
    text-align: center;
}
// 表格配置, align:'center' 表头内容居中
const analysesColumns = [
  { title: '时间', dataIndex: 'investYear', key: 'investYear', align:'center' },
  { title: '行业', dataIndex: 'industry', key: 'industry', align:'center'},
  ...
];

ant design 日期组件处理

<template>
  <a-range-picker v-model:value="investTimeExtValue" size="small" :placeholder="['开始日期', '结束日期']" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" @change="loanTimeChange"/>
</template>

<script>
// format="YYYY-MM-DD" 显示格式
// valueFormat="YYYY-MM-DD" 提交格式
// :placeholder="['开始日期', '结束日期']" 提示文字

const loanTimeChange = (value:any)=>{
    if(Array.isArray(value)){
        formData.loanTimeInput = value.join(' ~ ');
    }
}
</script>

ant design 组件样式穿透

/* 日期选择器文字居中 */
:deep(.ant-picker-input) input {
  text-align: center;
}
/* 日期选择器圆角 */
:deep(.ant-picker) {
  border-radius: 6px;
}
/* 数值input圆角 */
:deep(.ant-input-number) {
  border-radius: 6px;
}
/* 下拉框圆角 */
:deep(.ant-select:not(.ant-select-customize-input)) .ant-select-selector {
  border-radius: 6px;
}


/* 表格空值填充 -- */
:deep(.ant-table-cell):empty:after,:deep(.ant-table-cell) span:empty:after {
  content: '--';
}