添加 formatter 代码示例

This commit is contained in:
神仙都没用 2024-09-26 16:07:19 +08:00
parent 355f829885
commit baf5b6c065
4 changed files with 104 additions and 6 deletions

View 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>

View File

@ -116,7 +116,8 @@ const Table = useTable({
] ]
// //
// buttons() { //
// buttons({ scope }) {
// return ['edit', 'info', 'delete'] // return ['edit', 'info', 'delete']
// } // }
} }

View File

@ -50,6 +50,7 @@ import FormComponent from "./components/form/component/index.vue";
import FormPlugin from "./components/form/plugin/index.vue"; import FormPlugin from "./components/form/plugin/index.vue";
import TableBase from "./components/table/base.vue"; import TableBase from "./components/table/base.vue";
import TableFormatter from "./components/table/formatter.vue";
import TableOp from "./components/table/op.vue"; import TableOp from "./components/table/op.vue";
import TableSearch from "./components/table/search.vue"; import TableSearch from "./components/table/search.vue";
import TableSelection from "./components/table/selection.vue"; import TableSelection from "./components/table/selection.vue";
@ -105,6 +106,7 @@ const list = [
label: "基础", label: "基础",
children: [ children: [
TableBase, TableBase,
TableFormatter,
TableOp, TableOp,
TableSearch, TableSearch,
TableSelection, TableSelection,

View File

@ -104,13 +104,10 @@ import { CircleClose } from "@element-plus/icons-vue";
type Item = Eps.UserInfoEntity; type Item = Eps.UserInfoEntity;
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: null,
type: [Array, Number] as PropType<Item[] | Item>,
default: () => []
},
isDisabled: Boolean, isDisabled: Boolean,
prop: String, prop: String,
scope: null, scope: Object as PropType<Item>,
disabled: Boolean, disabled: Boolean,
// //