mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2024-11-01 06:02:38 +08:00
添加 formatter 代码示例
This commit is contained in:
parent
355f829885
commit
baf5b6c065
98
src/modules/demo/views/crud/components/table/formatter.vue
Normal file
98
src/modules/demo/views/crud/components/table/formatter.vue
Normal file
@ -0,0 +1,98 @@
|
||||
<template>
|
||||
<div class="scope">
|
||||
<div class="h">
|
||||
<el-tag size="small" effect="dark">formatter</el-tag>
|
||||
<span>数据格式化</span>
|
||||
</div>
|
||||
|
||||
<div class="c">
|
||||
<el-button @click="open">预览</el-button>
|
||||
<demo-code :files="['table/formatter.vue']" />
|
||||
|
||||
<!-- 自定义表格组件 -->
|
||||
<cl-dialog v-model="visible" title="数据格式化" width="80%">
|
||||
<cl-crud ref="Crud">
|
||||
<cl-row>
|
||||
<cl-table ref="Table" />
|
||||
</cl-row>
|
||||
|
||||
<cl-row>
|
||||
<cl-flex1 />
|
||||
<cl-pagination />
|
||||
</cl-row>
|
||||
</cl-crud>
|
||||
</cl-dialog>
|
||||
</div>
|
||||
|
||||
<div class="f">
|
||||
<span class="date">2024-09-26</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx">
|
||||
import { useCrud, useTable } from "@cool-vue/crud";
|
||||
import { ref } from "vue";
|
||||
import { useDict } from "/$/dict";
|
||||
|
||||
const { dict } = useDict();
|
||||
|
||||
// cl-crud 配置
|
||||
const Crud = useCrud(
|
||||
{
|
||||
service: "test"
|
||||
},
|
||||
(app) => {
|
||||
app.refresh();
|
||||
}
|
||||
);
|
||||
|
||||
// cl-table 配置
|
||||
const Table = useTable({
|
||||
autoHeight: false,
|
||||
contextMenu: ["refresh"],
|
||||
|
||||
columns: [
|
||||
{
|
||||
label: "姓名",
|
||||
prop: "name",
|
||||
minWidth: 140
|
||||
},
|
||||
{
|
||||
label: "手机号",
|
||||
prop: "phone",
|
||||
minWidth: 140,
|
||||
formatter(row) {
|
||||
return "📱" + row.phone;
|
||||
}
|
||||
},
|
||||
{
|
||||
label: "用户信息",
|
||||
minWidth: 200,
|
||||
// tsx 方式渲染
|
||||
// 【很重要】使用 tsx 语法时,script 的 lang 一定要设置为 tsx
|
||||
formatter(row) {
|
||||
// row 为当前行数据
|
||||
return (
|
||||
<el-row>
|
||||
<cl-avatar size={30} />
|
||||
<el-text style={{ marginLeft: "10px" }}>{row.name}</el-text>
|
||||
</el-row>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
label: "创建时间",
|
||||
prop: "createTime",
|
||||
minWidth: 170,
|
||||
sortable: "desc"
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const visible = ref(false);
|
||||
|
||||
function open() {
|
||||
visible.value = true;
|
||||
}
|
||||
</script>
|
@ -116,7 +116,8 @@ const Table = useTable({
|
||||
]
|
||||
|
||||
// 动态返回按钮配置
|
||||
// buttons() {
|
||||
// 用于控制是否根据状态显示按钮
|
||||
// buttons({ scope }) {
|
||||
// return ['edit', 'info', 'delete']
|
||||
// }
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ import FormComponent from "./components/form/component/index.vue";
|
||||
import FormPlugin from "./components/form/plugin/index.vue";
|
||||
|
||||
import TableBase from "./components/table/base.vue";
|
||||
import TableFormatter from "./components/table/formatter.vue";
|
||||
import TableOp from "./components/table/op.vue";
|
||||
import TableSearch from "./components/table/search.vue";
|
||||
import TableSelection from "./components/table/selection.vue";
|
||||
@ -105,6 +106,7 @@ const list = [
|
||||
label: "基础",
|
||||
children: [
|
||||
TableBase,
|
||||
TableFormatter,
|
||||
TableOp,
|
||||
TableSearch,
|
||||
TableSelection,
|
||||
|
@ -104,13 +104,10 @@ import { CircleClose } from "@element-plus/icons-vue";
|
||||
type Item = Eps.UserInfoEntity;
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: [Array, Number] as PropType<Item[] | Item>,
|
||||
default: () => []
|
||||
},
|
||||
modelValue: null,
|
||||
isDisabled: Boolean,
|
||||
prop: String,
|
||||
scope: null,
|
||||
scope: Object as PropType<Item>,
|
||||
disabled: Boolean,
|
||||
|
||||
// 是否多选
|
||||
|
Loading…
Reference in New Issue
Block a user