buildadmin表格自定义switch开关

父组件通过自定义单元格渲染引入子组件,进行数据传递以及事件绑定

<script setup lang="ts">
    import baTableClass from '/@/utils/baTable'
    import { baTableApi } from '/@/api/common'
    import Table from '/@/components/table/index.vue'
    import Foo from './components/switch.vue'
    const tableRef = ref()
    const renderId = {
        render(context: TableRenderPublicInstance) {
            // 使用vue组件定义进行渲染(导入的组件)
            return h(Foo, {
                onClick: () => {
                    // 点击事件回调处理 比如可以在这里请求接口

                    // 回调完成刷新当前表格数据
                    // baTable.onTableAction('com-search')
                }
            }, {
                default: () => context.$attrs.renderRow.switch
            })
        },
    }
    const baTable = new baTableClass(new baTableApi('/admin/'), {
        pk: 'id',
        column: [{
            label: '状态',
            prop: 'status',
            align: 'center',
            render: 'customRender',
            customRender: markRaw(renderId),
            sortable: false
        }]
    }
    provide('baTable', baTable)
    onMounted(() => {
        baTable.table.ref = tableRef.value
        baTable.mount()
        baTable.getIndex()?.then(() => {
            baTable.initSort()
            baTable.dragSort()
        })
    })
</script>

子组件进行默认值绑定,状态改变

<template>
    <el-switch
        :model-value="props.renderRow.switch"
        class="ml-2"
        style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949;"
        inline-prompt
        active-text="已处理"
        inactive-text="待处理"
        :active-value="1"
        :inactive-value="0"
      />
</template>

<script setup lang="ts">
import { ElMessage } from 'element-plus'
// BuildAdmin将自动为此组件传递五个Props
interface Props {
    renderValue: any // 单元格值
    renderRow: TableRow // 当前行数据
    renderField: TableColumn // 当前列数据
}
const props = defineProps<Props>()

</script>

<style scoped lang="scss">
    ::v-deep .el-switch__core {
        width: 68px;
    }
</style>

最终实现效果: 点击更新状态并刷新当前表格数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值