Vue3 setup 语法糖下的 Element-Plus 使用¶
1 i8n 国际化¶
Element Plus 组件 默认 使用英语,如果要使用中文,需要做以下处理。
main.js 中全局配置
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
app.use(ElementPlus, {
locale: zhCn,
})
2 Table 表格¶
2.1 插槽实现多级表头¶
<el-table border :data="waterData" :cell-style="cellStyle">
<el-table-column v-for="(item, index) in waterOptions" :key="index" :prop="item.prop" :label="item.label" />
<el-table-column v-for="(item, index) in wqParamOptions" :key="index" :prop="item.param_key" :label="item.param_name">
<template #default v-if="item.prop === 'cl'">
<el-table-column prop="cl" label="mg/L" />
</template>
<template #default v-else-if="item.prop === 'ph'">
<el-table-column prop="ph" label="--" />
</template>
<template #default v-else-if="item.prop === 'tem'">
<el-table-column prop="tem" label="℃" />
</template>
<template #default v-else-if="item.prop === 'opr'">
<el-table-column prop="opr" label="Ntu" />
</template>
<template #default v-else-if="item.prop === 'tur'">
<el-table-column prop="tur" label="us/cm" />
</template>
</el-table-column>
</el-table>
2.2 动态数据样式¶
参考文章:
script setup 配置
// 数据异常显示
const cellStyle = ({ row, column, rowIndex, columnIndex }) => {
if (
(column.label === "cl" && row.cl >= 4) ||
(column.label === "cl" && row.cl < 0)
) {
return { color: "#ff0000" };
} else if (
(column.label === "--" && row.ph >= 14) ||
(column.label === "--" && row.ph <= 6)
) {
return { color: "#ff0000" };
} else if (
(column.label === "℃" && row.tem >= 50) ||
(column.label === "℃" && row.tem < 0)
) {
return { color: "#ff0000" };
} else if (
(column.label === "Ntu" && row.opr >= 6) ||
(column.label === "Ntu" && row.opr < 0)
) {
return { color: "#ff0000" };
} else if (
(column.label === "us/cm" && row.tur >= 10) ||
(column.label === "us/cm" && row.tur < 0)
) {
return { color: "#ff0000" };
}
};
3 Pagination 分页器¶
官网:Pagination 分页 | Element Plus
参考文章:
由于 vue 的标签 el-pagination 当中的 layout 只能存在一个自定义 slot,所以当需要自定义多个 slot 时,就考虑用多个 el-pagination 拼接到一起。