Vue3子组件调用父组件的方法

父组件

<TableBox
  ref="tableBoxRef"
  :tableDatas="tableData"
  :page="page"
  @delRow="delRow"
  :table_columns="table_columns">
</TableBox>
<script>
import TableBox from './components/tableBox.vue'      
export default {
    name: 'reimblist',
    components: {
        TableBox
    },
    setup() {
        const tableData: []
        const page: {
             currentPage: 1,
             pageSize: 10,
             totalPage: 0
        }
        const table_columns: [
	           {
	                title: '单据编号',
	                dataIndex: 'reimbursementNo',
	                key: 'reimbursementNo',
	                align: 'center',
	                slots: { customRender: 'reimbursementNo' },
	                width: 150,
	                show: true
	            },
	            {
	                title: '单据类型',
	                dataIndex: 'formName',
	                key: 'formName',
	                width: 130,
	                show: true
	            }
	        ]
	    const delRow = async (record) => {
            Modal.confirm({
                title: () => '是否确认删除?',
                icon: () => createVNode(ExclamationCircleOutlined),
                okText: () => '确定',
                okType: 'danger',
                cancelText: () => '取消',
                onOk() {
                    delReimbApi({ id: record.id }).then((res) => {
                        if (res.success) {
                            message.success(res.message)
                            queryTable()
                        } else {
                            message.error(res.message)
                        }
                    })
                },
                onCancel() {
                    console.log('Cancel')
                }
            })
        }
        return {
            page,
            table_columns,
            tableData,
            delRow
       }
    }   
}

子组件

<template>
	<CommonTable
      :columns="table_columns.filter((col,num)=> {if(col.show){return col}})"
      :dataSource="tableDatas"
      :scrollX="1300"
      :page="page">
       <template #reimbursementNo="{ record }"> 
           <a-button type="text" 
            danger 
            @click="delRow(record)" 
            v-if="record.state == 0">删除</a-button>
       </template>
   </CommonTable>
</template>
export default {
    components: {
        CommonTable
    },
    props: {
        tableDatas: {
            type: Array,
            default: () => []
        },
        page: {
            default: () => {},
            type: Object
        },
        table_columns: {
            type: Array,
            default: () => []
        }
    },
    setup(props, { emit }) {
        const delRow = (record) => {
            emit('delRow', record)
        }
        return {
            delRow
        }
    }
}
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值