mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2024-11-01 14:10:27 +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']
|
// 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 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,
|
||||||
|
@ -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,
|
||||||
|
|
||||||
// 是否多选
|
// 是否多选
|
||||||
|
Loading…
Reference in New Issue
Block a user